關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL_第1頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL_第2頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL_第3頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL_第4頁(yè)
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL_第5頁(yè)
已閱讀5頁(yè),還剩29頁(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、1數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 Principle and Application of Database 第四章第四章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQLSQL 2數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n了解了解SQL語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn) n掌握掌握SQL的數(shù)據(jù)定義的數(shù)據(jù)定義 n掌握掌握SQL的單表查詢的單表查詢 3數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 nSQL的特點(diǎn)的特點(diǎn) n綜合統(tǒng)一:綜合統(tǒng)一:SQL語(yǔ)言集數(shù)據(jù)定義語(yǔ)言語(yǔ)言集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言、數(shù)據(jù)操縱語(yǔ)言DML 、數(shù)據(jù)控制語(yǔ)言、數(shù)據(jù)控制語(yǔ)言DCL的功能于一體。的功能于一體。 n高度非過(guò)程

2、化:非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語(yǔ)言是面向過(guò)程的語(yǔ)高度非過(guò)程化:非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語(yǔ)言是面向過(guò)程的語(yǔ) 言,操作必須指明存取路徑;而用言,操作必須指明存取路徑;而用SQL語(yǔ)言進(jìn)行數(shù)據(jù)操作,只要語(yǔ)言進(jìn)行數(shù)據(jù)操作,只要 提出提出“做什么做什么”,無(wú)須指明,無(wú)須指明“怎么做怎么做”,因此無(wú)需了解存取路徑,因此無(wú)需了解存取路徑 。 n面向集合的操作方式:非關(guān)系數(shù)據(jù)模型采用的是面向記錄的操作面向集合的操作方式:非關(guān)系數(shù)據(jù)模型采用的是面向記錄的操作 方式,操作對(duì)象是一條記錄;而方式,操作對(duì)象是一條記錄;而SQL語(yǔ)言采用的集合操作方式,語(yǔ)言采用的集合操作方式, 不僅操作對(duì)象、查詢結(jié)果可以是元組的集合,而且一

3、次插入、刪不僅操作對(duì)象、查詢結(jié)果可以是元組的集合,而且一次插入、刪 除、更新操作的對(duì)象也可以是元組的集合。除、更新操作的對(duì)象也可以是元組的集合。 n以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方法:以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方法:SQL語(yǔ)言既是自含式語(yǔ)言語(yǔ)言既是自含式語(yǔ)言 ,能獨(dú)立地用于聯(lián)機(jī)交互;又是嵌入式語(yǔ)言,能嵌入到高級(jí)語(yǔ)言,能獨(dú)立地用于聯(lián)機(jī)交互;又是嵌入式語(yǔ)言,能嵌入到高級(jí)語(yǔ)言 中進(jìn)行混合編程。中進(jìn)行混合編程。 4數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 表表 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è)?/p>

4、SELECT 數(shù)數(shù) 據(jù)據(jù) 操操 縱縱INSERT,UPDATE DELETE 數(shù)數(shù) 據(jù)據(jù) 控控 制制GRANT,REVOKE 語(yǔ)言簡(jiǎn)潔,易學(xué)易用:語(yǔ)言簡(jiǎn)潔,易學(xué)易用:完成核心功能只用完成核心功能只用9個(gè)動(dòng)詞:個(gè)動(dòng)詞: 5數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 定義、修改與刪除基本表定義、修改與刪除基本表 定義基本表定義基本表 CREATE TABLE ( , , ); 其中:其中:表名為所要定義的基本表的名字,列名為組成該表的表名為所要定義的基本表的名字,列名為組成該表的 各個(gè)屬性各個(gè)屬性(列列),列級(jí)完整性約束條件為涉及相應(yīng)屬性列的完整性,列級(jí)完整性約束條件為涉及相應(yīng)屬性列的完整性 約束條件,表級(jí)

