前言
工作上用数据库存储文件还是很便利的,所以有时候发现一张表存储数据感觉数据结构不是很清晰的时候,就需要新加第二张表或者多张表来进行联合查询对象信,一般是用键将彼此联系起来,在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起,下面,写一点简单的例子
先说一下两张表各自要展现的内容有哪些
- 第一张表是动物的种类信息,有猫、狗、鸟三种,表名: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语句:
1
2
3
4
5SELECT animal.anim_name, classify.detailed_name, classify.age
FROM animal
INNER JOIN classify
ON animal.animal_id = 1 AND classify.animal_id = 1
ORDER BY classify.classify_id
然后得到的表结果如下:
anim_name | detailed_name | age |
---|---|---|
cat | persian | 1 |
cat | birman | 2 |
cat | ragdoll | 5 |
修改后的第二张表
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 |
这个时候的sql语句
1
2
3
4
5SELECT animal.anim_name, classify.detailed_name, classify.age
FROM animal
INNER JOIN classify
ON 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 |
更多的多表查询请移步:http://www.w3school.com.cn/sql/index.asp
最后
以上是我的理解,有什么不对的,欢迎留言指正,谢谢