SQL Server連接查詢的實(shí)用教程
前沿小補(bǔ)充
例3.48 查詢平均成績(jī)大于等于80分的學(xué)生學(xué)號(hào)和平均成績(jī)
SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)>=80 GROUP BY Sno; SELECT * FROM SC;
此時(shí)發(fā)現(xiàn):
這是因?yàn)閃HERE子句中是不能用聚集函數(shù)作為條件表達(dá)式的,正確的查詢語(yǔ)句應(yīng)該是:
SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=80; SELECT * FROM SC;
總結(jié):WHERE子句作用基本表或視圖,從中選擇滿足條件的元組。
HAVING短語(yǔ)作用于組,從中選擇滿足條件的組
等值與非等值連接查詢
連接符號(hào)是=的成為等值連接,其他的稱為非等值連接
一般形式:
[<表名1>.]<列名1><比較運(yùn)算符>[<表名2>.]<列名2>
例3.49 查詢每個(gè)學(xué)生及其課程選秀修情況
SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno; SELECT * FROM SC; SELECT * FROM Student;
拓展:去掉WHERE Student.Sno=SC.Sno
后發(fā)現(xiàn)標(biāo)稱笛卡爾積形式
SELECT Student.*,SC.* FROM Student,SC SELECT * FROM SC; SELECT * FROM Student;
例3.50 對(duì)例3.49 用自然連接完成
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno=SC.Sno; SELECT * FROM SC; SELECT * FROM Student;
修改為自然連接竟然是一點(diǎn)一點(diǎn)選擇可視的列來(lái)進(jìn)行的,是我想不到的,以為會(huì)有專門的語(yǔ)句來(lái)進(jìn)行呢
例3.51 查詢選修了2號(hào)課程且成績(jī)大于等于90分所有學(xué)生的學(xué)號(hào)和姓名
SELECT Student.Sno,Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno='2' AND SC.Grade>=90; SELECT * FROM SC; SELECT * FROM Student;
一條SQL語(yǔ)句可以同時(shí)完成選擇和連接查詢,這時(shí)WHERE子句由連接謂詞和選擇謂詞組成的復(fù)合條件
自身連接
一個(gè)表與其自身進(jìn)行連接,稱為自身連接
例3.52 查詢每一門課的間接選修課
SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno=SECOND.Cno; SELECT * FROM Course;
在T-SQL 語(yǔ)句中,外連接是存在空值的,
外連接
例如某個(gè)學(xué)生沒(méi)有選課,仍把Student的懸浮元組保存在結(jié)果關(guān)系中,而在SC表的屬性上填上空值NULL,這是需要使用外連接
例3.53 對(duì)Student進(jìn)行左外連接SC
SELECT * FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno); --SELECT * FROM Course; SELECT * FROM SC; SELECT * FROM Student;
多表連接
兩個(gè)表以上的操作稱為外連接
例3.54 查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程及成績(jī)
SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno; SELECT * FROM Course; SELECT * FROM SC; SELECT * FROM Student;
拓展:對(duì)SELECT進(jìn)行*改寫
SELECT * FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
原算法只是對(duì)數(shù)據(jù)進(jìn)行了一步篩選。
總結(jié):連接查詢這部分比較簡(jiǎn)單,注意對(duì)屬性的表格定位名時(shí),不要打錯(cuò)了
總結(jié)
到此這篇關(guān)于SQL Server連接查詢的文章就介紹到這了,更多相關(guān)SQL Server連接查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分頁(yè) SQLServer存儲(chǔ)過(guò)程
分頁(yè) SQLServer存儲(chǔ)過(guò)程...2006-08-08SQL Server誤區(qū)30日談 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
乍一看,由于BACKUP WITH CHECKSUM會(huì)檢測(cè)所有分配出去的頁(yè)的校驗(yàn)和的值,這個(gè)誤區(qū)貌似是這么回事,但實(shí)際上并不是這么回事2013-01-01解析SQL Server中SQL日期轉(zhuǎn)換出錯(cuò)的原因
這篇文章主要介紹了SQL Server中日期轉(zhuǎn)換出錯(cuò)的原因,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01PLSQL連接oracle數(shù)據(jù)庫(kù)過(guò)程圖解
這篇文章主要介紹了PLSQL連接oracle數(shù)據(jù)庫(kù)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2008-02-02SQLServer數(shù)據(jù)庫(kù)誤操作恢復(fù)的方法
本文主要介紹了SQLServer數(shù)據(jù)庫(kù)誤操作恢復(fù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01高并發(fā)系統(tǒng)數(shù)據(jù)冪等的解決方案
本文主要介紹高并發(fā)系統(tǒng)數(shù)據(jù)冪等解決方案,這里整理了幾種方案供大家參考,有需要的小伙伴可以參考下2016-08-08MSSQL差異備份取系統(tǒng)權(quán)限的相關(guān)軟件下載
MSSQL差異備份取系統(tǒng)權(quán)限的相關(guān)軟件下載...2007-11-11