5、完整性約束條件為涉及一個(gè)或多個(gè)屬性列的完整約束條件,表級(jí)完整性約束條件為涉及一個(gè)或多個(gè)屬性列的完整 性約束條件。常用的完整性約束有:主碼約束性約束條件。常用的完整性約束有:主碼約束PRIMARY KEY 、唯一性約束、唯一性約束UNIQUE、非空值約束、非空值約束NOT NULL、參照完整性約、參照完整性約 束束FOREIGN KEY REFERENCES。 6數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 例例1建立一個(gè)建立一個(gè)“學(xué)生學(xué)生”表表Student,它由學(xué)號(hào),它由學(xué)號(hào)Sno、姓名、姓名 Sname、性別、性別Ssex、年齡、年齡Sage、系別、系別Sdept五個(gè)屬性組成。五個(gè)屬性組成。 其中學(xué)號(hào)

6、不能為空,值是唯一的,并且姓名取值也唯一。其中學(xué)號(hào)不能為空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT,Sdept CHAR(15); SnoSnoSnameSnameSsexSsexSageSageSdeptSdept 字符型字符型, 長(zhǎng)度為長(zhǎng)度為5, 不能為空不能為空 字符型字符型, 長(zhǎng)度為長(zhǎng)度為 20 字符型字符型 長(zhǎng)度為長(zhǎng)度為 1 整數(shù)整數(shù) 字符型字符型 長(zhǎng)度為長(zhǎng)度為 1515 7數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)

7、原理及應(yīng)用 n修改基本表修改基本表 ALTER TABLE ADD 完整性約束完整性約束 DROP DROP column MODIFY ; 其中:表名為要修改的基本表,其中:表名為要修改的基本表,ADDADD子句為增加新列和新的完子句為增加新列和新的完 整性約束條件,整性約束條件,DROPDROP子句為刪除指定的完整性約束條件,子句為刪除指定的完整性約束條件, MODIFYMODIFY子句為用于修改列名和數(shù)據(jù)類型。子句為用于修改列名和數(shù)據(jù)類型。 例例2向向Student表增加表增加“入學(xué)時(shí)間入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student A

8、DD Scome DATE; 不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。 8數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 例例3將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。 ALTER TABLE Student MODIFY Sage SMALLINT; 修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù)。修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù)。 例例4刪除學(xué)生姓名必須取唯一值的約束。刪除學(xué)生姓名必須取唯一值的約束。 ALTER TABLE Student DROP UNIQUE(Sname); SQL沒(méi)有提供刪除屬性列的語(yǔ)句,用戶只能間

9、接實(shí)現(xiàn)這一功能沒(méi)有提供刪除屬性列的語(yǔ)句,用戶只能間接實(shí)現(xiàn)這一功能 :先把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中,然后刪除:先把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中,然后刪除 原表,再將新表重命名為原表名。但有的原表,再將新表重命名為原表名。但有的DBMS提供直接刪除提供直接刪除 屬性列的語(yǔ)句,如:屬性列的語(yǔ)句,如:ALTER TABLE Student Drop Scome; 9數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 刪除基本表刪除基本表 DROP TABLE ; 基本表定義一旦刪除,表中的數(shù)據(jù)、表上建立的索引和視圖都基本表定義一旦刪除,表中的數(shù)據(jù)、表上建立的索引和視圖都 將自動(dòng)刪除。但將自動(dòng)刪除

10、。但Oracle中刪除基本表后建立在此表上的視圖仍保中刪除基本表后建立在此表上的視圖仍保 留在數(shù)據(jù)字典中,但用戶引用時(shí)就出錯(cuò)。留在數(shù)據(jù)字典中,但用戶引用時(shí)就出錯(cuò)。 例例5刪除刪除Student表。表。 DROP TABLE Student ; 建立與刪除索引建立與刪除索引 建立索引是加快查詢速度的有效手段,建立與刪除索引由建立索引是加快查詢速度的有效手段,建立與刪除索引由DBA 或表的屬主負(fù)責(zé)完成,但有些或表的屬主負(fù)責(zé)完成,但有些DBMS自動(dòng)建立自動(dòng)建立PRIMARY或或KEY UNIQUE列上的索引。列上的索引。 10數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n建立索引建立索引 CREATE UNI

