|
5.3.3 數(shù)據(jù)查詢中的限制和規(guī)定 |
|
|
1.SELECT子句的規(guī)定 (1)SELECT子句的形式 SELECT [ALL | DISTINCT] <列名或列表達(dá)式序列> | * (2)具體規(guī)定 DISTINCT選項(xiàng)保證重復(fù)的行將從結(jié)果中去除;而ALL選項(xiàng)是默認(rèn)的,將保證重復(fù)的行留在結(jié)果中,一般就不必寫出 星號(hào)(*)是對于在FROM子句中命名表的所有列的簡寫 列表達(dá)式是對于一個(gè)單列求聚合值的表達(dá)式 允許表達(dá)式中出現(xiàn)包含+、-、*和/以及列名、常數(shù)的算術(shù)表達(dá)式 (3)查詢選修了課程C1或C2的學(xué)號(hào) SELECT Sno FROM Sc WHERE Cno='C1' OR Cno='C2' SELECT DISTINCT Sno FROM Sc WHERE Cno='C1' OR Cno='C2' DISTINCT與ALL(默認(rèn))對應(yīng) (4)查詢?nèi)w學(xué)生的出生年份 SELECT Sname, 2007-Age FROM Student (5)以小寫字母顯示系名 SELECT Sn,LOWER(Dept) FROM Student |
2.列和基本表的改名操作 (1)說明 也可以要求輸出的列名與基本表中列名不一致,可在SELECT子句用“舊名 AS 新名” 形式改名 區(qū)分多次調(diào)用的基本表,標(biāo)上不同的名字 (2)查詢?nèi)w學(xué)生的出生年份,并使用別名 SELECT Sname as Name, 2007-Age Birthday FROM Student (3)查詢所有與“吳二”同齡的姓名 SELECT X.Sname,X.Age FROM Student X, Student Y WHERE X.Age=Y.Age AND Y.Sname='吳二' |
3.集合的并、交、差操作 (1)概述 標(biāo)準(zhǔn)SQL中有集合并(UNION)的操作 但沒有直接提供集合的差(MINUS或EXCEPT)和交(INTERSECT)操作 差和交可以用其他方法實(shí)現(xiàn) (2)查詢選修了C2或C3課程的學(xué)生(并) SELECT Sno,Cno FROM Sc WHERE Cno='C2' SELECT Sno,Cno FROM Sc WHERE Cno='C3' SELECT Sno,Cno FROM Sc WHERE Cno='C2' UNION SELECT Sno,Cno FROM Sc WHERE Cno='C3' SELECT Sno FROM Sc WHERE Cno='C2' UNION SELECT Sno FROM Sc WHERE Cno='C3' SELECT Sno,Cno FROM Sc WHERE Cno='C2' OR Cno='C3' (3)將Student和Student1兩表合并 SELECT Sno,Sn,Sex FROM Student UNION SELECT Sno,Sn,Sex FROM Student1 (4)查詢至少選修了C2和C3的學(xué)生(交) SELECT Sno FROM Sc WHERE Cno='C2' AND Sno IN (SELECT Sno FROM Sc WHERE Cno='C3') (5)查詢選修了C2但沒有選修C3的學(xué)生(差) SELECT Sno FROM Sc WHERE Cno='C2' AND Sno NOT IN (SELECT Sno FROM Sc WHERE Cno='C3') |
|
|