数据库多表链接查询的方式
大家好,在日常學習中分享一下所學的筆記,希望可以幫助到大家~
本篇將多表聯查分為三部分來介紹:
1. 通過Select子句進行查詢
2.? 通過內連接 inner join進行查詢
3. 通過外連接left join,left outer join,right join,right outer join,union進行查詢
?
一、通過SELECT子句進行多表查詢
語法:
select ?字段名 ?
from 表1,表2 …
where 表1.字段 = 表2.字段
and?其它查詢條件
例:以學生表student和班級表class為例
Select? ?student.sid,? student.sname,? student.classid, class.classid,? class.classname
from student,class
where student.classid = class.classid
注意:上面的代碼中,以兩張表相同的字段信息作為條件,進行兩個表聯查,但在實際開發中不建議這樣使用,最好用主外鍵約束來實現。
二、通過內連接 inner join進行查詢
語法:
select ?字段名 ?
from 表1
inner join 表2
on?表1.字段 = 表2.字段
例:以學生表student和班級表class為例
select? ?student.sid,? student.sname,? student.classid, class.classid,? class.classname
from student
inner join class
on student.classid = class.classid
這種場景下得到的是滿足某一條件的student,class內部的數據;正因為得到的是內部共有數據,所以連接方式稱為內連接。
三、通過外連接left join,left outer join,right join,right outer join,union進行查詢
1.left join
語法:
select ?字段名 ?
from 表1
left join 表2
on?表1.字段 = 表2.字段
例:以學生表student和班級表class為例
select? ?student.*? , class.*
from student
left join class
on student.classid = class.classid
結果如下,class表中不存在的記錄填充Null:
這種場景下得到的是student的所有數據,和滿足某一條件的class的數據;
2.left outer join(相當于left join? + ?[where 表2.字段 is null])
語法:
select 字段名 ?
from 表1
left join 表2
on?表1.字段 = 表2.字段
where?表2.字段 is?null
例:以學生表student和班級表class為例
select? ?student.sid,student.sname,class.classid,class.classname
from student
left join class
on student.classid = class.classid
where class.classid is null
這種場景下得到的是student中的所有數據減去"與class滿足同一條件 的數據",然后得到的student剩余數據?
3.right join
語法:
select ?字段名 ?
from 表1
right? join 表2
on?表1.字段 = 表2.字段
例:以學生表student和班級表class為例
select? student.*? , class.*
from student
right join class
on student.classid = class.classid
?這種場景下得到的是class的所有數據,和滿足某一條件的student的數據;
4.right outer join(相當于right join? + ?[where 表1.字段 is null])
語法:
select 字段名 ?
from 表1
right join 表2
on?表1.字段 = 表2.字段
where?表1.字段 is?null
例:以學生表student和班級表class為例
select? ?student.sid,student.sname,class.classid,class.classname
from student
right join class
on student.classid = class.classid
where student.classid is null
這種場景下得到的是class中的所有數據減去 "與student滿足同一條件 的數據“,然后得到的class剩余數據;
4.left join ?union right join
語法:
select ?字段名 ?
from 表1
left join 表2
on?表1.字段 = 表2.字段
union
select ?字段名 ?
from 表1
right? join 表2
???????on?表1.字段 = 表2.字段
例:以學生表student和班級表class為例
select? ?student.*? , class.*
from student
left join class
on student.classid = class.classid
union
select? student.*? , class.*
from student
right join class
on student.classid = class.classid
?這種場景下得到的是滿足某一條件的公共記錄,和獨有的記錄
以上分享希望能幫到你,有錯誤及時指正哦~?
總結
以上是生活随笔為你收集整理的数据库多表链接查询的方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio最好用的快捷键
- 下一篇: linux cmake编译源码,linu