交通信息系統(tǒng)第八章結(jié)構(gòu)化查詢語言SQL1_第1頁
交通信息系統(tǒng)第八章結(jié)構(gòu)化查詢語言SQL1_第2頁
交通信息系統(tǒng)第八章結(jié)構(gòu)化查詢語言SQL1_第3頁
交通信息系統(tǒng)第八章結(jié)構(gòu)化查詢語言SQL1_第4頁
交通信息系統(tǒng)第八章結(jié)構(gòu)化查詢語言SQL1_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 主要內(nèi)容主要內(nèi)容vSQLSQL概述概述 vSQLSQL的數(shù)據(jù)定義的數(shù)據(jù)定義vSQLSQL的數(shù)據(jù)查詢的數(shù)據(jù)查詢 v數(shù)據(jù)更新數(shù)據(jù)更新 v嵌入式嵌入式SQL SQL vTransact SQLTransact SQL語言概述語言概述 2本章概述本章概述v 結(jié)構(gòu)化查詢語言結(jié)構(gòu)化查詢語言SQLSQL(Structured Query LanguageStructured Query Language)是關(guān)系數(shù)據(jù)庫)是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,對(duì)關(guān)系模型的發(fā)展和商用的標(biāo)準(zhǔn)語言,對(duì)關(guān)系模型的發(fā)展和商用DBMSDBMS的研制起著重要的作用。的研制起著重要的作用。SQLSQL語語言是介乎于關(guān)系代數(shù)和元組演算之間

2、的一種語言。本章詳細(xì)介紹言是介乎于關(guān)系代數(shù)和元組演算之間的一種語言。本章詳細(xì)介紹SQLSQL的核心的核心部分內(nèi)容:部分內(nèi)容:數(shù)據(jù)定義數(shù)據(jù)定義、數(shù)據(jù)查詢數(shù)據(jù)查詢、數(shù)據(jù)更新數(shù)據(jù)更新和和嵌入式嵌入式SQLSQL。 34.1 SQL概述概述 主要內(nèi)容主要內(nèi)容vSQL的產(chǎn)生與發(fā)展的產(chǎn)生與發(fā)展vSQL的組成及特點(diǎn)的組成及特點(diǎn)44.1.1 SQL4.1.1 SQL的產(chǎn)生與發(fā)展的產(chǎn)生與發(fā)展 v19721972年,年,IBMIBM公司開始研制實(shí)驗(yàn)型關(guān)系數(shù)據(jù)庫管理系統(tǒng)公司開始研制實(shí)驗(yàn)型關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEM RSYSTEM R,其配,其配備的查詢語言稱為備的查詢語言稱為SQUARESQUARE (Spec

3、ifying Queries As Relational (Specifying Queries As Relational Expression ) Expression )語言,語言中使用了較多的數(shù)學(xué)符號(hào)。語言,語言中使用了較多的數(shù)學(xué)符號(hào)。v19741974年,年,BoyceBoyce和和ChamberlinChamberlin把把SQUARESQUARE修改為修改為SEQUELSEQUEL (Structured (Structured English Query Language )English Query Language )語言。后來語言。后來SEQUELSEQUEL簡(jiǎn)稱為簡(jiǎn)稱為

4、SQLSQL (Structured (Structured Query Language )Query Language ),即,即“結(jié)構(gòu)式查詢語言結(jié)構(gòu)式查詢語言”,SQLSQL的發(fā)音仍的發(fā)音仍“sequelsequel”。現(xiàn)在現(xiàn)在SQLSQL已經(jīng)成為一個(gè)標(biāo)準(zhǔn)已經(jīng)成為一個(gè)標(biāo)準(zhǔn) 。v SQLSQL有兩個(gè)標(biāo)準(zhǔn):有兩個(gè)標(biāo)準(zhǔn):ANSI SQLANSI SQL和和19921992年通過的修改版本年通過的修改版本SQL-92SQL-92(簡(jiǎn)稱(簡(jiǎn)稱 SQL2SQL2)。還有一個(gè)新的標(biāo)準(zhǔn))。還有一個(gè)新的標(biāo)準(zhǔn)SQL3SQL3,它擴(kuò)充了,它擴(kuò)充了SQL2SQL2,引入了遞歸、觸發(fā),引入了遞歸、觸發(fā) 器和對(duì)象等