11、QUE CLUSTER INDEX ON (, ); n用用指定要建索引的基本表。指定要建索引的基本表。 n索引可以建立在該表的一列或多列上,各列名之間用逗號(hào)分隔索引可以建立在該表的一列或多列上,各列名之間用逗號(hào)分隔 n用用指定索引值的排列次序,升序指定索引值的排列次序,升序ASC,降序,降序DESC。缺省。缺省ASC。 nUNIQUE表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。 nCLUSTER表示要建立的索引是聚簇索引。表示要建立的索引是聚簇索引。 例例6為學(xué)生為學(xué)生-課程數(shù)據(jù)庫(kù)中課程數(shù)據(jù)庫(kù)中Student,Course,SC三個(gè)表建立索引。

12、其中三個(gè)表建立索引。其中 Student表按學(xué)號(hào)升序建唯一索引,表按學(xué)號(hào)升序建唯一索引,Course表按課程號(hào)升序建唯一索引,表按課程號(hào)升序建唯一索引, SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。表按學(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); 11數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n唯一索引:對(duì)于已含重復(fù)值的屬性列不能建唯一索引:對(duì)于已

13、含重復(fù)值的屬性列不能建UNIQUE索引,對(duì)索引,對(duì) 某個(gè)列建立某個(gè)列建立UNIQUE索引后,插入新記錄時(shí)索引后,插入新記錄時(shí)DBMS會(huì)自動(dòng)檢查會(huì)自動(dòng)檢查 新記錄在該列上是否取了重復(fù)值,這相當(dāng)于增加了一個(gè)新記錄在該列上是否取了重復(fù)值,這相當(dāng)于增加了一個(gè) UNIQUE約束。約束。 n聚簇索引:建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇聚簇索引:建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇 屬性值的升序或降序存放,即聚簇索引的索引項(xiàng)順序與表中記屬性值的升序或降序存放,即聚簇索引的索引項(xiàng)順序與表中記 錄的物理順序一致。錄的物理順序一致。 例:例:CREATE CLUSTER INDEX Stusna

14、me ON Student(Sname); 在在Student表的表的Sname列上建立一個(gè)聚簇索引,而且列上建立一個(gè)聚簇索引,而且Student 表中的記錄將按照表中的記錄將按照Sname值的升序存放。在一個(gè)基本表上最多值的升序存放。在一個(gè)基本表上最多 只能建立一個(gè)聚簇索引,聚簇索引對(duì)于某些類型的查詢,可以只能建立一個(gè)聚簇索引,聚簇索引對(duì)于某些類型的查詢,可以 提高查詢效率,聚簇索引在很少對(duì)基表進(jìn)行增刪操作或很少對(duì)提高查詢效率,聚簇索引在很少對(duì)基表進(jìn)行增刪操作或很少對(duì) 其中的變長(zhǎng)列進(jìn)行修改操作的場(chǎng)合下非常適用。其中的變長(zhǎng)列進(jìn)行修改操作的場(chǎng)合下非常適用。 12數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用

15、n刪除索引刪除索引 DROP INDEX ; 刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。 例例7刪除刪除Student表的表的Stusname索引。索引。 DROP INDEX Stusname; 13數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n概述概述 n查詢語(yǔ)句格式:查詢語(yǔ)句格式: SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 其中:其中:SELECT子句指定要顯示的屬性列;子句指定要顯示的屬性列;FROM子句指定查子句指定查 詢對(duì)象詢對(duì)象(

16、基本表或視圖基本表或視圖);WHERE子句指定查詢條件;子句指定查詢條件;GROUP BY子句對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組子句對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組 為一個(gè)組,通常會(huì)在每組中作用集函數(shù);為一個(gè)組,通常會(huì)在每組中作用集函數(shù);HAVING短語(yǔ)篩選出短語(yǔ)篩選出 只有滿足指定條件的組;只有滿足指定條件的組;ORDER BY子句對(duì)查詢結(jié)果表按指定子句對(duì)查詢結(jié)果表按指定 列值的升序或降序排序。列值的升序或降序排序。 14數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 Student CnoCnameCpnoCcredit 1數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)54 2數(shù)學(xué)數(shù)學(xué)2 3信息系統(tǒng)信息系統(tǒng)

