數(shù)據(jù)庫(kù)原理與應(yīng)用[2]_第1頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用[2]_第2頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用[2]_第3頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用[2]_第4頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用[2]_第5頁(yè)
已閱讀5頁(yè),還剩70頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQLSQL數(shù)據(jù)庫(kù)原理與應(yīng)用213.1 SQL概述 SQL的特點(diǎn) 1. 綜合統(tǒng)一 2. 高度非過(guò)程化 3. 面向集合的操作方式 4. 以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方法 5. 語(yǔ)言簡(jiǎn)潔,易學(xué)易用數(shù)據(jù)庫(kù)原理與應(yīng)用225. 語(yǔ)言簡(jiǎn)捷,易學(xué)易用表表 3.1 SQL語(yǔ)語(yǔ)言言的的動(dòng)動(dòng)詞詞SQL 功功 能能動(dòng)動(dòng) 詞詞數(shù)數(shù) 據(jù)據(jù) 定定 義義CREATE, DROP, ALTER數(shù)數(shù) 據(jù)據(jù) 查查 詢?cè)僑ELECT數(shù)數(shù) 據(jù)據(jù) 操操 縱縱INSERT,UPDATEDELETE數(shù)數(shù) 據(jù)據(jù) 控控 制制GRANT,REVOKE數(shù)據(jù)庫(kù)原理與應(yīng)用233.2 數(shù) 據(jù) 定 義 表

2、表3.2 SQL的的數(shù)數(shù)據(jù)據(jù)定定義義語(yǔ)語(yǔ)句句操操 作作 方方 式式操操 作作 對(duì)對(duì)象象創(chuàng)創(chuàng) 建建刪刪 除除修修 改改表表CREATET ABLEDROPT ABLEALTERT ABLE視視 圖圖CREATEVIEWDROP VIEW索索 引引CREATEINDEXDROPINDEX數(shù)據(jù)庫(kù)原理與應(yīng)用243.2.1 定義語(yǔ)句格式CREATE TABLE ( , , , ) 給出要?jiǎng)?chuàng)建的基本表的名稱;給出要?jiǎng)?chuàng)建的基本表的名稱; 給出列名或字段名;給出列名或字段名; 數(shù)據(jù)庫(kù)原理與應(yīng)用25 為列指定數(shù)據(jù)為列指定數(shù)據(jù)類型及其數(shù)據(jù)類型及其數(shù)據(jù)寬度;寬度; 關(guān)系數(shù)據(jù)庫(kù)支關(guān)系數(shù)據(jù)庫(kù)支持非常豐富的持非常豐富的數(shù)

3、據(jù)類型,不數(shù)據(jù)類型,不同的數(shù)據(jù)庫(kù)管同的數(shù)據(jù)庫(kù)管理系統(tǒng)支持的理系統(tǒng)支持的數(shù)據(jù)類型基本數(shù)據(jù)類型基本是一樣的,右是一樣的,右表列出了常用表列出了常用的數(shù)據(jù)類型。的數(shù)據(jù)類型。 數(shù)據(jù)類型數(shù)據(jù)庫(kù)原理與應(yīng)用26 用于定義列或字段一級(jí)的完整性約束,一般包括:用于定義列或字段一級(jí)的完整性約束,一般包括: NOT NULL和和NULL約束約束 PRIMARY KEY約束約束 UNIQUE約束約束 FOREIGN KEY約束約束 DEFAULT定義定義 CHECK約束約束 列級(jí)完整性約束數(shù)據(jù)庫(kù)原理與應(yīng)用27 用于定義表一級(jí)的完整性約束,一般包括:用于定義表一級(jí)的完整性約束,一般包括: PRIMARY KEY約束(復(fù)

4、合屬性構(gòu)成的主關(guān)約束(復(fù)合屬性構(gòu)成的主關(guān)鍵字說(shuō)明)鍵字說(shuō)明) FOREIGN KEY約束(外部關(guān)鍵字及參照關(guān)約束(外部關(guān)鍵字及參照關(guān)系說(shuō)明)系說(shuō)明) CHECK約束(同時(shí)涉及到多個(gè)屬性的域完約束(同時(shí)涉及到多個(gè)屬性的域完整性約束)整性約束) 表級(jí)完整性約束數(shù)據(jù)庫(kù)原理與應(yīng)用28 不是SQL的標(biāo)準(zhǔn)選項(xiàng),一般用于與物理存儲(chǔ)有關(guān)的說(shuō)明,不同的數(shù)據(jù)庫(kù)管理系統(tǒng)定義的方式肯定不同,另外該項(xiàng)參數(shù)一般也不是必需的。 其他參數(shù)數(shù)據(jù)庫(kù)原理與應(yīng)用29例題 例1 建立一個(gè)“學(xué)生”表Student,它由學(xué)號(hào)Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成。其中學(xué)號(hào)不能為空,值是唯一的,并且

