国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

SQlserver表連接

2024-07-21 02:50:18
字體:
來源:轉載
供稿:網友
SQlserver表連接

連接是兩元運算,可以對兩個或多個表進行查詢,結果通常是含有參加連接運算的兩個表或多個表的指定列的表。

在T-SQL中,連接查詢有兩類:

第一類:符合SQL標準的連接謂詞表示形式;

第二類:T-SQL擴展的使用關鍵字JOIN的表示形式。

下面對這兩種連接進行講解,下面是本次實驗要用到的表:

表一:學生表(學號,姓名,專業(yè))

表二:課程表(課程號,課程名,學分)

表三:成績表(學號,課程號,成績)

一、第一類:符合SQL標準的連接謂詞表示形式

1、可以在Select 語句的where子句中使用比較運算符給出連接條件對表進行連接。

如:將學生表和成績表進行連接

(1)select * from XSB,CJBwhere XSB.StuNum=CJB.StuNum;

(2)select XSB.*,CJB.CourseNum,CJB.Chengji from XSB,CJB where XSB.StuNum=CJB.StuNum

第一個連接為等值連接:即選取屬性列值相等的記錄,另外:連接謂詞中的比較符還可以是<、<=、=、>、>=、!=、<>(不等于)、!<、!>,當比較符為“=”時即為等值連接。

第二個連接為自然連接:即表一與表二做等值連接后,去掉重復屬性列的結果。

二、第二類:T-SQL擴展的使用關鍵字JOIN的表示形式。

用join連接方式連接要比第一類謂詞連接方式效率高。

用join關鍵字指定的連接有三種類型:內連接、外連接、交叉連接。

(1)內連接。Inner關鍵字指定連接類型,on關鍵字指定連接條件。內連接是系統默認的,故Inner可以省略。

例1:select * from XSB inner join CJB on XSB.StuNum=CJB.StuNum;

可以看出,所有選課的學生的信息被查詢出來了,與上面等值連接結果一樣。

例2:連接多個表,查詢選課學生的學號、姓名、課程名、成績

Select XSB.StuNum,Name,CourseName,Chengji

from XSB join CJB join KCB

on CJB.CourseNum = KCB.CourseNum

on XSB.StuNum=CJB.StuNum

(2)外連接。用關鍵字Outer指定其類型,外連接的結果不但包含滿足連接條件的行,還包括相應表中的所有行。外連接有三種:

I、左外連接(left outer join),結果表中除了包括滿足連接條件的行外,還包括左表中的所有行。常用。

II、右外連接(right outer join),結果表中除了包括滿足連接條件的行外,還包括右表中的所有行。不常用。

III、完全外連接(full outer join),結果表中除了包括滿足連接條件的行外,還包括兩個表中的所有行。不常用。

I.1 左外連接例子,查詢每個學生的選課數目,由于學號為“1104”的學生沒有選課,故不能用內連接

Select *from XSB left outer join CJBon XSB.StuNum = CJB.StuNum

在上面等值連接的例子中,學號為“1104”的學生由于沒有選課,結果集中也就沒有他,在左連接中,左表的所有記錄都會保留。

這種連接是有實際價值的,如要找出每個同學的選課門數,其中既包括選了課的同學,也包括沒有選課的同學。其查詢如下:

Select XSB.StuNum ,count(CJB.StuNum) as '選課門數'

from XSB left outer join CJB

on XSB.StuNum = CJB.StuNum

group by XSB.StuNum ,CJB.StuNum

注意到第四個同學的選課門數為零,在這里也顯示了,而如果用內連接,第四個同學就會被忽略掉。

右外連接及完全外連接道理與此相同,在此不再詳說。

(3)交叉連接。實際上是將兩個表做笛卡爾積運算。

如:select * from XSB cross join CJB.

小弟第一次寫博客,經驗也不足,有什么錯誤請大家多多包涵!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台南县| 吴堡县| 张家川| 安庆市| 常熟市| 南郑县| 同德县| 屏南县| 甘孜| 阜新| 镇安县| 汪清县| 兖州市| 宁海县| 大冶市| 巴南区| 桐梓县| 泾阳县| 延长县| 衡南县| 石台县| 康保县| 延川县| 宁武县| 通海县| 汝城县| 鹿泉市| 庆云县| 清原| 宁蒗| 芒康县| 阿荣旗| 缙云县| 北碚区| 微山县| 商城县| 新疆| 肃南| 南郑县| 甘德县| 金平|