5、概念和機(jī)制。器和對(duì)象等概念和機(jī)制。SQL簡(jiǎn)介簡(jiǎn)介SQL語言是應(yīng)用于數(shù)據(jù)庫的語言,本身是不能獨(dú)立存在的。它是一種非過程性(non-procedural)語言,與一般的高級(jí)語言(如C、JAVA)不同。一般的高級(jí)語言在存取數(shù)據(jù)庫時(shí),需要依照每一行程序的順序處理許多的動(dòng)作。但是使用SQL時(shí),只需告訴數(shù)據(jù)庫需要什么數(shù)據(jù),怎么顯示就可以了。具體的內(nèi)部操作則由數(shù)據(jù)庫系統(tǒng)來完成。64.1.2 SQL4.1.2 SQL的組成及特點(diǎn)的組成及特點(diǎn) SQLSQL語言從功能上可以分為四部分:數(shù)據(jù)查詢(語言從功能上可以分為四部分:數(shù)據(jù)查詢(Data QueryData Query)、數(shù)據(jù))、數(shù)據(jù)操縱(操縱(Data Ma

6、nipulationData Manipulation)、數(shù)據(jù)定義()、數(shù)據(jù)定義(Data DefinitionData Definition)和數(shù)據(jù)控制)和數(shù)據(jù)控制(Data ControlData Control)。)。 數(shù)據(jù)定義語言,即數(shù)據(jù)定義語言,即SQL DDLSQL DDL,用于定義,用于定義SQLSQL模式、基本表、視圖、索引等模式、基本表、視圖、索引等結(jié)構(gòu)。結(jié)構(gòu)。 數(shù)據(jù)操縱語言,即數(shù)據(jù)操縱語言,即SQL DMLSQL DML。數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。其中數(shù)據(jù)更新又分成插入、刪除和修改三種操作。其中數(shù)據(jù)更新又分成插入、刪除和修改三種

7、操作。 數(shù)據(jù)控制語言,即數(shù)據(jù)控制語言,即SQL DCLSQL DCL,這一部分包括對(duì)基本表和視圖的授權(quán)、完,這一部分包括對(duì)基本表和視圖的授權(quán)、完整性規(guī)則的描述、事務(wù)控制等內(nèi)容。整性規(guī)則的描述、事務(wù)控制等內(nèi)容。 SQLSQL的核心部分相當(dāng)于關(guān)系代數(shù),同時(shí)又具有關(guān)系代數(shù)所沒有的許多的核心部分相當(dāng)于關(guān)系代數(shù),同時(shí)又具有關(guān)系代數(shù)所沒有的許多特點(diǎn),如聚集、數(shù)據(jù)庫更新等。特點(diǎn),如聚集、數(shù)據(jù)庫更新等。7v綜合統(tǒng)一綜合統(tǒng)一v高度非過程化高度非過程化nSQL是一種第四代語言(是一種第四代語言(4GL),用戶只需提出),用戶只需提出“干什干什么么”,無需具體指明,無需具體指明“怎么干怎么干”,像存取路徑選擇和具,

8、像存取路徑選擇和具體處理操作等,均有系統(tǒng)自動(dòng)完成。體處理操作等,均有系統(tǒng)自動(dòng)完成。v統(tǒng)一的語法結(jié)構(gòu)統(tǒng)一的語法結(jié)構(gòu)nSQL有兩種使用方式:一是聯(lián)機(jī)交互使用,另一種是嵌有兩種使用方式:一是聯(lián)機(jī)交互使用,另一種是嵌入到某種高級(jí)語言程序設(shè)計(jì)語言中去使用。入到某種高級(jí)語言程序設(shè)計(jì)語言中去使用。v語言簡(jiǎn)潔語言簡(jiǎn)潔8SQLSQL的核心動(dòng)詞的核心動(dòng)詞 功功 能能動(dòng)動(dòng) 詞詞數(shù)據(jù)庫查詢數(shù)據(jù)庫查詢SELECTSELECT數(shù)據(jù)定義數(shù)據(jù)定義CREATECREATE,DROPDROP數(shù)據(jù)操縱數(shù)據(jù)操縱INSERTINSERT,UPDATEUPDATE,DELECTDELECT數(shù)據(jù)控制數(shù)據(jù)控制GRANTGRANT,REVOK

