首頁 > 軟體

SQL語句多表聯查的實現方法範例

2022-04-15 19:01:27

前言

最近面試實習生,發現一般來說,公司喜歡通過一些 SQL 語句來考察你對資料庫的使用熟不熟悉。所以我來總結一下我在面試中遇到多表聯查是怎麼聯查的。

三表聯查

首先來說多表聯查的一些知識點。

多表是指等於或者多餘三個表以上的資料庫查詢。多表聯查的型別有:

  • 內連線:join,inner join
  • 外連線:left join,left outer join,right join,right outer join,union
  • 交叉連線:cross join

解釋一下,外連線是指將兩個表進行合併,如果有不相同的列,那麼另外一個表將顯示 null。而內連線是指內連線查詢操作列出與連線條件匹配的資料行,它使用比較運運算元比較被連線列的列值。也就是說,運運算元可以是 =,也可以是 >、>=、<=、<、!>、!<和<>。

內連線

假如我們有兩個表

student.table
id name clsId
1  tjc    1
2  zhangsan    2
3 李四    3
4  劉五    4
5  黃六    5
class.table
clsId clsName
1        軟體1班
2        軟體2班
3        軟體3班
4        軟體4班

為了查詢上面兩個表,我們可以使用兩種查詢語句:

select * from student as s,class as as c where s.clsId = class.clsId
select * from student as s inner join class as c on s.clsId = class.clsId

兩種結果都是:

id name clsId clsId clsName

1  tjc    1        1        軟體1班

2  zhangsan    2        2        軟體2班

3 李四    3        3        軟體3班

4  劉五    4        4        軟體4班

外連線

外連線跟內連線不同之處,如果查詢的表中,如果通過關聯標示符中,一個表的資料而另外一個表沒有響應的資料項,那麼就顯示 null。

左連線

查詢 SQL 語句為:

select * from student as s left join class as c on s.clsId = c.clsId 

以左表為基準,如果右表沒有相應的資料項,那麼右表顯示為 null。

右連線

select * from student as s right join class as c on s.clsId = c.clsId 

以右表為基準,如果左表沒有相應的資料項,那麼左表顯示為 null。

全連線

select * from student as s full outer join class c on s.clsId = c.clsId 

完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。

交叉連線

交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。

select * from student as s cross join class as c order by s.id

附:多表聯合查詢訓練

範例:求既學過“001”號課又學過 “002”號課的所有學生的學號

Select S1.S# From SC S1, SC S2
Where S1.S# = S2.S# and S1.C#=‘001'
and S2.C#=‘002 ;

範例:求“001”號課成績比“002”號課成績高的所有學生的學號

Select S1.S# From SC S1, SC S2
Where S1.S# = S2.S# and S1.C#=‘001'
and S2.C#=‘002' and S1.Score > S2.Score;

總結

到此這篇關於SQL語句多表聯查實現的文章就介紹到這了,更多相關SQL語句多表聯查內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com