5、姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15); 數(shù)據(jù)庫(kù)原理與應(yīng)用210二、修改基本表ALTER TABLE ADD | DROP MODIFY DROP COLUMN ALTER COLUMN 數(shù)據(jù)庫(kù)原理與應(yīng)用211例題 例2 向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD Scome DATE; 不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列

6、一律為空值。 數(shù)據(jù)庫(kù)原理與應(yīng)用212例題 例3 將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。 ALTER TABLE Student MODIFY Sage SMALLINT; 修改原有的列定義可能會(huì)破壞已有數(shù)據(jù)。 數(shù)據(jù)庫(kù)原理與應(yīng)用213例題 例4 刪除關(guān)于學(xué)號(hào)必須取唯一值的約束。 ALTER TABLE Student DROP UNIQUE(Sno) ; SQL沒(méi)有提供刪除屬性列的語(yǔ)句,只能間接實(shí)現(xiàn),先將原表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中,然后刪除原表,并將新表命名為原表名。 數(shù)據(jù)庫(kù)原理與應(yīng)用214三、刪除基本表 DROP TABLE ; 基本表刪除 數(shù)據(jù)、表上的索引都刪除 表上的視圖往往仍然保

7、留,但無(wú)法引用刪除基本表時(shí),系統(tǒng)會(huì)自動(dòng)從數(shù)據(jù)字典中刪去有關(guān)該基本表及其索引的描述 ,因此建立在此表上的視圖雖然已保留,但已無(wú)法引用數(shù)據(jù)庫(kù)原理與應(yīng)用215例題 例5 刪除Student表 DROP TABLEStudent ;數(shù)據(jù)庫(kù)原理與應(yīng)用2163.2.2 建立與刪除索引 建立索引是加快查詢速度的有效手段 建立索引 DBA或表的屬主(即建立表的人)根據(jù)需要建立和刪除 有些DBMS自動(dòng)建立以下列上的索引 PRIMARY KEY UNIQUE 維護(hù)索引 DBMS自動(dòng)完成 使用索引 DBMS自動(dòng)選擇是否使用索引以及使用哪些索引數(shù)據(jù)庫(kù)原理與應(yīng)用217一、建立索引 語(yǔ)句格式CREATE UNIQUE C

8、LUSTER INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在該表的一列或多列上,各列名之間用逗號(hào)分隔 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄 CLUSTER表示要建立的索引是聚簇索引數(shù)據(jù)庫(kù)原理與應(yīng)用218建立索引 (續(xù)) 唯一值索引 對(duì)于已含重復(fù)值的屬性列不能建UNIQUE索引 對(duì)某個(gè)列建立UNIQUE索引后,插入新記錄時(shí)DBMS會(huì)自動(dòng)檢查新記錄在該列上是否取了重復(fù)值。這相當(dāng)于增加了一個(gè)UNIQUE約束數(shù)據(jù)庫(kù)原理與應(yīng)用219建立索引 (續(xù)) 聚簇索引 建立聚簇索引后,基表中數(shù)據(jù)也需

9、要按指建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項(xiàng)順序與表中記錄的物理聚簇索引的索引項(xiàng)順序與表中記錄的物理順序一致順序一致例:CREATE CLUSTER INDEX Stusname ON Student(Sname);在在Student表的表的Sname(姓名)列上建立一個(gè)聚簇索引,而(姓名)列上建立一個(gè)聚簇索引,而且且Student表中的記錄將按照表中的記錄將按照Sname值的升序存放值的升序存放 數(shù)據(jù)庫(kù)原理與應(yīng)用220建立索引 (續(xù)) 在一個(gè)基本表上最多只能建立一個(gè)聚簇索引 聚簇索引的用途:對(duì)于某些類型的查