9、EREVOKE9操作對(duì)操作對(duì)象象操操 作作 方方 式式創(chuàng)創(chuàng) 建建刪刪 除除修修 改改數(shù)據(jù)庫數(shù)據(jù)庫CREATE DATABASECREATE DATABASEDROP DATABASEDROP DATABASE表表CREATE TABLECREATE TABLEDROP TABLEDROP TABLEALTER TABLEALTER TABLE索索 引引CREATE INDEXCREATE INDEXDROP INDEXDROP INDEX視視 圖圖CREATE VIEWCREATE VIEWDROP VIEWDROP VIEWSQLSQL的數(shù)據(jù)定義功能包括數(shù)據(jù)庫定義、表定義、視圖和索引的定義。

10、的數(shù)據(jù)定義功能包括數(shù)據(jù)庫定義、表定義、視圖和索引的定義。 10學(xué)號(hào)學(xué)號(hào)SNO姓名姓名SNAME性別性別SEX年齡年齡AGE所在系所在系SDEPT200915121200915122200915123200915125李小勇李小勇劉劉 晨晨王洪敏王洪敏張張 力力MFFM20191819CSCSMAIS學(xué)生表學(xué)生表:S(S(SNOSNO,SNAME,SEX,AGE,SDEPT) ,SNAME,SEX,AGE,SDEPT) 課程表:課程表:C(C(CNOCNO,CNAME,CPNO,CCREDIT) ,CNAME,CPNO,CCREDIT) 學(xué)生選課表學(xué)生選課表:SC(SC(SNO,CNOSNO,C

11、NO,GRADE) ,GRADE) 例例4.14.1 定義一個(gè)定義一個(gè)教務(wù)管理數(shù)據(jù)庫教務(wù)管理數(shù)據(jù)庫JWGLJWGL,它包含,它包含3 3個(gè)表:個(gè)表:11課程號(hào)課程號(hào)CNO課程名課程名CNAME先修課先修課CPNO學(xué)分學(xué)分CCREDIT1234567數(shù)據(jù)庫數(shù)據(jù)庫數(shù)學(xué)數(shù)學(xué)信息系統(tǒng)信息系統(tǒng)操作系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理數(shù)據(jù)處理C語言語言516764243424課程表實(shí)例課程表實(shí)例學(xué)號(hào)學(xué)號(hào)SNO課程號(hào)課程號(hào)CNO成績(jī)成績(jī)GRADE200915121200915121200915121200915122200915122123239285889080124.3 SQL的數(shù)據(jù)查詢的數(shù)據(jù)查詢 主要

