SQl之連線查詢

2021-09-06 16:47:58 字數 2695 閱讀 2203

連線查詢:將多張表連在一起進行查詢(會導致記錄數行和字段數列發生改變)

在關係型資料庫的設計的過程中,實體(表)與實體之間是存在很多聯絡的。

在關係型資料庫表的設計過程中,遵循著關係來設計:一對一,一對多,多對一,通常在實際的操作中,需要利用這層關係來保證資料的完整性。

連線查詢乙個有以下幾類:

交叉連線:

內連線;

外連線:左外連線(左連線)和右外連線(右連線)

自然連線:

交叉連線:將2張表的資料與另外一張表彼此交叉。

1、原理

(1)、從第一張表依次取出每一條記錄

(2)、取出每一條記錄之後,與另外一張表的全部記錄挨個匹配

(3)、沒有任何匹配條件,所有的結果都會進行保留

(4)、記錄數=第一張表的記錄數*第二張表的記錄數;字段數=第一張表字段數+第二張表字段數(笛卡爾積)

2、語法

基本語法:

表1 cross join 表2

3、應用

交叉連線產生的結果是笛卡爾積沒有實際應用。

本質:from 表1,表2

內連線:inner join從一張表中取出所有的記錄去另外一張表中匹配,利用匹配條件進行匹配,超過了則保留,失敗了則放棄

1、原理

(1)、從第一張表中取出一條記錄,然後去另外一張表中進行匹配。

(2)、利用匹配條件進行匹配:

匹配到:保留,繼續向下匹配;

匹配失敗:向下繼續,如果全表匹配失敗,結束

2、語法

基本語法:

表1 [inner] join 表2 on匹配條件;

(1)、如果內連線沒有條件(允許),那麼其實就是交叉連線(應該避免);

(3)、因為表的設計容易出現同名字段,尤其是id,所以為了避免出現重名錯誤,通常使用表名.欄位名,來確保唯一性

(4)、通常情況下,如果條件中使用到對應的表名,而該錶名較長,所有可以通過表別名來簡化。

(5)、內連線匹配的時候必須保證匹配到1才會儲存

(6)、內連線因為不強制必須使用匹配條件(on),因此可以在資料匹配完成之後,使用where條件來限制,效果與on一樣(但是建議使用on)

3、應用

內連線通常是在對資料有精確要求的時候使用,必須保證2張表中都能進行資料匹配。

外連線:outer join,按照某一張表作為主表(表中所有記錄在最後都會保留),根據條件去連線另外一張表,從而得到目標資料。

外連線分為左外連線(left join)和右外連線(right join)2種

左外連線(left join):左邊是主表

右外連線(left join):右邊是主表

1、原理

(1)、確定連線主表:左連線就是left join 左邊的表為主表;right join就是右邊為主表

(2)、拿主表的每一條記錄,去匹配另外一張表(從表)的每一條記錄

(3)、如果滿足匹配條件:保留;不滿足即不保留

(4)、如果主表記錄在從表中一條都沒有匹配成功,也要保留該記錄,但是從表對應的字段值都為null;

2、語法

基本語法:

左連線:主表left join 從表 on 連線條件

右連線:從表right join 主表 on 連線條件

左連線對應的主表資料在左邊,右連線在右邊

特點:(1)、外連線中主表記錄一定會儲存,不會出現記錄數少於主表(內連線有可能)

(2)、左連線和右連線其實可以用互相轉換,但是資料對於的位置的表順序會改變

3、應用

非常常用的獲取資料的方式。

在連線查詢中用來代替對應的on關鍵字的,進行條件匹配

1、原理

(1)、在連線查詢時,使用on的地方用來using代替。

(2)、使用using的前提的對應的2張表連線的字段是同名(類似自然連線匹配)(3)、如果使用using關鍵字,那麼對於的同名字段,最終在結果中只會保留乙個

2、語法

基本語法:

表1[innner,left,right] join表2 using(同名的字段列表//連線字段):

SQL之 連線查詢

連線查詢 顧名思義是同時涉及多個表的查詢 連線條件或連線謂詞 用來連線兩個表的條件 一般格式 表名1 列名1 比較運算子 表名2 列名2 表名1 列名1 between 表名2 列名2 and 表名2 列名3 連線字段 連線謂詞中的列名稱 連線條件中的各連線字段型別必須是可比的,但名字不必是相同的 ...

SQL語句基礎之連線查詢

介紹sql連線多表進行查詢,包括對inner join left join right join等的基礎使用 例項用以下兩張表進行演示 student表結構如下圖 teacher表結果如下圖 兩張表以id為主外來鍵關係進行關聯 作用 inner join 關鍵字在表中存在至少乙個匹配時返回行,使用i...

sql之limite查詢 join連線

limite示例1 列印grade排名前三的學生資訊 select from student order by grade limite 3 示例 列印grade倒數第三的學生資訊 select from student order by grade desc limite 2,1 其中limite...