【正文】
GROUP BY Sno HAVING COUNT(*) 3; An Introduction to Database System GROUP BY子句(續(xù)) ?HAVING短語(yǔ)與 WHERE子句的區(qū)別: ? 作用對(duì)象不同 ? WHERE子句作用于基表或視圖 , 從中選擇滿足條件的元組 ? HAVING短語(yǔ)作用于組 , 從中選擇滿足條件的組 。20211501239。 1 39。 SELECT * FROM Student ORDER BY Sdept, Sage DESC; An Introduction to Database System 單表查詢 ?查詢僅涉及一個(gè)表: ?一 、 選擇表中的若干列 ?二 、 選擇表中的若干元組 ?三 、 ORDER BY子句 ?四 、 聚集函數(shù) ?五 、 GROUP BY子句 An Introduction to Database System 四、聚集函數(shù) ?聚集函數(shù): ? 計(jì)數(shù) COUNT( [DISTINCT|ALL] *) COUNT( [DISTINCT|ALL] 列名 ) ? 計(jì)算總和 SUM( [DISTINCT|ALL] 列名 ) ? 計(jì)算平均值 AVG( [DISTINCT|ALL] 列名 ) ? 最大最小值 MAX( [DISTINCT|ALL] 列名 ) MIN( [DISTINCT|ALL] 列名 ) An Introduction to Database System 聚集函數(shù) (續(xù)) [例 26] 查詢學(xué)生總?cè)藬?shù) 。; An Introduction to Database System 單表查詢 ?查詢僅涉及一個(gè)表: ?一 、 選擇表中的若干列 ?二 、 選擇表中的若干元組 ?三 、 ORDER BY子句 ?四 、 聚集函數(shù) ?五 、 GROUP BY子句 An Introduction to Database System 三、 ORDER BY子句 ? ORDER BY子句 ?可以按一個(gè)或多個(gè)屬性列排序 ?升序: ASC;降序: DESC;缺省值為升序 ?當(dāng)排序列含空值時(shí) ?ASC:排序列為空值的元組最后顯示 ?DESC:排序列為空值的元組最先顯示 An Introduction to Database System ORDER BY子句 (續(xù)) [例 24] 查詢選修了 3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī) , 查詢結(jié)果按分?jǐn)?shù)降序排列 。 OR Sdept= 39。 39。 SELECT Sname, Ssex FROM Student WHERE Sdept IN ( 39。 SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL; An Introduction to Database System (6) 多重條件查詢 ?邏輯運(yùn)算符: AND和 OR來聯(lián)結(jié)多個(gè)查詢條件 ? AND的優(yōu)先級(jí)高于 OR ? 可以用括號(hào)改變優(yōu)先級(jí) ?可用來實(shí)現(xiàn)多種其他謂詞 ? [NOT] IN ? [NOT] BETWEEN … AND … An Introduction to Database System 多重條件查詢(續(xù)) [例 23] 查詢計(jì)算機(jī)系年齡在 20歲以下的學(xué)生姓名。\ 39。 SELECT * FROM Course WHERE Cname LIKE 39。 SELECT Cno, Ccredit FROM Course WHERE Cname LIKE 39。 SELECT Sname, Sno FROM Student WHERE Sname LIKE ?__陽(yáng) %?; [例 18] 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname, Sno, Ssex FROM Student WHERE Sname LIKE ?劉 %?; [例 16] 查詢姓 歐陽(yáng) 且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT * FROM Student WHERE Sno LIKE ?20211512139。 39。 SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN ( 39。 39。 SELECT Sname, Ssex FROM Student WHERE Sdept IN ( 39。 SELECT Sno FROM SC; 等價(jià)于: SELECT ALL Sno FROM SC; 執(zhí)行上面的 SELECT語(yǔ)句后,結(jié)果為: Sno 202115121 202115121 202115121 202115122 202115122 An Introduction to Database System 消除取值重復(fù)的行(續(xù)) ?指定 DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行 SELECT DISTINCT Sno FROM SC; 執(zhí)行結(jié)果: Sno 202115121 202115122 An Introduction to Database System 查 詢 條 件 謂 詞 比 較 =, , , =, =, !=, , !, !; NOT+上述比較運(yùn)算符 確定范圍 BETWEEN AND, NOT BETWEEN AND 確定集合 IN, NOT IN 字符匹配 LIKE, NOT LIKE 空 值 IS NULL, IS NOT NULL 多重條件(邏輯運(yùn)算) AND, OR, NOT 表 常用的查詢條件 An Introduction to Database System (1) 比較大小 [例 7] 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。 2021Sage, ISLOWER(Sdept) FROM Student; 輸出結(jié)果: Sname 39。 SELECT Sno, Sname FROM Student; [例 2] 查詢?nèi)w學(xué)生的姓名 、 學(xué)號(hào) 、 所在系 ?!?9。 NOTICE: drop cascades to view IS_Student SELECT * FROM IS_Student。 ?基本表定義被刪除,數(shù)據(jù)被刪除 ?表上建立的索引、視圖、觸發(fā)器等一般也將被刪除 An Introduction to Database System 刪除基本表(續(xù)) [例 12]若表上建有視圖,選擇 RESTRICT時(shí)表不能刪除 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept=39。 ALTER TABLE Course ADD UNIQUE(Cname)。 An Introduction to Database System 四、修改基本表 ALTER TABLE 表名 [ ADD 新列名 數(shù)據(jù)類型 [ 完整性約束 ] ] [ DROP 完整性約束名 ] [ ALTER COLUMN列名 數(shù)據(jù)類型 ]; An Introduction to Database System 修改基本表(續(xù)) [例 8]向 Student表增加 “ 入學(xué)時(shí)間 ” 列 , 其數(shù)據(jù)類型為日期型 。 ? 方法二:在創(chuàng)建模式語(yǔ)句中同時(shí)創(chuàng)建表 ? 方法三:設(shè)置所屬的模式 An Introduction to Database System 模式與表(續(xù)) ?創(chuàng)建基本表(其他數(shù)據(jù)庫(kù)對(duì)象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù) 搜索路徑 來確定該對(duì)象所屬的模式 ? RDBMS會(huì)使用模式列表中 第一個(gè)存在的模式 作為數(shù)據(jù)庫(kù)對(duì)象的模式名 ?若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤 ?顯示當(dāng)前的搜索路徑: SHOW search_path。 先修課 Cpno是外碼 被參照表是 Course 被參照列是 Cno An Introduction to Database System 學(xué)生選課表 SC [例 7] 建立一個(gè)“學(xué)生選課”表 SC CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno, Cno), /* 主碼由兩個(gè)屬性