mysql—自关联


省表,城市表,将省城市区放在一个表里实现数据存储和查询
pid 关联 自己的id:在同一张表里

省表结构provinces:id,ptitle

市表结构citys :id, ctitle, provid

citys表的proid表示城市所属的省,对应着provinces表的id值
观察两张表发现,citys表比provinces表多一个列proid,其它列的类型都是一样的
因为:存储的都是地区信息,而且每种信息的数据量有限,没必要增加一个新表,或者将来还要存储区、乡镇信息,都增加新表的开销太大
所以:定义表china,结构:id, name, pid
因为省没有所属的省份,所以可以填写为null
城市所属的省份pid,填写省所对应的编号id
这就是自关联:表中的某一列,关联了这个表中的另外一列,但是它们的业务逻辑含义是不一样的,城市信息的pid引用的是省信息的id

准备数据:

  1. 中国省市区sql表数据:https://www.cnblogs.com/wuweixiong/p/12742869.html

  2. 创建表china:
    create table china(
    id int primary key,
    name varchar(50),
    pid int,
    foreign key(pid) references china(id)
    );

  3. 如何导入sql表数据文件:https://www.cnblogs.com/wuweixiong/p/12742983.html

  4. 查询全国有多少个省?
    select * from china where pid is null;

  5. 查询云南有多少个市?
    select city.* from china as city
    inner join china as province on city.pid=province.id
    where province.name="云南省";

  6. 查询石家庄市下面的区县
    select county.* from china as county
    inner join china as city on county.pid=city.id
    where city.name=”石家庄市”;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM