大綱
- 等值或其他比較連接
- 自身連接
- 外連接
- 多表連接
SQL中“連接”是用“連接條件來表達的”。
連接條件一般格式:
表1.列名1<比較運算符>表2.列名2。
等值連接:連接運算符爲“=”
自然連接:把目標列中重複的屬性列去掉。
在SQL中沒有自然連接,即自動把冗餘部分刪掉,故需要在SELECT中需顯示的字段顯示出來。
查詢選修2課程並且分數大於80分的學生的學號和名字。
SELECT Student.Sno,Sname
From Student,SC
WHERE Student.Sno=SC.Sno AND
SC.Cno='2' AND SC.Grade>80
連接操作的執行過程:
1、嵌套循環法
2、排序合併法,排序之後使用指針移動
3、索引連接
自身連接
- 一個表與其自己進行連接,是一種特殊的連接。
- 需要給表起別名以示區別。
- 由於所有屬性名都是同名屬性,因此必須使用別名前綴
查詢每一個每門課的先修課名稱。
SELECT FIRST.Cname,SECOND.Cname
From Course First,Course Second
Where First.Cpno=Second.Cno
外連接
外連接一般格式:
Select …
From 表一 Right/Left outer JOIN 表二 ON
(連接條件)
外連接與普通連接的區別:
- 普通連接操作只輸出滿足連接條件的元組。
- 外連接以指定表爲連接主體,不滿足連接條件的元組也輸出
- 左外連接:以左邊爲主體,列出左邊關係,Left outer JOIN
- 右外連接:以右邊爲主體,列出右邊關係,Right outer JOIN
- 如想列出每個學生的基本情況和選課情況,若有些學生沒有選課,使用普通連接時這些學生的信息就被捨棄掉。而外連接則會保留這些學生的信息,在選課的屬性寫Null。
列出每個學生的基本情況和選課情況
Select Student.Sno,Sname,Ssex,Sage,Sdept,cno,grade
From Student Student Left outer JOIN SC ON
(Student.Sno=SC.Sno)
多表連接
兩個以上的表進行連接
查詢每個學生的學號,姓名,選修課程名及成績。