Sql Server系列 多表連線查詢

2021-09-06 19:54:17 字數 3355 閱讀 1694

連線查詢是關係資料中最主要的查詢,包括內連線、外連線等。通過連線運算子可以實現多個表查詢。內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。sql server中的內連線有:等值連線和不等連線。

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

示例:

select

[dbo

].[category

].* , [

dbo].[

product

].*from

[dbo

].[category

]inner

join

[dbo

].[product]on

[dbo

].[category

].[categoryid]=

[dbo

].[product

].[categoryid

]

select p.[

productcode

], p.[

productname

], c.[

categoryname

], d.[

quantity

], d.[

subtotal

]from

[dbo

].[product]p

inner

join

[dbo

].[category]c

on p.[

categoryid

]= c.[

categoryid

]inner

join

[dbo

].[orderdetails]d

on p.[

productid

]= d.[

productid

]

帶選擇條件的連線查詢是在連線查詢的過程中,通過新增過濾條件限制查詢的結果,使查詢的結果更加準確。

示例:

select

[dbo

].[category

].* , [

dbo].[

product

].*from

[dbo

].[category

]inner

join

[dbo

].[product]on

[dbo

].[category

].[categoryid]=

[dbo

].[product

].[categoryid

]and

[dbo

].[category

].[categoryid]=

1

如果在乙個連線查詢中,涉及到的兩個表都是同乙個表,這種查詢稱為自連線查詢。自連線是一種特殊的內連線,它是指相互連線的表在物理上為同一張表,但可以在邏輯上分為兩張表。

示例:

select

c1.categoryid, c1.categoryname

from

[dbo

].[category

] c1 inner

join

[dbo

].[category]c2

on c1.[

categoryid

]= c2.[

parentid

]

連線查詢將查詢多個表中相關聯的行,內連線時,返回查詢結果集合中的僅是符號查詢條件和連線條件的行,但有時需要包含沒有關聯的行中資料,即返回查詢結果集合中的不僅包含符合連線條件的行,還需要包括左表(左外連線或左連線)、右表(右外連線或右連線)或者兩個邊接表(全外連線)中的所有資料行。外連線分為左外連線和右外連線。

◊ left join(左連線):返回包括左表中的所有記錄和右表中連線字段相等的記錄。

◊ right join(右連線):返回包括右表中的所有記錄和左表中連線字段相等的記錄。

左連線的結果包括left outer join關鍵字左邊連線的表的所有行,而不僅僅是連線列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集中右表的所有選擇欄位均為null。

示例:

select

[dbo

].[category

].* , [

dbo].[

product

].*from

[dbo

].[category

]left

outer

join

[dbo

].[product]on

[dbo

].[category

].[categoryid]=

[dbo

].[product

].[categoryid

]

右連線將返回right outer join關鍵字右邊的表中的所有行。如果右表的某行在左表中沒有匹配行,左表將返回null。

示例:

select

[dbo

].[category

].* , [

dbo].[

product

].*from

[dbo

].[category

]right

outer

join

[dbo

].[product]on

[dbo

].[category

].[categoryid]=

[dbo

].[product

].[categoryid

]

全外連線又稱為完全外連線,該連線查詢方式返回兩個連線中所有的記錄資料。根據匹配條件,如果滿足匹配條件時,則返回資料;如果不滿足匹配條件時,同樣返回資料,但在相應的列中填入null,全外連線返回的結果集中包含了兩個完全表的所有資料。全外連線關鍵字full outer join。

示例:

select

[dbo

].[category

].* , [

dbo].[

product

].*from

[dbo

].[category

]full

outer

join

[dbo

].[product]on

[dbo

].[category

].[categoryid]=

[dbo

].[product

].[categoryid

]

SQLServer學習(多表連線查詢)(四)

1 雙表內部連線查詢 在where中指定內部連線的條件 這種寫法使用的很少 select workno,name,deptname,signimg from s a user,s a userimg where s a user.id s a userimg.userid order by dept...

SqlServer2012 多表連線查詢

1 基本連線 select a.姓名,a.性別,b.班級名,b.家庭住址 from 學生資訊 a,班級資訊 b where a.所屬班級 b.班級編號 把a表與b表連線起來 2 內連線 內連線語法格式 select select list from table1 inner join table2 ...

Sql Server多表查詢

同庫操作 select a.列名1,b.列名2,a.列名3 from 表名1 as a join 表名2 as b on a.關聯字段 b.關聯字段 不同庫操作 select a.列名1,b.列名2,a.列名3 from 庫名1.dbo.表名1 as a join 庫名2.dbo.表名2 as b ...