sql里面有兩個連接一個是union,另一個就是join
他們兩個的區別:
union 連接的是行 是一行一行的連? 而 join 連接的是列(字段)??? (他們倆的區別暫時就就知道這點)
join連接的使用的前提:
1.必須要有至少一個表(一個表可以用自連接)
2.必須要有相關聯的列(字段),主鍵外鍵啥的。
join 分為 內連接(inner join)、外連接(left outer join 和 right outer join)、交叉連接(cross join)和自連接。
首先, 內連接 inner join? 這個用的比較多
作用就是 當要查詢的多個列在不同的表中時,為了進行跨表查詢而使用的
用法:
select SName,SAge,CName from Student? inner join Class on Class.classid=Student.sclassid;
這個查詢里面SName和 SAge是Student表里的,CName是Class表里的? 這里面是根據Class里的classid(主鍵)和Student表里的sclassid關聯的
如果要是有等多個表,嫌總是寫表名麻煩可以給各個表設個名,如下
select SName,SAge,CName from Student as S1? inner join Class as C1 on C1.classid=S1.sclassid;
然后,外連接 left outer join 和 right outer join? 這個用的也比較多 主要是用在找一個表在另一個表中沒有的數據
left outer join 就是左表記錄都顯示出來對右表能找到數據的對應匹配數據,對右表找不到的匹配記錄為null
right outer join 同做很相似 就不多說了,你懂得。。
用法:
select SName,SAge,english from Student? left outer join Score on Score.studentid=Student.sid where sid? not in studentid
這個查詢就是查詢沒有考試的學生。。
交叉連接 Cross join
這個吧,,應該用的不多 我也不會用呃 他得到數據就連接的兩個表數據的積
自連接
這個用的也不多,所以直接寫下用法就不介紹了
用法:
select * from Student inner join (select SName,SAge,SID from Student where SAge>10) as TS1 onStudent.Sid=TS1.sid