17、14 4操作系統(tǒng)操作系統(tǒng)63 5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)74 6數(shù)據(jù)處理數(shù)據(jù)處理2 7C語(yǔ)言語(yǔ)言64 Course Sc SnoSnoCnoCnoGradeGrade 95001192 95001285 95001388 95002290 95002380 95001 95004 95003 95002 Sno 李勇李勇 張立張立 王敏王敏 劉晨劉晨 Sname 男男 男男 女女 女女 Ssex 20 19 18 19 Sage CS IS MA IS Sdept 示例數(shù)據(jù)庫(kù):學(xué)生示例數(shù)據(jù)庫(kù):學(xué)生-課程數(shù)據(jù)庫(kù)課程數(shù)據(jù)庫(kù) 15數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n單表查詢:查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的

18、查詢操作。單表查詢:查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作。 n選擇表中的若干列選擇表中的若干列 n查詢指定列或全部列查詢指定列或全部列 例例1查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。 SELECT Sno,Sname FROM Student; 例例2查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。 SELECT Sname,Sno,Sdept FROM Student; 例例3查詢?nèi)w學(xué)生的詳細(xì)記錄。查詢?nèi)w學(xué)生的詳細(xì)記錄。 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或或 SELECT * FROM St

19、udent; 16數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n查詢經(jīng)過(guò)計(jì)算的值:查詢經(jīng)過(guò)計(jì)算的值:SELECT子句的子句的為算術(shù)表為算術(shù)表 達(dá)式、字符串常量、函數(shù)、列別名等達(dá)式、字符串常量、函數(shù)、列別名等 。 例例4 查全體學(xué)生的姓名及其出生年份。查全體學(xué)生的姓名及其出生年份。 SELECT Sname,Sage FROM Student; 輸出結(jié)果:輸出結(jié)果: Sname Sage - - 李勇李勇 1976 劉晨劉晨 1977 王名王名 1978 張立張立 1978 17數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 例例5查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫(xiě)字查詢?nèi)w學(xué)生的姓名、出生年份和所有系,

20、要求用小寫(xiě)字 母表示所有系名。母表示所有系名。 SELECT Sname,Year of Birth:,Sage, LOWER(Sdept) FROM Student; 輸出結(jié)果:輸出結(jié)果: Sname Year of Birth: Sage LOWER(Sdept) - - - - 李勇李勇 Year of Birth: 1976 cs 劉晨劉晨 Year of Birth: 1977 is 王名王名 Year of Birth: 1978 ma 張立張立 Year of Birth: 1977 is 18數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 可以使用列別名改變查詢結(jié)果的列標(biāo)題可以使用列別名改變

21、查詢結(jié)果的列標(biāo)題 SELECT Sname NAME,Year of Birth: BIRTH, Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM 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 19數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n選擇表中的若干元組:在選擇表中的若

22、干元組:在WHERE子句中設(shè)置查詢條件。子句中設(shè)置查詢條件。 消除取值重復(fù)的行:在消除取值重復(fù)的行:在SELECT子句中使用子句中使用DISTINCT短語(yǔ)。短語(yǔ)。 例例6查詢選修了課程的學(xué)生學(xué)號(hào)。查詢選修了課程的學(xué)生學(xué)號(hào)。 SELECT Sno FROM SC; 或或 SELECT ALL Sno FROM SC; SELECT DISTINCT Sno FROM SC; ALL的結(jié)果:的結(jié)果: Sno DISTINCT的結(jié)果:的結(jié)果: Sno - - 95001 95001 95001 95002 95001 95002 95002 20數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 注意:注意:DIST

23、INCT短語(yǔ)的作用范圍是所有目標(biāo)列。短語(yǔ)的作用范圍是所有目標(biāo)列。 例:查詢選修課程的各種成績(jī)。例:查詢選修課程的各種成績(jī)。 錯(cuò)誤的寫(xiě)法錯(cuò)誤的寫(xiě)法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC; 正確的寫(xiě)法正確的寫(xiě)法 SELECT DISTINCT Cno,Grade FROM SC; 21數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 表表4-3 常用的查詢條件常用的查詢條件 n確定大?。涸诖_定大小:在WHERE子句的子句的中使用比較運(yùn)算符。中使用比較運(yùn)算符。 例例8查詢所有年齡在查詢所有年齡在20歲以下的學(xué)生姓名及其年齡歲以下的學(xué)生姓名及其年齡。 SELECT Sn