12、內(nèi)容主要內(nèi)容 SELECTSELECT語句格式語句格式 單表查詢單表查詢 聚集函數(shù)聚集函數(shù) 數(shù)據(jù)分組數(shù)據(jù)分組 多表查詢多表查詢 集合操作集合操作13 4.3.1 SELECT 4.3.1 SELECT語句語句格式格式1 1、SELECTSELECTFROMFROMWHEREWHERE句型句型在關(guān)系代數(shù)中最常用的式子是下列表達(dá)式:在關(guān)系代數(shù)中最常用的式子是下列表達(dá)式: A1,An(F(R1Rm) 這里這里R1、Rm為關(guān)系,為關(guān)系,F(xiàn)是公式,是公式,A1、An為屬性。為屬性。針對(duì)上述表達(dá)式,針對(duì)上述表達(dá)式,SQL為此設(shè)計(jì)了為此設(shè)計(jì)了SELECTFROMWHERE句型:句型:SELECT A1,An

13、FROM R1,RmWHERE F 這個(gè)句型是從關(guān)系代數(shù)表達(dá)式演變來的,但這個(gè)句型是從關(guān)系代數(shù)表達(dá)式演變來的,但WHERE子句中的條件表達(dá)子句中的條件表達(dá)式式F要比關(guān)系代數(shù)中公式更靈活要比關(guān)系代數(shù)中公式更靈活。14v在在WHERE子句的條件表達(dá)式子句的條件表達(dá)式F中可使用下列運(yùn)算符中可使用下列運(yùn)算符n算術(shù)比較運(yùn)算符:算術(shù)比較運(yùn)算符:、 、 = 、 、 !=n邏輯運(yùn)算符:邏輯運(yùn)算符:AND、OR、NOTn集合成員資格運(yùn)算符:集合成員資格運(yùn)算符:IN、NOT INn謂詞:謂詞:EXISTS、ALL、SOME、UNIQUEn聚合函數(shù):聚合函數(shù):AVG、MIN、MAX、SUM、COUNTnF中運(yùn)算對(duì)象

14、還可以是另一個(gè)中運(yùn)算對(duì)象還可以是另一個(gè)SELECT語句,即語句,即SELECT句型可以嵌套句型可以嵌套2 2、SELECTSELECT語句完整的句法如下:語句完整的句法如下: SELECTSELECT 目標(biāo)表的列名或列表達(dá)式序列目標(biāo)表的列名或列表達(dá)式序列 FROMFROM 基本表名和(或)視圖序列基本表名和(或)視圖序列 WHEREWHERE 行條件表達(dá)式行條件表達(dá)式 GROUP BYGROUP BY 列名序列列名序列 HAVING HAVING 組條件表達(dá)式組條件表達(dá)式 ORDER BYORDER BY 列名列名 ASC|DESC ASC|DESC , 主語句主語句SELECT-FROM-W

15、HERE的含義是:的含義是: 根據(jù)根據(jù)WHERE子句的條件表達(dá)式,從子句的條件表達(dá)式,從FROM子句指定的基本表子句指定的基本表或視圖中找出滿足條件的元組,再按或視圖中找出滿足條件的元組,再按SELECT子句中的目標(biāo)列表達(dá)子句中的目標(biāo)列表達(dá)式,選出元組中的屬性值形成結(jié)果表。式,選出元組中的屬性值形成結(jié)果表。 16整個(gè)語句的執(zhí)行過程如下:整個(gè)語句的執(zhí)行過程如下:(1) (1) 讀取讀取FROMFROM子句中基本表、視圖的數(shù)據(jù),執(zhí)行笛卡爾積操作。子句中基本表、視圖的數(shù)據(jù),執(zhí)行笛卡爾積操作。(2) (2) 選取滿足選取滿足WHEREWHERE子句中給出的條件表達(dá)式的元組。子句中給出的條件表達(dá)式的元組

16、。(3) (3) 按按GROUPGROUP子句中指定列的值分組,同時(shí)提取滿足子句中指定列的值分組,同時(shí)提取滿足HAVINGHAVING子句中子句中組條件表達(dá)式的那些組。組條件表達(dá)式的那些組。(4) (4) 按按SELECTSELECT子句中給出的列名或列表達(dá)式求值輸出。子句中給出的列名或列表達(dá)式求值輸出。(5) ORDER(5) ORDER子句對(duì)輸出的目標(biāo)表進(jìn)行排序,按附加說明子句對(duì)輸出的目標(biāo)表進(jìn)行排序,按附加說明ASCASC升序排列,升序排列,或按或按DESCDESC降序排列。降序排列。17根據(jù)查詢條件不同,可分為:根據(jù)查詢條件不同,可分為:v單表查詢單表查詢v連接查詢連接查詢v嵌套查詢嵌套

17、查詢v集合查詢集合查詢184.3.2 單表查詢單表查詢查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作。查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作。一、選擇表中的若干列一、選擇表中的若干列二、選擇表中的若干元組二、選擇表中的若干元組三、對(duì)查詢結(jié)果排序三、對(duì)查詢結(jié)果排序四、使用聚合函數(shù)四、使用聚合函數(shù)五、對(duì)查詢結(jié)果分組五、對(duì)查詢結(jié)果分組 191、查詢表中的若干列、查詢表中的若干列 查詢指定列查詢指定列 在很多情況下,用戶只對(duì)表中的一部分屬性列感興趣,在很多情況下,用戶只對(duì)表中的一部分屬性列感興趣,這時(shí)可以通過在這時(shí)可以通過在SELECT子句的子句的中指定中指定要查詢的屬性列。要查詢的屬性列。 例例4.21

18、 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。 SELECT SNO,SNAME FROM S; 執(zhí)行過程:從執(zhí)行過程:從S表中取出一個(gè)元組,再取出該元組在屬表中取出一個(gè)元組,再取出該元組在屬性性SNO和和SNAME上的值,形成一個(gè)新的元組作為輸出。上的值,形成一個(gè)新的元組作為輸出。對(duì)對(duì)S表中的所有元組做相同的處理,最后形成一個(gè)結(jié)果關(guān)表中的所有元組做相同的處理,最后形成一個(gè)結(jié)果關(guān)系作為輸出。系作為輸出。20 查詢?nèi)苛胁樵內(nèi)苛?將表中的所有屬性列都選出來,可以有兩種方法。一將表中的所有屬性列都選出來,可以有兩種方法。一種方法就是在種方法就是在SELECTSELECT關(guān)鍵字后面列出所有