10、詢,可以提高查詢效率 聚簇索引的適用范圍 很少對(duì)基表進(jìn)行增刪操作 很少對(duì)其中的變長(zhǎng)列進(jìn)行修改操作 數(shù)據(jù)庫(kù)原理與應(yīng)用221 聚簇索引是指索引項(xiàng)的順序與表中記錄的物理順序一致的索引組織。 例CREATE CLUSTER INDEX Stusname ON Student (Sname); 將會(huì)在Student 表的Sname列上建一個(gè)聚簇索引,而且記錄會(huì)按照Sname值的升序存放。 用戶可以在最常查詢的列上建立聚簇索引以提高查詢效率。但在一個(gè)基本表上只能建一個(gè),而且更新索引列數(shù)據(jù)會(huì)導(dǎo)致表中記錄的物理順序的變更,因此經(jīng)常更新的數(shù)據(jù)列不宜建立。數(shù)據(jù)庫(kù)原理與應(yīng)用222例題 例6 為學(xué)生-課程數(shù)據(jù)庫(kù)中的S

11、tudent,Course,SC三個(gè)表建立索引。其中Student表按學(xué)號(hào)升序建唯一索引,Course表按課程號(hào)升序建唯一索引,SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno)CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 數(shù)據(jù)庫(kù)原理與應(yīng)用223二、刪除索引 DROP INDEX ; 刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。例7 刪除Student表的Stusname索引。

12、DROP INDEX Stusname;數(shù)據(jù)庫(kù)原理與應(yīng)用2243.3.1 概述 語(yǔ)句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC;數(shù)據(jù)庫(kù)原理與應(yīng)用225示例數(shù)據(jù)庫(kù) 學(xué)生-課程數(shù)據(jù)庫(kù) 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:SC(Sno,Cno,Grade) 數(shù)據(jù)庫(kù)原理與應(yīng)用2263.3 查 詢 3.3.1 概述3.3.2 單表查詢3.3.3 連接查詢3.3.4 嵌套查詢3.3.5

13、集合查詢3.3.6 小結(jié) 數(shù)據(jù)庫(kù)原理與應(yīng)用2273.3.2 單表查詢 查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對(duì)查詢結(jié)果排序四、使用集函數(shù)五、對(duì)查詢結(jié)果分組 數(shù)據(jù)庫(kù)原理與應(yīng)用228數(shù)據(jù)庫(kù)原理與應(yīng)用229數(shù)據(jù)庫(kù)原理與應(yīng)用230從職工關(guān)系中檢索所有工資值SELECT 工資 FROM 職工結(jié)果是:結(jié)果是:12201210125012301250SELECT DISTINCT工資工資 FROM 職工職工結(jié)果是:結(jié)果是:1220121012501230數(shù)據(jù)庫(kù)原理與應(yīng)用231單表查詢 用戶在查詢時(shí)可根據(jù)應(yīng)用的需要改變列的顯示順序例2查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所

14、在系。 查詢?nèi)苛?將所有的列名在SELECT后面列出或者用*表示列名 例3 SELECT * FROM Student; 查詢經(jīng)過(guò)計(jì)算的值例4查詢?nèi)w學(xué)生姓名及其出生年份SELECT Sname,1996-Sage FROM Student;數(shù)據(jù)庫(kù)原理與應(yīng)用232單表查詢不僅可以是算術(shù)表達(dá)式,還可以是字符串常量、不僅可以是算術(shù)表達(dá)式,還可以是字符串常量、函數(shù)等。函數(shù)等。例例5查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名所有系名SELECT Sname,Year of Birth:,1996-Sage,ISLOWER(

15、Sdept) FROM Student;輸出結(jié)果:輸出結(jié)果:Sname Year of Birth: 1996-Sage ISLOWER(Sdept) - - - - 李勇李勇 Year of Birth: 1976 cs 劉晨劉晨 Year of Birth: 1977 is 王名王名 Year of Birth: 1978 ma 張立張立 Year of Birth: 1977 is數(shù)據(jù)庫(kù)原理與應(yīng)用233例5.* 使用列別名改變查詢結(jié)果的列標(biāo)題SELECT Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,ISLOWER(Sdept)

16、DEPARTMENTFROM Student;輸出結(jié)果:輸出結(jié)果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇李勇 Year of Birth: 1976 cs 劉晨劉晨 Year of Birth: 1977 is 王名王名 Year of Birth: 1978 ma 張立張立 Year of Birth: 1977 is數(shù)據(jù)庫(kù)原理與應(yīng)用234二、選擇表中的若干元組 消除取值重復(fù)的行 查詢滿足條件的元組 數(shù)據(jù)庫(kù)原理與應(yīng)用2351. 消除取值重復(fù)的行 在SELECT子句中使用DISTINCT短語(yǔ)假設(shè)SC表中有下列數(shù)據(jù) Sno Cno Grade - -

