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