19、列名;另一種方關(guān)鍵字后面列出所有列名;另一種方法是如果列的顯示順序與其在基表中的順序相同,也可以法是如果列的顯示順序與其在基表中的順序相同,也可以簡(jiǎn)單地將簡(jiǎn)單地將 指定為指定為“* *”。 例例4.23 4.23 查詢?nèi)w學(xué)生的詳細(xì)記錄。查詢?nèi)w學(xué)生的詳細(xì)記錄。 SELECT SELECT * * FROM S; FROM S; 等價(jià)于:等價(jià)于: SELECT SNO,SNAME,SEX,AGE,SDEPT SELECT SNO,SNAME,SEX,AGE,SDEPT FROM S; FROM S; 21 (3) 查詢經(jīng)過計(jì)算的值查詢經(jīng)過計(jì)算的值 SELECTSELECT子句的子句的 不僅可以

20、是表中的屬性列,也可不僅可以是表中的屬性列,也可以是表達(dá)式。以是表達(dá)式。 例例4.24 4.24 查詢?nèi)w學(xué)生的姓名及其出生年份。查詢?nèi)w學(xué)生的姓名及其出生年份。 SELECT SNAME,2009-AGESELECT SNAME,2009-AGE FROM S; FROM S; 輸出結(jié)果:輸出結(jié)果: Sname Sname _ _ 李小勇李小勇 19891989 劉晨劉晨 19901990 王名王名 19911991 張立張立 1990 1990 222、選擇表中的若干元組、選擇表中的若干元組 消除取值重復(fù)的行消除取值重復(fù)的行 兩個(gè)本來并不完全相同的元組,投影到指定的某些列上后,可能變成兩個(gè)

21、本來并不完全相同的元組,投影到指定的某些列上后,可能變成相同的行了,可以用相同的行了,可以用DISTINCT取消它們。取消它們。 例例4.26 查詢選修了課程的學(xué)生學(xué)號(hào)。查詢選修了課程的學(xué)生學(xué)號(hào)。 SELECT SNO FROM SC; 該查詢結(jié)果里包含了許多重復(fù)的行。如果想去掉結(jié)果表中的重復(fù)行,該查詢結(jié)果里包含了許多重復(fù)的行。如果想去掉結(jié)果表中的重復(fù)行,必須指定必須指定DISTINCT關(guān)鍵詞:關(guān)鍵詞: SELECT DISTINCT SNO FROM SC; 23(1) SELECT Sno(1) SELECT Sno FROM SC; FROM SC;或或( (默認(rèn)默認(rèn) ALL)ALL)

22、SELECT ALL Sno SELECT ALL Sno FROM SC; FROM SC; 結(jié)果:結(jié)果: Sno Sno - - 95001 95001 95001 95001 95001 95001 95002 95002 95002 95002 (2) SELECT DISTINCT Sno(2) SELECT DISTINCT Sno FROM SC; FROM SC; 結(jié)果:結(jié)果: Sno Sno - - 95001 95001 95002 95002 24 查詢滿足條件的元組查詢滿足條件的元組查詢滿足指定條件的元組可以通過查詢滿足指定條件的元組可以通過WHERE子句實(shí)現(xiàn)。子句實(shí)現(xiàn)

