天天看點

資料庫必知詞彙:連接配接查詢

連接配接查詢是關系資料庫中最主要的查詢,主要包括内連接配接、外連接配接和交叉連接配接。

通過連接配接運算符可以實作多個表查詢。連接配接是關系資料庫模型的主要特點,也是它差別于其它類型資料庫管理系統的一個标志。 在關系資料庫管理系統中,表建立時各資料之間的關系不必确定,常把一個實體的所有資訊存放在一個表中。當檢索資料時,通過連接配接操作查詢出存放在多個表中的不同實體的資訊。連接配接操作給使用者帶來很大的靈活性,他們可以在任何時候增加新的資料類型。為不同實體建立新的表,然後通過連接配接進行查詢。

内連接配接的連接配接查詢結果集中僅包含滿足條件的行,内連接配接是SQL Server預設的連接配接方式,可以把INNER JOIN簡寫成JOIN,根據所使用的比較方式不同,内連接配接又分為等值連接配接、自然連接配接和不等連接配接三種;交叉連接配接的連接配接查詢結果集中包含兩個表中所有行的組合;外連接配接的連接配接查詢結果集中既包含那些滿足條件的行,還包含其中某個表的全部行,有3種形式的外連接配接:左外連接配接、右外連接配接、全外連接配接。對于三種連結的具體解釋如下:

内連接配接:内連接配接是一種最常用的連接配接類型。内連接配接查詢實際上是一種任意條件的查詢。使用内連接配接時,如果兩個表的相關字段滿足連接配接條件,就從這兩個表中提取資料并組合成新的記錄,也就是在内連接配接查詢中,隻有滿足條件的元組才能出現在結果關系中。内連接配接的文法如下:

Select * from table_1 as t1

inner join table_2 as t2

on t1.IDcol=t2.IDcol

交叉連接配接:即笛卡兒乘積,是指兩個關系中所有元組的任意組合。一般情況下,交叉查詢是沒有實際意義的。交叉連結的文法如下:

Select * from table_1

cross join table_2

外連接配接:内連接配接的查詢結果都是滿足連接配接條件的元組。但有時我們也希望輸出那些不滿足連接配接條件的元組資訊。比如,我們想知道每個學生的選課情況,包括已經選課的學生(這部分學生的學号在學生表中有,在選課表中也有,是滿足連接配接條件的),也包括沒有選課的學生(這部分學生的學号在學生表中有,但在選課表中沒有,不滿足連接配接條件),這時就需要使用外連接配接。外連接配接是隻限制一張表中的資料必須滿足連接配接條件,而另一張表中的資料可以不滿足連接配接條件的連接配接方式。

左外連接配接文法如下:

left outer join table_2 as t2

右外連接配接文法如下:

right outer join table_2 as t2

全外連接配接文法如下:

full outer join table_2 as t2

資料來源:

Different Types of SQL Joins

https://www.dotnettricks.com/learn/sqlserver/different-types-of-sql-joins

The Seven Types of SQL Joins

https://teamsql.io/blog/?p=923

SQL - Using Joins

https://www.tutorialspoint.com/sql/sql-using-joins.htm

SQL Joins Explained

http://www.sql-join.com/sql-join-types/