在查詢多個表時,我們經常會用“連接查詢”。連接是關系數據庫模型的主要特點,也是它區別於其它類型數據庫管理系統的一個標志。
view plain copy
print?
- <span ><span >
- select * from T_student s,T_class c where s.classId = c.classId
- 等於
- select * from T_student s inner join T_class c on s.classId = c.classId</span></span>
結果是:
view plain copy
print?
- <span ><span >
- select * from T_student s inner join T_class c on s.classId <> c.classId</span></span>
結果是:
view plain copy
print?
- <span ><span >
- select s.*,c.className from T_student s inner join T_class c on s.classId = c.classId</span></span>
與等值連接對比:結果是少一個一列classId:
總結:內連接是只顯示滿足條件的!
view plain copy
print?
- <span ><span >
- select * from T_student s left join T_class c on s.classId = c.classId</span></span>
結果是:
總結:左連接顯示左表全部行,和右表與左表相同行。
view plain copy
print?
- <span ><span >
- select * from T_student s right join T_class c on s.classId = c.classId</span></span>
結果是:
總結:右連接恰與左連接相反,顯示右表全部行,和左表與右表相同行。
view plain copy
print?
- <span ><span >
- select * from T_student s full join T_class c on s.classId = c.classId</span></span>
結果是:
總結:返回左表和右表中的所有行。
view plain copy
print?
- <span ><span >
- select *from T_student cross join T_class
- ‘等於
- select *from T_student, T_class</span></span>
結果是:
總結:相當與笛卡爾積,左表和右表組合。
view plain copy
print?
- select * from T_student s cross join T_class c where s.classId = c.classId
- (注:cross join後加條件只能用where,不能用on)
查詢結果跟等值連接的查詢結果是一樣。