23、。查查 詢?cè)?條條 件件謂謂 詞詞比較比較確定范圍確定范圍確定集合確定集合字符匹配字符匹配空空 值值多重條件(邏輯運(yùn)算)多重條件(邏輯運(yùn)算)= =, , =,=,!=!=,!,!=20 AND AGE =23;27確定集合確定集合 謂詞謂詞IN可以用來查找屬性值屬于指定集合的元組??梢杂脕聿檎覍傩灾祵儆谥付系脑M。 例例4.32 查詢計(jì)算機(jī)科學(xué)系(查詢計(jì)算機(jī)科學(xué)系(CS)、數(shù)學(xué)系()、數(shù)學(xué)系(MA)和信息系()和信息系(IS)學(xué))學(xué)生的姓名和性別。生的姓名和性別。 SELECT SNAME,SEX FROM S WHERE SDEPT IN(CS,MA,IS); 與與IN相對(duì)的謂詞是相對(duì)的

24、謂詞是NOT IN,用于查找屬性值不屬于指定集合的元組。,用于查找屬性值不屬于指定集合的元組。 例例4.33 查詢既不是計(jì)算機(jī)科學(xué)系、數(shù)學(xué)系,也不是信息系的學(xué)生的姓查詢既不是計(jì)算機(jī)科學(xué)系、數(shù)學(xué)系,也不是信息系的學(xué)生的姓名和性別。名和性別。 SELECT SNAME,SEX FROM S WHERE SDEPT NOT IN(CS,MA,IS); 28字符匹配謂詞字符匹配謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般語法格式如下:可以用來進(jìn)行字符串的匹配。其一般語法格式如下: NOT LIKE ESCAPE其含義是查找指定的屬性列值與其含義是查找指定的屬性列值與相匹配的元組。相匹配的元組??梢允且?/p>

25、個(gè)完整的字符串,也可以含有通配符可以是一個(gè)完整的字符串,也可以含有通配符%和和_。其中:。其中: %(百分號(hào))(百分號(hào))代表任意長(zhǎng)度(長(zhǎng)度可以為代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串。)的字符串。例如例如a%b表示以表示以a開頭,以開頭,以b結(jié)尾的任意長(zhǎng)度的字符串。如結(jié)尾的任意長(zhǎng)度的字符串。如acb,addgb,ab等都滿足該匹配串。等都滿足該匹配串。_(下劃線)(下劃線)代表任意單個(gè)字符。例如代表任意單個(gè)字符。例如a_b表示以表示以a開頭,以開頭,以b結(jié)尾的長(zhǎng)結(jié)尾的長(zhǎng)度為度為3的任意字符串。如的任意字符串。如acb,afb等都滿足該匹配串。等都滿足該匹配串。29例例4.34 查詢學(xué)號(hào)為查詢學(xué)號(hào)

26、為200915121的學(xué)生的詳細(xì)情況。的學(xué)生的詳細(xì)情況。 SELECT * FROM S WHERE SNO LIKE 200915121; 等價(jià)于:等價(jià)于: SELECT * FROM S WHERE SNO=200915121;如果如果LIKE后面的匹配串中不含通配符,則可以用后面的匹配串中不含通配符,則可以用=(等于)運(yùn)算符取代(等于)運(yùn)算符取代LIKE謂詞,用謂詞,用!=或或(不等于)運(yùn)算符取代(不等于)運(yùn)算符取代NOT LIKE謂詞。謂詞。例例4.35 查詢所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別。查詢所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT SNAME,SNO,SEX FROM S

