時間:2021-04-07來源:www.outletmksalestore.com作者:電腦系統城
例3.48 查詢平均成績大于等于80分的學生學號和平均成績
1 2 3 4 5 |
SELECT Sno, AVG (Grade) FROM SC WHERE AVG (Grade)>=80 GROUP BY Sno; SELECT * FROM SC; |
此時發現:
這是因為WHERE子句中是不能用聚集函數作為條件表達式的,正確的查詢語句應該是:
1 2 3 4 5 |
SELECT Sno, AVG (Grade) FROM SC GROUP BY Sno HAVING AVG (Grade)>=80; SELECT * FROM SC; |
總結:WHERE子句作用基本表或視圖,從中選擇滿足條件的元組。
HAVING短語作用于組,從中選擇滿足條件的組
連接符號是=的成為等值連接,其他的稱為非等值連接
一般形式:
[<表名1>.]<列名1><比較運算符>[<表名2>.]<列名2>
例3.49 查詢每個學生及其課程選秀修情況
1 2 3 4 5 |
SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno; SELECT * FROM SC; SELECT * FROM Student; |
拓展:去掉WHERE Student.Sno=SC.Sno
后發現標稱笛卡爾積形式
1 2 3 4 5 |
SELECT Student.*,SC.* FROM Student,SC SELECT * FROM SC; SELECT * FROM Student; |
例3.50 對例3.49 用自然連接完成
1 2 3 4 5 |
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分所有學生的學號和姓名
1 2 3 4 5 6 7 |
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子句由連接謂詞和選擇謂詞組成的復合條件
一個表與其自身進行連接,稱為自身連接
例3.52 查詢每一門課的間接選修課
1 2 3 4 |
SELECT FIRST .Cno, SECOND .Cpno FROM Course FIRST ,Course SECOND WHERE FIRST .Cpno= SECOND .Cno; SELECT * FROM Course; |
在T-SQL 語句中,外連接是存在空值的,
例如某個學生沒有選課,仍把Student的懸浮元組保存在結果關系中,而在SC表的屬性上填上空值NULL,這是需要使用外連接
例3.53 對Student進行左外連接SC
1 2 3 4 5 |
SELECT * FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno); --SELECT * FROM Course; SELECT * FROM SC; SELECT * FROM Student; |
兩個表以上的操作稱為外連接
例3.54 查詢每個學生的學號、姓名、選修的課程及成績
1 2 3 4 5 6 |
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進行*改寫
1 2 3 |
SELECT * FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno; |
原算法只是對數據進行了一步篩選。
總結:連接查詢這部分比較簡單,注意對屬性的表格定位名時,不要打錯了
2022-03-09
sql語句中union的用法與踩坑記錄2022-03-05
MSSQL 附加數據庫提示“錯誤 823”數據恢復實操2022-03-05
sqlserver數據庫加密后無法使用MDF,LDF,log文件名稱被修改的數據恢復交叉聯接(cross join)的概念 2、交叉聯接的語法格式 3、交叉查詢的使用場景 3.1 交叉聯接可以查詢全部數據 3.2 交叉聯接優化查詢性能...
2021-04-22