24、ame,Sage FROM Student WHERE Sage = 20; BETWEEN AND,NOT BETWEEN ANDBETWEEN AND,NOT BETWEEN AND IN,NOT IN =,=,=,!=,!,! NOT+上述運(yùn)算符上述運(yùn)算符 LIKE,NOT LIKE IS NULL,IS NOT NULL AND,OR 謂謂 詞詞查詢條件查詢條件 確定范圍確定范圍 確定集合確定集合 字符匹配字符匹配 空值空值 多重條件多重條件 比較比較 22數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n確定范圍:在確定范圍:在WHERE子句的子句的中使用謂詞中使用謂詞 BETWEEN AND或或

25、NOT BETWEEN AND 例例10查詢年齡在查詢年齡在2023歲歲(包括包括20歲和歲和23歲歲)間的學(xué)生的姓名、間的學(xué)生的姓名、 系別和年齡。系別和年齡。 SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23; 例例11查詢年齡不在查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡。歲之間的學(xué)生姓名、系別和年齡。 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23; 23數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n確定集合:在確定集

26、合:在WHERE子句的子句的中使用謂詞中使用謂詞IN(值表值表) 或或NOT IN (值表值表),(值表值表)是用逗號(hào)分隔的一組取值。是用逗號(hào)分隔的一組取值。 例例12查詢信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)生的姓名和性別。查詢信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)生的姓名和性別。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( IS,MA,CS ); 例例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)系的學(xué)生的姓查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)系的學(xué)生的姓 名和性別。名和性別。 SELECT Sname,Ssex FROM Student WHERE Sdept

27、NOT IN ( IS,MA,CS ); 24數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n字符串匹配:在字符串匹配:在WHERE子句的子句的中使用謂詞中使用謂詞NOT LIKE 匹配串匹配串 ESCAPE 換碼字符換碼字符。其中匹配串指定了。其中匹配串指定了 匹配模板,匹配模板就是固定字符串或含通配符的字符串,當(dāng)匹配模板,匹配模板就是固定字符串或含通配符的字符串,當(dāng) 匹配模板為固定字符串時(shí),可以用匹配模板為固定字符串時(shí),可以用 =取代取代 LIKE ,用,用 != 或或 取代取代 NOT LIKE 。 通配符通配符% (百分號(hào)百分號(hào)):代表任意長(zhǎng)度:代表任意長(zhǎng)度(可以為可以為0)的字符串。的字符串。

28、例:例:a%b表示以表示以a開(kāi)頭、以開(kāi)頭、以b結(jié)尾的任意長(zhǎng)度的字符串,如結(jié)尾的任意長(zhǎng)度的字符串,如acb 、addgb、ab 等。等。 通配符通配符_ (下橫線下橫線):代表任意單個(gè)字符。:代表任意單個(gè)字符。 例:例:a_b表示以表示以a開(kāi)頭、以開(kāi)頭、以b結(jié)尾的長(zhǎng)度為結(jié)尾的長(zhǎng)度為3的任意字符串,如的任意字符串,如 acb、afb等。等。 ESCAPE 短語(yǔ):當(dāng)用戶要查詢的字符串本身就含有短語(yǔ):當(dāng)用戶要查詢的字符串本身就含有 % 或或 _ 時(shí)時(shí) ,要使用,要使用ESCAPE 換碼字符換碼字符 短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義。短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義。 25數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 例例14查詢學(xué)號(hào)為查

29、詢學(xué)號(hào)為95001的學(xué)生的詳細(xì)情況。的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 95001; 等價(jià)于:等價(jià)于:SELECT * FROM Student WHERE Sno = 95001; 例例15查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉劉%; 例例16查詢姓查詢姓“歐陽(yáng)歐陽(yáng)”且全名為三個(gè)漢字的學(xué)生的姓名。且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sn

