連線查詢是關係資料中最主要的查詢,包括內連線、外連線等。通過連線運算子可以實現多個表查詢。內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。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
如果在乙個連線查詢中,涉及到的兩個表都是同乙個表,這種查詢稱為自連線查詢。自連線是一種特殊的內連線,它是指相互連線的表在物理上為同一張表,但可以在邏輯上分為兩張表。
示例:
selectc1.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 ...