17、 - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80數(shù)據(jù)庫(kù)原理與應(yīng)用236ALL 與 DISTINCT 例6 查詢選修了課程的學(xué)生學(xué)號(hào)。(1) SELECT Sno FROM SC;(因?yàn)槟J(rèn)的是ALL) SELECT ALL Sno FROM SC; 所以結(jié)果為: Sno - 95001 95001 95001 95002 95002 數(shù)據(jù)庫(kù)原理與應(yīng)用237例題(續(xù))(2) SELECT DISTINCT Sno FROM SC; 結(jié)果: Sno - 95001 95002 總結(jié):兩個(gè)本來(lái)并不完全相同的元組,投影到指定的某些列上后

18、,可能變成完全相同的行,于是必須用DISTINCT短語(yǔ)或象下面那樣用WHERE語(yǔ)句。數(shù)據(jù)庫(kù)原理與應(yīng)用2382.查詢滿足條件的元組表表 3.3 常常用用的的查查詢?cè)儣l條件件查查 詢?cè)?條條 件件謂謂 詞詞比比 較較=,=,=,!=,!,!;NOT + 上上述述比比較較運(yùn)運(yùn)算算符符確確定定范范圍圍BETWEEN AND,NOT BETWEEN AND確確定定集集合合IN,NOT IN字字符符匹匹配配LIKE,NOT LIKE空空 值值IS NULL,IS NOT NULL多多重重條條件件AND,ORWHERE子句常用的查詢條件數(shù)據(jù)庫(kù)原理與應(yīng)用239(1) 比較大小在WHERE子句的中使用比較運(yùn)算符

19、 =,=,=,!= 或 ,!,!, 邏輯運(yùn)算符NOT + 比較運(yùn)算符例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage = 20; 數(shù)據(jù)庫(kù)原理與應(yīng)用240 例9 查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)SELECT DISTINCT SnoFROM SCWHERE Grade 60;數(shù)據(jù)庫(kù)原理與應(yīng)用241(2) 確定范圍 使用謂詞 BETWEEN (下限) AND (上限) NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。 SELECT Sname,Sde

20、pt,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; 數(shù)據(jù)庫(kù)原理與應(yīng)用242例題(續(xù))例11 查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23; 數(shù)據(jù)庫(kù)原理與應(yīng)用243(3) 確定集合使用謂詞 IN , NOT IN :用逗號(hào)分隔的一組取值例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì) 算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,

21、MA,CS );數(shù)據(jù)庫(kù)原理與應(yīng)用244(3) 確定集合例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算 機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS );數(shù)據(jù)庫(kù)原理與應(yīng)用245(4) 字符串匹配 NOT LIKE ESCAPE :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 當(dāng)匹配模板為固定字符串時(shí),即不含通配符時(shí) 可以用 = 運(yùn)算符取代 LIKE 謂詞 用 != 或 運(yùn)算符取代 NOT LIKE 謂詞數(shù)據(jù)庫(kù)原理與應(yīng)用246通配符w % (百分號(hào)) 代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串 例:

22、a%b表示以a開頭,以b結(jié)尾的任意長(zhǎng)度的字符串。如acb,addgb,ab 等都滿足該匹配串 _ (下橫線) 代表任意單個(gè)字符 例:a_b表示以a開頭,以b結(jié)尾的長(zhǎng)度為3的任意字符串。如acb,afb等都滿足該匹配串?dāng)?shù)據(jù)庫(kù)原理與應(yīng)用247ESCAPE 短語(yǔ):當(dāng)用戶要查詢的字符串本身就含有 % 或 _ 時(shí),要使用ESCAPE 短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義。數(shù)據(jù)庫(kù)原理與應(yīng)用248例題1) 匹配模板為固定字符串 例14 查詢學(xué)號(hào)為95001的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 95001;等價(jià)于: SELECT * FROM Student WHERE

