首页 / MYSQL / MySQL高级之自关联
MySQL高级之自关联
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL高级之自关联,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1181字,纯文字阅读大概需要2分钟。
内容图文
![MySQL高级之自关联](/upload/InfoBanner/zyjiaocheng/912/645e77f9e3ab437482d8d65457f35816.jpg)
设计省信息的表结构provinces
- id
- ptitle
设计市信息的表结构citys
- id
- ctitle
- proid
citys表的proid表示城市所属的省,对应着provinces表的id值
问题:能不能将两个表合成一张表呢?
思考:观察两张表发现,citys表比provinces表多一个列proid,其它列的类型都是一样的
意义:存储的都是地区信息,而且每种信息的数据量有限,没必要增加一个新表,或者将来还要存储区、乡镇信息,都增加新表的开销太大
答案:定义表areas,结构如下
- id
- atitle
- pid
因为省没有所属的省份,所以可以填写为null
城市所属的省份pid,填写省所对应的编号id
这就是自关联,表中的某一列,关联了这个表中的另外一列,但是它们的业务逻辑含义是不一样的,城市信息的pid引用的是省信息的id
在这个表中,结构不变,可以添加区县、乡镇街道、村社区等信息
创建areas表的语句如下:
create table areas( id int primary key, atitle varchar(20), pid int, foreign key(pid) references areas(id) );
从sql文件中导入数据
source areas.sql;
查询一共有多少个省
查询省的名称为“山西省”的所有城市
select city.* from areas as city inner join areas as province on city.pid=province.id where province.atitle='山西省';
查询市的名称为“广州市”的所有区县
select dis.*,dis2.* from areas as dis inner join areas as city on city.id=dis.pid left join areas as dis2 on dis.id=dis2.pid where city.atitle='广州市';
内容总结
以上是互联网集市为您收集整理的MySQL高级之自关联全部内容,希望文章能够帮你解决MySQL高级之自关联所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。