SQL查詢 內連線 外連線 自連線查詢

2022-01-11 11:18:45 字數 2360 閱讀 5700

先建立2個表:學生表和教師表

在每個表中找出符合條件的共有記錄。[

x inner join y on...

]第一種寫法:只用where

select t.teacher_name,s.student_name from teacher t,student s where t.id=

s.teacher_id

第二種寫法:使用

join..on

..select t.teacher_name,s.student_name from teacher t join student s on t.id=

s.teacher_id

第三種寫法:使用inner

join .. on

..select t.teacher_name,s.student_name from teacher t inner

join student s on t.id=s.teacher_id

(1)左連線:根據左表的記錄,在被連線的右表中找出符合條件的記錄與之匹配,如果找不到與左表匹配的,用null表示 [x left [outer] join y on...]

第一種寫法:left

join .. on

..select t.teacher_name,s.student_name from teacher t left

join student s on t.id=

s.teacher_id

第二種寫法:

(2)右連線:根據右表的記錄,在被連線的左表中找出符合條件的記錄與之匹配,如果找不到匹配的,用null填充 [x right [outer] join y on...]

第一種寫法:right

join .. on

..select t.teacher_name,s.student_name from teacher t right

join student s on t.id=

s.teacher_id

第二種寫法:

(3)全連線:返回符合條件的所有表的記錄,沒有與之匹配的,用null表示(結果是左連線和右連線的並集)

第一種寫法:(full

join .. on

..)select t.teacher_name, s.student_name from teacher t full

join student s on t.id =

s.teacher_id;

第二種寫法:(

full

outer

join .. on

)select t.teacher_name, s.student_name from teacher t full

outer

join student s on t.id = s.teacher_id;

注意:oracle資料庫支援full join,mysql是不支援full join的

如果直接查詢2張表,將得到乙個笛卡爾積,兩個表的乘積 

select * from teacher,student;

關於笛卡爾積的說明,請參考部落格:

SQL 左外連線,右外連線,全連線,內連線,自連線

左連線 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 select a.rid,a.picname,b.trpid,b.rid,b.picname,b.picurl from tc restaurants a left join tc restaurants pictures b on a.r...

SQL查詢語句,內連線,外連線

這幾天做軟體綜合設計的專案,我負責的是服務端,因為目前打算從前端轉型到後台,所以需要補足後台相關的知識。關於專案方面的東西就不介紹了,因為文章的主題是sql,直接給出資料表的設計圖。表之間的連線線表示外來鍵。以專案中的查詢為例,講述巢狀查詢語句以及表之間的連線。1 獲取某一問題的所有回答 回答者 回...

SQL 內連線,外連線

假設一堆男女在教堂,有夫婦有單身的,假設男為左表,女為右表 教父說 結了婚的人請出去,結了婚的人請手拉手,於是結了婚的男女站了起來,這就是inner 內連 教父說 男的並且和這些男的結婚的女的請出去,結了婚的人請手拉手,於是,結了婚的夫婦手拉手出去,單身的男的也出去了。這就是 left 左連 教父說...