23、 Sno = 95001;數(shù)據(jù)庫(kù)原理與應(yīng)用249例題(續(xù))2) 匹配模板為含通配符的字符串例15 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;數(shù)據(jù)庫(kù)原理與應(yīng)用250例題(續(xù))匹配模板為含通配符的字符串(續(xù))例16 查詢姓歐陽(yáng)且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽(yáng)_ _;數(shù)據(jù)庫(kù)原理與應(yīng)用251例題(續(xù))匹配模板為含通配符的字符串(續(xù))例17 查詢名字中第2個(gè)字為陽(yáng)字的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname

24、,Sno FROM Student WHERE Sname LIKE _ _陽(yáng)%;數(shù)據(jù)庫(kù)原理與應(yīng)用252例題(續(xù))匹配模板為含通配符的字符串(續(xù))例18 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉%;數(shù)據(jù)庫(kù)原理與應(yīng)用253例題(續(xù))3) 使用換碼字符將通配符轉(zhuǎn)義為普通字符 例19 查詢DB_Design課程的課程號(hào)和學(xué)分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE 數(shù)據(jù)庫(kù)原理與應(yīng)用254例題(續(xù))使用換碼字符

25、將通配符轉(zhuǎn)義為普通字符(續(xù))例20 查詢以DB_開頭,且倒數(shù)第3個(gè)字符為 i的課程的詳細(xì)情況。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ;數(shù)據(jù)庫(kù)原理與應(yīng)用255(5) 涉及空值的查詢 使用謂詞 IS NULL 或 IS NOT NULL “IS NULL” 不能用 “= NULL” 代替例21 某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄,但沒(méi)有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;數(shù)據(jù)庫(kù)原理與應(yīng)用256例題(續(xù)) 例22 查

26、所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;數(shù)據(jù)庫(kù)原理與應(yīng)用257(6) 多重條件查詢用邏輯運(yùn)算符AND和 OR來(lái)聯(lián)結(jié)多個(gè)查詢條件 AND的優(yōu)先級(jí)高于OR 可以用括號(hào)改變優(yōu)先級(jí)可用來(lái)實(shí)現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND 數(shù)據(jù)庫(kù)原理與應(yīng)用258例題例23 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23;數(shù)據(jù)庫(kù)原理與應(yīng)用261三、對(duì)查詢結(jié)果排序 若沒(méi)有指定查詢結(jié)果的顯

27、示順序,若沒(méi)有指定查詢結(jié)果的顯示順序,DBMS按最方便的按最方便的(元組在表中的先后)方式輸出查詢結(jié)果(元組在表中的先后)方式輸出查詢結(jié)果使用使用ORDER BY子句子句 可以按一個(gè)或多個(gè)屬性列排序可以按一個(gè)或多個(gè)屬性列排序 升序:升序:ASC;降序:;降序:DESC;缺省值為升序;缺省值為升序當(dāng)排序列含空值時(shí)當(dāng)排序列含空值時(shí) ASC:排序列為空值的元組最后顯示:排序列為空值的元組最后顯示 DESC:排序列為空值的元組最先顯示:排序列為空值的元組最先顯示 數(shù)據(jù)庫(kù)原理與應(yīng)用262對(duì)查詢結(jié)果排序(續(xù)) 例24 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT Sno,

28、Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC; 數(shù)據(jù)庫(kù)原理與應(yīng)用263查詢結(jié)果 Sno Grade - - 95010 95024 95007 92 95003 82 95010 82 95009 75 95014 61 95002 55數(shù)據(jù)庫(kù)原理與應(yīng)用264對(duì)查詢結(jié)果排序(續(xù)) 例25 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; 數(shù)據(jù)庫(kù)原理與應(yīng)用265四、使用集函數(shù) 5類主要集函數(shù) 計(jì)數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL ) 計(jì)算總和,(此列必須是數(shù)值型的)SUM(DISTINCT|ALL ) 計(jì)算平均值,(此列必須是數(shù)值型的)AVG(DISTINCT|ALL )數(shù)據(jù)庫(kù)原理與應(yīng)用266使用集函數(shù)(續(xù)) 求最大值MAX(DISTINCT|ALL ) 求最小值MIN(DISTINCT|ALL ) DISTINCT短語(yǔ):在計(jì)算時(shí)要取消指定列中的重復(fù)值 ALL短語(yǔ):不取消重復(fù)值 ALL為缺省值數(shù)據(jù)庫(kù)原理與應(yīng)用267使用集函數(shù) (續(xù))例26 查詢學(xué)生總?cè)藬?shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論