內連線 外連線 交叉連線總結

2021-06-29 15:57:55 字數 2840 閱讀 3314

本篇文章總結了一下sql中的五種連線-內連線、左外連線、右外連線、全連線、交叉連線

一、內連線 (full join/full outer join)

內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。內連線分三種:

1、等值連線:在連線條件中使用等於號(=)運算子比較被連線列的列值,其查詢結果中列出被連線表中的所有列,包括其中的重複列。

2、不等連線: 在連線條件使用除等於運算子以外的其它比較運算子比較被連線的列的列值。這些運算子包括》、>=、<=、、!《和<>。

3、自然連線:在連線條件中使用等於(=)運算子比較被連線列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連線表中的重複列。

二、外連線(full join/full outer join)

返回到查詢結果集合中的不僅包含符合連線條件的行,而且還包括左表(左外連線時)、右表(右外連線時)或兩個邊接表(全外連線)中的所有資料行。其中: 

1、左連線:左向外連線的結果集包括left  outer子句中指定的左表的所有行,而不僅僅是連線列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。

2、右連線:右向外連線是左向外連線的反向連線。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。

3、全連線:完整外部連線返回左表和右表中的所有行。當某行在另乙個表中沒有匹配行時,則另乙個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。   注:mysql不支援全連線,oracle、db2、mssql都支援全連線

三、交叉連線(full join/full outer join)

交叉連線不帶where 子句,它返回被連線的兩個表所有資料行的笛卡爾積,返回到結果集合中的資料行數等於第乙個表中符合查詢條件的資料行數乘以第二個表中符合查詢條件的資料行數。例,teacher表中有5位老師,而student表中有9個學生,則下列交叉連線檢索到的記錄數將等於5*9=45行。

下面舉例說明:

建立表:

create table teacher(

t_id int,

t_name varchar(30)

)character set 'utf8';

create table student(

s_id int,

s_name varchar(30)

)character set 'utf8';

t_id int,

s_id int

向表中插入相應資料

insert into teacher values(1,'張夢男');

insert into teacher values(2,'王欣');

insert into teacher values(3,'葉凡');

insert into teacher values(4,'許敏');

insert into teacher values(5,'張子良');

insert into student values(1,'張丹');

insert into student values(2,'李娜');

insert into student values(3,'林金');

insert into student values(4,'張欣然');

insert into student values(5,'謝鑫');

insert into student values(6,'董鑫');

insert into student values(7,'李強');

insert into student values(8,'張自在');

insert into student values(9,'石磊');

--內連線 inner join

--左連線(左外連線) left join(left outer join)

--右連線(右外連線) right join(right outer join)

--全連線(全外連線) full join(full outer join)

因為mysql不支援全連線full join,所以這裡要在mysql中實現全連線的效果使用的是"左連線+union+右連線"的方式。

下面就是在mysql實現全連線的效果sql

union因為要進行重複值掃瞄,所以效率低。如果合併沒有刻意要刪除重複行,那麼就使用union all,兩個要聯合的sql語句 字段個數必須一樣,而且字段型別要"相容"(一致)。

--交叉連線cross join

這種記錄便為兩個表的記錄的笛卡爾積。

內連線 外連線 交叉連線

一 連線查詢 根據兩個表或者多個表的列之間的關係,從這些表中查詢資料。目的 實現多個表查詢操作。二 連線型別 連線分為三種 內連線 外連線 交叉連線。1 內連線 使用比較運算子 包括 和 進行表間的比較操作,查詢與連線條件相匹配的資料。根據比較運算子不同,內連線分為等值連線和不等連線兩種。1.1 等...

SQL Server內連線 外連線 交叉連線

在資料庫查詢中,我們常常會用到的表連線查詢,而我自己在工作中也是時常用這些表連線查詢。而就在剛剛我卻還沒有搞清楚資料庫表連線到底有哪幾種,這幾種表連線查詢方式又有什麼區別,實屬慚愧!藉以此文以謹記。資料庫表連線查詢分三種 內連線 外連線 交叉連線 那下面我們就來分別說說這三種連線。內連線又分為 等值...

連線 交叉連線 內連線 外連線 自連線

本文非原創 可分為 交叉連線 內連線 外連線 自連線 1.使用交叉連線 它是非限制連線,就是將兩個 不加任何條件的組合在一起,即第乙個 的所有記錄分別和第二個 的每一條記錄相連線 組合成新的記錄,連線後結果集的行數是兩個 的行數的乘積,列為兩表列之和。語法 1 select 列名列表 from 表名...