基本連接
select子句列表中,每個目標列前都要加上基表名稱
from子句應包括所有使用的基表
where子句應定義一個同等連接
內鏈接
將多個表符合條件的數據挑選出來,內鏈接是一種等值連接
SELECT select list(查找的目標列)
FROM table1 INNER JOIN(表示內連接) table2 [ON join_ conditions(等值連接)]
[WHERE search_ conditions]
[ORRDER BY order_ expression]
實踐:
SELECT A.班級名,A.班級人數 ,B.姓名,B.聯繫方式
FROM 班級信息 A inner join 輔導員信息 B
ON A.輔導員=B.輔導員編號
Where B.性別='女'
inner可以取消
左外連接
Select A.班級名,A.班級人數,B.姓名,B.聯繫方式
From 輔導員信息 B. LEFT outer join 班級信息 A
ON A.輔導員=B.輔導員編號
Where A.班級人數 >20
Ourer 可以取消
右外連接
Select A.班級名,A.班級人數,B.姓名,B.聯繫方式
From 班級信息 A. RIGHT outer join 輔導員信息 B
ON A.輔導員=B.輔導員編號
Where A.班級人數 >20
全連接
Select A.班級名,A.班級人數,B.姓名,B.聯繫方式
From 輔導員信息 B FULL outer join 班級信息 A.
ON A.輔導員=B.輔導員編號
交叉連接
語法格式
Select select_list
FROM table1 CROSS JOIN (連接)table2
[WHERE search_conditions](結果進行篩選)
[ORDeR BY order_expression]
實踐
Select A.班級名稱,A.人數,B.姓名
From 班級信息 A cross join 輔導員信息 B
自連接
實踐
Select A.班級名,A.班級人數,B.班級名
From 班級信息 A,班級信息 B
Where a.班級人數= B.班級人數 and A.班級編號 < >B.班級編號 and A.班級名='查詢班級名'
聯合查詢
語法格式
Select select_list
From table_source
[where search_conditions]
{union[all](把兩個查詢結果聯合在一起)
Selectselect_list
From table_source
[where search_conditions]}
[order by order_expression]
all可以取消,不使用它將兩個查詢結果重複的行過濾掉
注意:
使用UNION查詢時,連接的兩個結果集必須在其目標列表中有相同數目的表達式,且數據內容儘量保持一致
實踐
Select A.成績編號, A.分數,B.姓名
FROM 成績信息 A.學生信息 B
Where A.學生編號=B.學號 and A.課程編號='2' and a.考試編號= '0808'
UNION
Select ‘’sum (分數)‘合計’
FROM 成績信息 A.學生信息 B
Where A.學生編號=B.學號 and A.課程編號='2' and a.考試編號= '0808'
ORDER BY 分數
使用子查詢
Select A.成績編號, A.分數,B.姓名
FROM 成績信息 A.學生信息 B
Where A.學生編號=B.學號 and A.課程編號='2' and a.考試編號= '0808'
And a.分數<(
Select avg (分數) FROM 成績信息 A.學生信息 B
Where A.學生編號=B.學號 and A.課程編號='2' and a.考試編號= '0808'
)
嵌套子查詢
Select A.成績編號, A.分數,B.姓名
FROM 成績信息 A.學生信息 B
Where A.學生編號=B.學號 and A.課程編號='2' and a.考試編號= '0808'
And a.學號<(
Select 學號 FROM 班級信息 A.學生信息 B
Where A.班級編號=B.學號 and B.所屬班級='2' and a.輔導員= (
Sellect 輔導員編號 from 輔導員信息 where 姓名=‘查詢姓名’
)
xml查詢
查詢格式
實踐
FOR XML子句
通過for xml 子句並制定模式可以將從數據庫系統的表中檢索出來得數據自動錶示成XML格式。
模式:
RAW模式,AUTO模式,EXPLICIT模式,PATH模式
RAW模式
Select A.班級名,A.班級人數,B.姓名,B.聯繫方式
From 班級信息 A.輔導員信息 B
Where A.輔導員=B.輔導員編號
For cml raw
AUTO模式
Select A.班級名,A.班級人數,B.姓名,B.聯繫方式
From 班級信息 A.輔導員信息 B
Where A.輔導員=B.輔導員編號
For cml auto
EXLSTS關鍵字查詢
Select a. * from 成績信息
Where exists(select * 考試安排 Bwhere b.考試編號=a.考試編號 and b.考試編號=‘0809’ )
判斷用戶登陸
Declare @username varchar (20)
Declare @pwd varchar(20)
Set @username = '01010202'
Set @pwd = '哈哈'
If exists (select * from 學生信息 where 學號=@yserbane and 姓名 =@owd)
Print ‘登陸成功'
Else
Print '登陸失敗'
交查詢INTERSECT
Select from a.成績信息 a,分數 b.姓名 from 成績信息 a,學生信息 b
Where a.學生編號 = b.學號 and a.課程編號 = 2 and a.考試編號=‘0801’
Intersect
Select a.成績編號, a.分數,A.姓名from
(
Select top 10 a. 成績信息 a,分數,b. from 成績信息 a,學生信息 b
Where a.學生編號 = b.學號 and a.考試編號=‘0801’order by a.分數 desc
)a
差查詢EXCEPT
Select from a.成績信息 a,分數 b.姓名 from 成績信息 a,學生信息 b
Where a.學生編號 = b.學號 and a.課程編號 = 2 and a.考試編號=‘0801’
EXCEPT
Select a.成績編號, a.分數,A.姓名from
(
Select top 10 a. 成績信息 a,分數,b. from 成績信息 a,學生信息 b
Where a.學生編號 = b.學號 and a.考試編號=‘0801’order by a.分數 desc
)a