27、 WHERE SNAME LIKE 劉劉%; 30 涉及空值的查詢例涉及空值的查詢例例例4.41 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績(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; /* 分?jǐn)?shù)分?jǐn)?shù)GRADE是空值是空值 */ 多重條件查詢多重條件查詢可用邏輯運(yùn)算符可用邏輯運(yùn)算符AND和和OR來聯(lián)結(jié)多個(gè)查詢條件。來聯(lián)結(jié)多個(gè)查詢條件。AND的優(yōu)先級(jí)高于的優(yōu)先級(jí)高于OR,但可以用括號(hào)改變優(yōu)

28、先級(jí)。,但可以用括號(hào)改變優(yōu)先級(jí)。例例4.43 查詢計(jì)算機(jī)科學(xué)系年齡在查詢計(jì)算機(jī)科學(xué)系年齡在20歲以下的學(xué)生姓名。歲以下的學(xué)生姓名。 SELECT SNAME FROM S WHERE SDEPT=CS AND AGE20; 313、ORDER BY子句(子句(對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序)使用使用ORDER BY子句子句v 可以按一個(gè)或多個(gè)屬性列排序可以按一個(gè)或多個(gè)屬性列排序v 升序:升序:ASC;降序:;降序:DESC;缺省值為升序;缺省值為升序當(dāng)排序列含空值時(shí)當(dāng)排序列含空值時(shí)vASC:排序列為空值的元組最后顯示:排序列為空值的元組最后顯示vDESC:排序列為空值的元組最先顯示:排序列為空值

29、的元組最先顯示32 例例4.44 查詢選修了查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)的降序排列。果按分?jǐn)?shù)的降序排列。 SELECT SNO,GRADE FROM SC WHERE CNO=3 ORDER BY GRADE DESC; Sno Grade - - 95010 95024 95007 92 95003 82 95010 82 95009 75 95014 61 95002 55查詢結(jié)果查詢結(jié)果33 聚合函數(shù)是涉及整個(gè)關(guān)系的另一類運(yùn)算操作聚合函數(shù)是涉及整個(gè)關(guān)系的另一類運(yùn)算操作, ,通過聚合函通過聚合函數(shù),可以把某一列中的值形成單個(gè)值。數(shù)

30、,可以把某一列中的值形成單個(gè)值。 5類主要聚合函數(shù):類主要聚合函數(shù):n計(jì)數(shù)計(jì)數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )n計(jì)算總和計(jì)算總和SUM(DISTINCT|ALL )n 計(jì)算平均值計(jì)算平均值A(chǔ)VG(DISTINCT|ALL )4.3.3 聚合函數(shù)聚合函數(shù)34n求最大值求最大值MAX(DISTINCT|ALL )n求最小值求最小值 MIN(DISTINCT|ALL )DISTINCT短語:在計(jì)算時(shí)要取消指定列中的重復(fù)值短語:在計(jì)算時(shí)要取消指定列中的重復(fù)值A(chǔ)LL短語:不取消重復(fù)值短語:不取消重復(fù)值A(chǔ)LL為缺省值為缺省值35例例4.47 查詢選修了課程

31、的學(xué)生人數(shù)。查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT SNO) FROM SC;學(xué)生每選修一門課,在學(xué)生每選修一門課,在SC中都有一條相應(yīng)的記錄。一個(gè)學(xué)生要選修多中都有一條相應(yīng)的記錄。一個(gè)學(xué)生要選修多門課程,為避免重復(fù)計(jì)算學(xué)生人數(shù),必須在門課程,為避免重復(fù)計(jì)算學(xué)生人數(shù),必須在COUNT函數(shù)中用函數(shù)中用DISTINCT短短語。語。例例4.48 計(jì)算選修計(jì)算選修l號(hào)課程的學(xué)生平均成績(jī)。號(hào)課程的學(xué)生平均成績(jī)。 SELECT AVG(GRADE) FROM SC WHERE CNO=1;例例4.49 查詢選修查詢選修l號(hào)課程的學(xué)生最高分?jǐn)?shù)。號(hào)課程的學(xué)生最高分?jǐn)?shù)。 SELECT MAX(GRADE) FROM SC WHER CNO=1; 36使用使用GROUP BY子句分組子句分組 細(xì)化集函數(shù)的作用對(duì)象細(xì)化集函數(shù)的作用對(duì)象n 未對(duì)查詢結(jié)果分組,聚合函數(shù)將作用于整個(gè)查詢結(jié)果未對(duì)查詢結(jié)果分組,聚合函數(shù)將作用于整個(gè)查詢結(jié)果n 對(duì)查詢結(jié)果分組后,聚合函數(shù)將分別作用于每個(gè)組對(duì)查詢結(jié)果分組后,聚合函數(shù)將分別作用于每個(gè)組 4.3.4 對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組 37

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論