日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL Sever联接查询

發(fā)布時間:2025/5/22 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL Sever联接查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

聯(lián)接查詢:是有一個笛卡爾乘積運算再加一個選取運算構(gòu)成的查詢。
首先用笛卡爾乘積完成對兩個數(shù)據(jù)集合的乘運算,然后對生成的結(jié)果集合進行選取運算,確保只把分別來自兩個數(shù)據(jù)集合并且具有重疊部分的行合并在一起。
聯(lián)接的全部意義在于水平方向上合并兩個數(shù)據(jù)集合,并產(chǎn)生一盒新的結(jié)果集合。
聯(lián)接可分為以下幾類:內(nèi)部聯(lián)接、外部聯(lián)接、交叉聯(lián)接


1. 內(nèi)部聯(lián)接

內(nèi)部聯(lián)接是使用比較運算符比較要聯(lián)接列中的值得聯(lián)接。內(nèi)連接也叫聯(lián)接,最早被稱為普通聯(lián)接或自然聯(lián)接。
內(nèi)聯(lián)接是從結(jié)果中刪除其他被聯(lián)接表中沒有匹配行的所有行,所以內(nèi)聯(lián)接可能會丟失信息。

select * from SC join Student on Student.Sno = SC.Sno

2. 外部聯(lián)接

外部聯(lián)接則擴充了內(nèi)聯(lián)接的功能,會吧內(nèi)聯(lián)接中刪除表源中的一些保留下來,由于保留下來的行不同,可將外部聯(lián)接分為 左向外部聯(lián)接、右向外部聯(lián)接完整外部聯(lián)接。

2.1 左向外聯(lián)接

語法

select fieidlist from table1 left join table2 on table1.comlumnn=table2.column

參數(shù)說明:

參數(shù)說明
fieldlist搜索條件
table1 [inner] join table2將table1表與table2表進行外部聯(lián)接
table1.column=table2.columntable1表中與table2表中相同的列

eg. 把Studnet表和SC表左外連接,第二個表SC有不滿足聯(lián)接條件的行,則用NULL表示 。

select * from Student left join SC on Student.Sno=SC.Sno


解析:這里出現(xiàn)NULL說明SC表中沒有Sno等于4和6的

2.2 右向外聯(lián)接

右外向聯(lián)接使用 right jion 進行聯(lián)接,是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某一行在左表中沒有匹配行,則將為坐標(biāo)返回空值。

語法:

select fieldlist from table1 right join table2 on table1.column=table2.column

eg. 把SC表和Course表右外聯(lián)接,第一個表SC有不滿足聯(lián)接條件的行,則用NULL表示。

select * from SC right join Course on Course.Cno=SC.Cno

這里右外聯(lián)接的是Course表,所以Course表的數(shù)據(jù)完整

2.3 完整外聯(lián)接

完整外連接使用 full join 進行聯(lián)接,將返回左表和右表中的所有行。當(dāng)某一行在另一個表中沒有匹配時,另一個表的選擇列表將包含空值。如果表之間有匹配行,則將整個結(jié)果集行包含基表的數(shù)據(jù)值。

語法:

select fieldlistfrom table1 full join table2 on table1.column=table2.column

eg. 把SC表和Course表完整外部聯(lián)接,顯示兩個表中所有的行。

select * from SC full join Course on Course.Cno=SC.Cno

3. 交叉聯(lián)接

交叉聯(lián)接使用 cross join 進行聯(lián)接,沒有where子句的交叉聯(lián)接將產(chǎn)生聯(lián)接所涉及的表的笛卡爾積。第一個表的行數(shù)乘以第二個表的行數(shù)等于笛卡爾積結(jié)果集得大小。

交叉聯(lián)接中列和行的數(shù)量是這樣計算的:

  • 交叉聯(lián)接中的列=原表中列的數(shù)量總和(想加)。
  • 交叉聯(lián)接中的行=原表中行數(shù)的積(相乘)。

語法:

select fieldlist from table1 cross join table2

其中,忽略 on 方法來創(chuàng)建交叉聯(lián)接。

eg. 把 Student 表和 Course 表進行交叉聯(lián)接。

select * from Student cross join Course

4. 聯(lián)接多表

4.1 在where子句中聯(lián)接多表

在 from 子句中寫聯(lián)接多個表的名稱,然后將任意兩個表的聯(lián)接條件分別寫在 where 子句后。

語法:

select fieldlist from table1, table2, table3 ... where table1.column=table2.column and table2.column=table3.column and ...

eg. 把 Student 表、Course 表和 SC 表,這3個表在 where 子句中聯(lián)接。

select * from Student,Course,SC where Student.Sno=SC.Sno and SC.Cno=Course.Cno

4.2 在 from 子句中聯(lián)接多表

在 from 子句中聯(lián)接多個表示內(nèi)部聯(lián)接的擴展。
語法:

select fieldlist from table1 join table2 join table3... on table1.column=table2.column and tbale2.column=table3.column

eg. 把 Student表、Course表 和 SC表,這3個表在from子句中聯(lián)接。

select * from Student join SC join Course on SC.Sno=Course.Cno on Student.Sno=SC.Sno

5. 使用 case 函數(shù)進行查詢

case 函數(shù)用于計算條件列表并返回多個可能結(jié)果表達(dá)式之一。
case函數(shù)具有以下兩種格式:

  • 簡單case函數(shù)將某個表達(dá)式與一組簡單表達(dá)式進行比較以確定結(jié)果。
  • case搜索函數(shù)計算一組不二表達(dá)式以確定結(jié)果。

簡單 case 函數(shù)的語法如下:

case input_expressionwhen when_expression then result_expression[...n][else else_result_expression] end

case 搜索函數(shù)的語法如下:

casewhen Boolean_expression then result_expression[...n][else else_result_expression] end

在 select 語句中,簡單 case 函數(shù)僅檢查是否相等,而不進行其他比較。本實例使用 case 函數(shù)更改產(chǎn)品系列類別的顯示,以使這些類別更容易理解。

select ProductNumber, Category = case productLinewhen 'R' then 'Rpad'when 'M' then 'Mountain'when 'T' then 'Touring'when 'S' then 'Other sale items'else 'Not for sale'endName from Production.Product order by ProductNumber

eg. 查詢SC表中的Sno和Cno,如果分?jǐn)?shù) >=90為優(yōu)秀,>=80為良好

select Sno,Cno,等級=case when Grade >=90 then '優(yōu)秀' when Grade >=80 then '良好' else '不及格' end from SC

使用 case 語句更新

使用 case 語句更新學(xué)生信息,使所有男生年齡減 1 ,所有女生年齡加 1 ,

update Student set Sage= case when Sex='男' then Sage-1 when Sex = '女' then Sage+1 end


官方地址:
https://www.920vip.net/article/87

總結(jié)

以上是生活随笔為你收集整理的SQL Sever联接查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。