30、ame LIKE 歐陽(yáng)歐陽(yáng) _; 例例17查詢名字中第查詢名字中第2個(gè)字為個(gè)字為“陽(yáng)陽(yáng)”字的學(xué)生的姓名和學(xué)號(hào)。字的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽(yáng)陽(yáng)%; 例例18查詢所有不姓劉的學(xué)生姓名。查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉劉%; 26數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n涉及空值的查詢:在涉及空值的查詢:在WHERE子句的子句的中使用謂詞中使用謂詞IS NULL 或或 IS NOT NULL,注意,注意I

31、S NULL 不能用不能用= NULL 代替。代替。 例例21某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄但沒(méi)有某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄但沒(méi)有 考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)??荚嚦煽?jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL; 例例22查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL; 27數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n多重條件查詢:在多重條件查詢:在

32、WHERE子句的子句的中使用邏輯運(yùn)算中使用邏輯運(yùn)算 符符AND和和 OR來(lái)聯(lián)結(jié)多個(gè)查詢條件,來(lái)聯(lián)結(jié)多個(gè)查詢條件, AND的優(yōu)先級(jí)高于的優(yōu)先級(jí)高于OR, 可用括號(hào)改變優(yōu)先級(jí)??捎美ㄌ?hào)改變優(yōu)先級(jí)。 例例23查詢計(jì)算機(jī)系年齡在查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23; 對(duì)查詢結(jié)果排序:使用對(duì)查詢結(jié)果排序:使用ORDER BY子句,子句, 可以按一個(gè)或多個(gè)可以按一個(gè)或多個(gè) 屬性列排序,屬性列排序, 升序升序ASC,降序,降序DESC,缺省值為升序。當(dāng)排序

33、,缺省值為升序。當(dāng)排序 列含空值時(shí),列含空值時(shí),ASC排序列為空值的元組最后顯示,排序列為空值的元組最后顯示,DESC排序排序 列為空值的元組最先顯示。列為空值的元組最先顯示。 29數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 例例24查詢選修了查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及成績(jī),查詢結(jié)果按分號(hào)課程的學(xué)生的學(xué)號(hào)及成績(jī),查詢結(jié)果按分 數(shù)降序排列。數(shù)降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC; 查詢結(jié)果查詢結(jié)果 Sno Grade - - 95010 95001 88 95002 80 例例25查詢?nèi)w學(xué)生情況,結(jié)果按所在系

34、的系號(hào)升序排列,同一查詢?nèi)w學(xué)生情況,結(jié)果按所在系的系號(hào)升序排列,同一 系中的學(xué)生按年齡降序排列。系中的學(xué)生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; 30數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 n使用集函數(shù):使用集函數(shù): 5類主要集函數(shù)類主要集函數(shù) n計(jì)數(shù):計(jì)數(shù):COUNT(DISTINCT|ALL *) COUNT(DISTINCT|ALL ) n計(jì)算總和:計(jì)算總和:SUM(DISTINCT|ALL ) n計(jì)算平均值:計(jì)算平均值:AVG(DISTINCT|ALL ) n求最大值:求最大值:MAX(DISTINCT|ALL )

35、n求最小值:求最小值:MIN(DISTINCT|ALL ) 其中:其中:DISTINCT短語(yǔ)在計(jì)算時(shí)要取消指定列中的重復(fù)值,短語(yǔ)在計(jì)算時(shí)要取消指定列中的重復(fù)值,ALL 短語(yǔ)不取消重復(fù)值,短語(yǔ)不取消重復(fù)值,ALL為缺省值。為缺省值。 31數(shù)據(jù)庫(kù)原理及應(yīng)用數(shù)據(jù)庫(kù)原理及應(yīng)用 例例26查詢學(xué)生總?cè)藬?shù)。查詢學(xué)生總?cè)藬?shù)。 SELECT COUNT(*) FROM Student; 例例27查詢選修了課程的學(xué)生人數(shù)。查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC; 注:用注:用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù)。以避免重復(fù)計(jì)算學(xué)生人數(shù)。 例例28計(jì)算計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。號(hào)課程的學(xué)生平均成績(jī)。 SELECT AVG(Grade) FROM SC WHERE Cno= 1 ; 例例29查詢選修查詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù)。號(hào)課程的學(xué)生最高分?jǐn)?shù)。 SELECT MAX(G

溫馨提示

  • 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)論