數據庫系統概論 數據查詢之連接查詢

大綱

  1. 等值或其他比較連接
  2. 自身連接
  3. 外連接
  4. 多表連接

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)

多表連接
兩個以上的表進行連接

查詢每個學生的學號,姓名,選修課程名及成績。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章