工作上用數據庫存儲文件還是很便利的,所以有時候發現一張表存儲數據感覺數據結構不是很清晰的時候,就需要新加第二張表或者多張表來進行聯合查詢對象信,一般是用鍵將彼此聯系起來,在表中,每個主鍵的值都是唯一的。這樣做的目的是在不重復每個表中的所有數據的情況下,把表間的數據交叉捆綁在一起,下面,寫一點簡單的例子
先說一下兩張表各自要展現的內容有哪些
第一張表是動物的種類信息,有貓、狗、鳥三種,表名:animal第二張表是一種動物的具體種類,貓有波斯貓(persian)、 伯曼貓(birman)、布偶貓 (ragdoll);狗有維茲拉犬(vizsla)、波利犬(puli)、蝴蝶犬(papillon);鳥有杜鵑鳥(cuckoo)、布谷鳥(eagle )、鷹(Egret),表名:classify。兩張表的聯系是有相同的anim_id ,請留意,”anim_id” 列把上面的兩個表聯系了起來表結構類型如下:
第一張表
animal_id | anim_name |
---|---|
1 | cat |
2 | dog |
3 | bird |
第二張表
classify_id | animal_id | detailed_name | age |
---|---|---|---|
1 | 1 | persian | 1 |
2 | 1 | birman | 2 |
3 | 1 | ragdoll | 5 |
4 | 2 | vizsla | 3 |
5 | 2 | puli | 8 |
6 | 2 | papillon | 1 |
7 | 3 | cuckoo | 4 |
8 | 3 | eagle | 2 |
9 | 3 | papillon | 3 |
下面查詢種類為貓的都有哪些詳細種類,這些貓的年齡有多大
SQL語句:
SELECT animal.anim_name, classify.detailed_name, classify.ageFROM animalINNER JOIN classifyON animal.animal_id = 1 AND classify.animal_id = 1ORDER BY classify.classify_id然后得到的表結果如下:
anim_name | detailed_name | age |
---|---|---|
cat | persian | 1 |
cat | birman | 2 |
cat | ragdoll | 5 |
這是查詢一種種類下的具體的動物詳細分類,大多時候用表聯合查詢是用來篩除一些臟數據信息的,現在我們將表2添加一些其他數據,比如山羊(goat)的信息,但是表1不變
修改后的第二張表
classify_id | animal_id | detailed_name | age |
---|---|---|---|
1 | 1 | persian | 1 |
2 | 1 | birman | 2 |
3 | 1 | ragdoll | 5 |
4 | 2 | vizsla | 3 |
5 | 2 | puli | 8 |
6 | 2 | papillon | 1 |
7 | 3 | cuckoo | 4 |
8 | 3 | eagle | 2 |
9 | 3 | papillon | 3 |
10 | 4 | goat | 1 |
現在根據表1的主鍵來查詢表2的信息,具體說來就是,都有什么動物種類,這些對應的動物種類下都有什么詳細分類
這個時候的sql語句
SELECT animal.anim_name, classify.detailed_name, classify.ageFROM animalINNER JOIN classifyON animal.animal_id = classify.animal_id ORDER BY classify.classify_id然后得到的表結果如下:
classify_id | animal_id | detailed_name | age |
---|---|---|---|
1 | 1 | persian | 1 |
2 | 1 | birman | 2 |
3 | 1 | ragdoll | 5 |
4 | 2 | vizsla | 3 |
5 | 2 | puli | 8 |
6 | 2 | papillon | 1 |
7 | 3 | cuckoo | 4 |
8 | 3 | eagle | 2 |
9 | 3 | papillon | 3 |
其實也就是我們之前未進行修改的表2的數據,如果兩個表共有的animal_id不進行指定的話,數據庫就會自己去匹配兩個表中相同的字段值,具體的情況要進行具體的分析,這里只給出了一種參考,具體的代碼操作,還需要自己去寫,也是比較簡單的
更多的多表查詢請移步:http://www.companysz.com.cn/sql/sql_join.asp
以上是我的理解,有什么不對的,歡迎指正,謝謝
新聞熱點
疑難解答