SQL語法 之 表連線

2021-09-09 02:11:37 字數 3226 閱讀 5821

連線查詢中用來連線連個表的條件稱為連線條件或連線謂詞。其形式為:

[《表1>].《列名1> 《連線運算子》 [《表2>].《列2>
常見的連線運算子包括

1、比較運算子:=、>、=、<=、!=、between和and。

2、邏輯運算子:not、and、or。

3、使用between和and連線查詢形式為[《表1>].《列名1>[《表2>].《列名2>and[《表2>].《列名3>。

1、內連線:表中的行互相連線。結果集的行數等於每個表滿足條件的行數的乘積,參與連線的表示平等的。

2、外連線:參與連線的表有主次之分,主表的每一行資料去匹配從表的資料列,符合連線條件的資料將直接返回到結果集中,不符合連線條件的資料列將以null填充後返回到結果集中,其中外連線又分左外連線、右外連線和全連線3種。

[1] 等值連線查詢

select p.*,c.*

from country as c,person as

p where c.countryid = p.countryid

上面的等值連線中,兩張表都有countryid欄位,因此查出來的結果中就會有兩列countryid

[2] 在等值結果中消除資料就是自然連線

select p.name,c.countryname from country as c,person as p where c.countryid = p.countryid
[3] 自身連線

乙個資料表自己與自己建立連線稱為自身連線

1、內連線查詢的語法結構如下:

select

屬性或表示式列

from

表[inner

]join

表on連線條

[where 《限定條件》

]

inner 可以省略,只有 join 時就是省略了inner。內連線就是傳統的連線操作,這裡用 on 子句指定連線條件,用 where 子句指定連線後的其他限定條件:

select

p.name,c.countryname

from country as c inner

join person p on p.countryid = c.countryid

1、左外連線查詢的語法結構,outer 可省略:

select

屬性或表示式列

from

表left

[outer

]join

表on連線條

[where 《限定條件》

]

如下:

select

ta.roleid,ta.rolename,tb.functioncode

from sysrole ta left

join sysrolefunction tb on ta.roleid = tb.roleid

注意:[1] 第乙個表為主表,第二個表為從表;

[2] 在查詢結果集中包含第乙個表中滿足條件的所有記錄,如果第二個表存在on子句連線條件匹配的記錄,則第二個表返回相應值,否則第二個表返回null。也就是說,不管第二個表有沒有記錄匹配,第乙個表的所有欄位都會返回,這就是外連線與內連線的區別。

1、右外連線查詢的語法結構如下:

select

屬性或表示式列

from

表right

outer

join

表on連線條

[where 《限定條件》

]

2、例項:

select

tb.roleid,tb.functioncode,ta.rolename

from sysrole ta right

join sysrolefunction tb on ta.roleid = tb.roleid

注:[1] 第乙個表為從表,第二個表為主表;

[2] 在查詢結果集中包含第二個表中滿足條件的所有記錄,如果第乙個表存在on子句連線條件匹配的記錄,則第乙個表返回相應值,否則第乙個表返回null。也就是說,不管第乙個表有沒有記錄匹配,第二個表的所有欄位都會返回。

1、全外連線查詢的語法結構如下:

select

屬性或表示式列

from

表full

[outer

]join

表on連線條

[where 《限定條件》

]

注:[1] 兩個表同為主表;

[2] 在查詢結果集中包含兩個表中的所有記錄,如果存在on子句連線條件匹配的記錄,則另乙個表返回相應值,否則另乙個表返回null。也就是說,不管表記錄有沒有記錄匹配,兩個表的所有欄位都會返回。

交叉連線corss join,用於將第一張表的所有記錄與第二張表的所有記錄組合一次並返回。

執行如下sql語句:

select lastname + firstname 

from name2 cross

join name1

union是乙個特殊的運算子,用於將兩個或兩個以上的查詢產生乙個結果集。join將資訊水平連線(新增更多列),而union將資訊垂直連線(新增更多行)。當使用union處理查詢時,要注意以下幾個關鍵點。

(1)、所有union的查詢必須在select列表中有相同的列數。即如果第乙個查詢有3個列數,第二個查詢也要只有3個列數。

(2)、union返回結果的標題集僅從第乙個查詢中獲得,無論第二個查詢如何命名或取別名都不會更改。

(3)、查詢中對應的列的資料型別必須隱式一致。注意不要求完全一致,只需要隱式一致。

(4)、與其他非union不同,union的預設返回選項為distinct,而不是all。union all語句與union的不同點僅僅在於遇到相同的記錄,會全部保留。

Sql語法之join表連線說明

sql語法之join表連線說明 左連線 右連線 內連線我們可以看成是在全連線的基礎上過濾條件,這樣比較容易理解 語法 select from a join b 查詢結果 a表資料條數 b表資料條數 查詢總條數 語法 select from a inner join b on a.id b.id 簡化...

SQL學習之SQL語法

sql語句 最重要也是最常用的的 sql 命令 菜鳥教程 mysql oracle sqlite access ms sql server等 其中又分為兩大陣營 非關係型資料庫 key value的形式,沒有表結構 由來 資料庫管理軟體的由來 資料想要永久儲存,都是儲存在檔案中的,毋庸置疑,乙個檔案...

mysql表連線sql表 MYSQL表連線查詢

表連線查詢 一 交叉連線 笛卡爾積 查詢teacher和course表中所有的資料 select from teacher,course select name,courseid,course.id,cname from teacher,course where teacher.courseid c...