在對資料庫查詢過程中,有些時候一張表中的資料不能滿足我們的需求,這時候就須要把多張表連線起來,如以下的兩張表所看到的,一張表涵蓋了學生的資訊,一張表表示學院的資訊,假設我想知道某個學生是哪個學院的話,那麼就須要把這兩張表連線起來。
stuid
deptid
stuname
age***
11090241032
001王小虎 22
男11090241032
002 張三
23 男
11090241033
003 王五
22 女
deptid
deptname
001管理學院
002教育學院
004文學院
是將指定的連線條件通過使用等號運算子(=)連線起來,並返回符合連線條件的記錄
語法格式:
select
表名1.欄位,表名2.欄位...
from
表名1,表名2 where表名1.欄位1=表名2.欄位
注意:在執行連線查詢時,假設要查詢的字段同一時候存在的兩張表中,而且假設這兩張表中的欄位名同樣的話,須要在select語句中加上該錶名作為字首
演示樣例
select stuname,deptname from t_student ,t_dept where t_student.deptid=t_dept.deptid
(通過系別號欄位來等值查詢符合條件的記錄)
(使用表別名的方式不僅能夠簡化連線查詢的操作,並且還能夠提高查詢的效能)
是指除使用等號外其它運算子的操作
演示樣例:
(查詢年齡大於15的學生的學院)
on子句建立相等連線
使用方法與where同樣
語法規則:
select
表名1.欄位,表名2.欄位
from
表名1 join表名2
on表名1.欄位=表名2.欄位
演示樣例:
select stuname,deptname from t_student a join t_dept b on a.deptid=b.deptid where a.age>15
注意:儘管on子句也能夠用andkeyword指定其它查詢條件,可是在使用on子句建立相等連線時,其它的限制條件都寫到where子句中
連線查詢中,還能夠與自己本身表進行查詢,這樣的方式叫做自連線
語法規則
select a.
字段,a.欄位
from
表名1 a,表名2 b
where a.
字段=b.欄位
注意:因為是對同一張表查詢,所以要為表指定不同的名稱
(如查詢年齡最大的學生的姓名和年齡)
不僅顯示滿足連線條件的記錄,並且還包含左側表中不滿足條件的記錄。
語法規則:
select
表名1.欄位,表名2.欄位
from
表名1 left join表名2
on表名1.欄位=表名2.欄位2
演示樣例:
(由於第一張表中查詢的字段在第二張表中未找到,所以置空值)
與左外連線相似
語法規則:
select
表名1.欄位,表名2.欄位
from
表名1 right join表名2
on表名1.欄位=表名2.欄位2
不僅顯示左側表中滿足連線條件的記錄,並且還會顯示右側表中不滿足查詢條件的記錄,能夠覺得是左外連線和右外連線的合集
語法規則:
select
表名1.欄位,表名2.欄位
from
表名1 full join表名2
on表名1.欄位=表名2.欄位2
結果例如以下:
使用keywordunion,並操作返回的結果是包括了查詢出來的全部不同的行
語法規則:
select
語法1union
select
語法2演示樣例:
select r.stuname,r.age,c.deptname
from t_student r left join t_dept c
on r.deptid=c.deptid
union
select r.stuname,r.age,c.deptname
from t_student r right join t_dept c
on r.deptid=c.deptid
(相當於全外連線查詢)
注意:在進行並操作時,兩個select語句張紅要查詢的列相應的屬性的個數和資料型別必須是同樣的。
使用keyword是intersect,交操作返回的結果集中包括了結果的公工行,交操作中不會出現反覆行
語法規則:
select
語法1intersect
select
語法2演示樣例:
結果例如以下:
select r.stuname,r.age,c.deptname
from t_student r left join t_dept c
on r.deptid=c.deptid
insertct
select r.stuname,r.age,c.deptname
from t_student r right join t_dept c
on r.deptid=c.deptid
執行差操作的keyword是except,顧名思義,就是查詢第乙個表中的資料排除第二個表中資料的結果
語法規則:
select
語法1except
select
語法2演示樣例:
select r.stuname,r.age,c.deptname
from t_student r full join t_dept c
on r.deptid=c.deptid
except
select r.stuname,r.age,c.deptname
from t_student r right join t_dept c
on r.deptid=c.deptid
結果例如以下:
在連線查詢中,常常使用到外連線和內連線,所以我們應該掌握這些連線的語法,以方便我們以後的使用。
mysql通過集合查詢 連線查詢與集合查詢
4.外連線查詢 在前面講述的連線操作中,返回的結果都是滿足連線條件的記錄。有些時候,開發人員或者使用者對於不滿足連線條件的部分記錄也感興趣,這個時候就需要使用外連線查詢。外連線查詢不僅可以返回滿足連線條件的記錄,對於乙個資料表中在另乙個資料表中不匹配的記錄也可以返回。外連線查詢主要包括三種 左外連線...
oracle高階查詢之連線查詢 集合運算
一 集合運算 minus補集,返回第乙個查詢結果的記錄減去第二個查詢結果的記錄後剩下的記錄 select deptno from dept minus select deptno from emp intersect交集,返回兩個查詢共有的記錄 select deptno from dept int...
oracle子查詢和集合查詢
子查詢 子查詢的作用 查詢條件未知的事物 查詢條件已知的問題 例如 查詢工資為800的員工資訊 查詢條件未知的問題 例如 查詢工資為20號部門平均工資的員工資訊 乙個條件未知的問題,可以分解為多個條件已知的問題 查詢工資比ward高的員工資訊 第一 查詢ward的工資?select sal from...