SQL Server連接查詢的實用教程
前沿小補充
例3.48 查詢平均成績大于等于80分的學(xué)生學(xué)號和平均成績
SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)>=80 GROUP BY Sno; SELECT * FROM SC;
此時發(fā)現(xiàn):
這是因為WHERE子句中是不能用聚集函數(shù)作為條件表達式的,正確的查詢語句應(yīng)該是:
SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=80; SELECT * FROM SC;
總結(jié):WHERE子句作用基本表或視圖,從中選擇滿足條件的元組。
HAVING短語作用于組,從中選擇滿足條件的組
等值與非等值連接查詢
連接符號是=的成為等值連接,其他的稱為非等值連接
一般形式:
[<表名1>.]<列名1><比較運算符>[<表名2>.]<列名2>
例3.49 查詢每個學(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 對例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;
修改為自然連接竟然是一點一點選擇可視的列來進行的,是我想不到的,以為會有專門的語句來進行呢
例3.51 查詢選修了2號課程且成績大于等于90分所有學(xué)生的學(xué)號和姓名
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語句可以同時完成選擇和連接查詢,這時WHERE子句由連接謂詞和選擇謂詞組成的復(fù)合條件
自身連接
一個表與其自身進行連接,稱為自身連接
例3.52 查詢每一門課的間接選修課
SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno=SECOND.Cno; SELECT * FROM Course;
在T-SQL 語句中,外連接是存在空值的,
外連接
例如某個學(xué)生沒有選課,仍把Student的懸浮元組保存在結(jié)果關(guān)系中,而在SC表的屬性上填上空值NULL,這是需要使用外連接
例3.53 對Student進行左外連接SC
SELECT * FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno); --SELECT * FROM Course; SELECT * FROM SC; SELECT * FROM Student;
多表連接
兩個表以上的操作稱為外連接
例3.54 查詢每個學(xué)生的學(xué)號、姓名、選修的課程及成績
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;
拓展:對SELECT進行*改寫
SELECT * FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
原算法只是對數(shù)據(jù)進行了一步篩選。
總結(jié):連接查詢這部分比較簡單,注意對屬性的表格定位名時,不要打錯了
總結(jié)
到此這篇關(guān)于SQL Server連接查詢的文章就介紹到這了,更多相關(guān)SQL Server連接查詢內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。