假設要設計兩張表,一張省份表(provinces),一張城市表(citys)
- 省份表結構
- id
- ptitle
- 城市表結構
- id
- ctitle
- proid(表示城市所屬的省,對應著省份表的id值)
觀察兩張表可以發現,城市表比省份表多一個欄位proid,其它列的欄位都是一樣的,而且,存盤的都是地區資訊,而且每種資訊的資料量有限,沒必要增加一個新表,或者將來還要存盤區、鄉鎮資訊,都增加新表的開銷太大,
所以定義新表chain,結構:id, name,pid
說明:因為省沒有所屬的省份,所以可以填寫為null,城市所屬的省份pid,填寫省所對應的編號id
這就是自關聯,表中的某一列,關聯了這個表中的另外一列,但是它們的業務邏輯含義是不一樣的,城市資訊的pid參考的是省資訊的id
在這個表中,結構不變,可以添加區縣、鄉鎮街道、村社區等資訊
準備資料:
1.首先先下載好資料庫檔案
2.cd:當前路徑(檔案所在的)
3.進入mysql,執行:use 目標資料庫名
4.匯入檔案:source 資料庫檔案名
資料檔案:
鏈接:https://pan.baidu.com/s/1S5kMzw_nk1KpR75syOKIbg
提取碼:5418
練習:
-- 查詢全國有多少個省?
select * from china where pid is null;
-- 查詢山東省有多少個市?
select city.* from china as city
inner join china as province
on city.pid=province.id
where province.name="山東省";
-- 查詢濟南市下面的區縣
SELECT county.* FROM china AS county
INNER JOIN china AS city ON county.pid=city.id
WHERE city.name="濟南市";
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/297748.html
標籤:其他
