SQL語言(超全)_第1頁(yè)
SQL語言(超全)_第2頁(yè)
SQL語言(超全)_第3頁(yè)
SQL語言(超全)_第4頁(yè)
SQL語言(超全)_第5頁(yè)
已閱讀5頁(yè),還剩168頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.1 SQL概述概述3.2 數(shù)據(jù)定義數(shù)據(jù)定義3.3 查詢查詢3.4 數(shù)據(jù)更新數(shù)據(jù)更新3.5 視圖視圖3.6 數(shù)據(jù)控制數(shù)據(jù)控制3.7 嵌入式嵌入式SQL(不講不講)第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.1 SQL概述概述1. SQL的特點(diǎn)的特點(diǎn)2. SQL的核心功能的核心功能3. SQL的基本概念的基本概念SQL1. 名稱由來:名稱由來:Structured Query Language2. 特點(diǎn):特點(diǎn):1. 混合型:混合型: 關(guān)系代數(shù)關(guān)系代數(shù)、關(guān)系演算關(guān)系演算2. 綜合統(tǒng)一:綜合統(tǒng)一: 含含DDL、DML、DCL3.非

2、過程化:非過程化: 只需提出只需提出“做什么做什么”,數(shù)據(jù)獨(dú)立性高數(shù)據(jù)獨(dú)立性高4.集合操作:集合操作: 對(duì)象和結(jié)果都是元組集合對(duì)象和結(jié)果都是元組集合5.多種多種使用方式:使用方式:獨(dú)立使用獨(dú)立使用: 自含式自含式嵌入高級(jí)語言嵌入高級(jí)語言:嵌入式嵌入式3. 版本版本:74年發(fā)明,年發(fā)明,86年年 ANSI公布公布SQL-86,ISO通過通過,ANSI: SQL-89、SQL-92、SQL3。6.語言簡(jiǎn)潔:語言簡(jiǎn)潔: 接近英語口語,易學(xué)易用。接近英語口語,易學(xué)易用。1. SQL的特點(diǎn)的特點(diǎn)第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.1 SQL概述概述1. SQL的特點(diǎn)的特點(diǎn)2. SQ

3、L的核心功能的核心功能3. SQL的基本概念的基本概念2. SQL的核心功能的核心功能SQL功能功能 命命 令令 動(dòng)動(dòng) 詞詞 數(shù)據(jù)查詢數(shù)據(jù)查詢 SELECT數(shù)據(jù)定義數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制數(shù)據(jù)控制GRANT,REVOKE第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. SQL的特點(diǎn)的特點(diǎn)2. SQL的核心功能的核心功能3. SQL的基本概念的基本概念3.1 SQL概述概述3. SQL的基本概念的基本概念基本表基本表:對(duì)應(yīng)于:對(duì)應(yīng)于模式模式。特點(diǎn):。特點(diǎn): 一個(gè)基本關(guān)系一個(gè)基本關(guān)系一個(gè)基本表;一個(gè)基本表;

4、 多個(gè)基本表多個(gè)基本表一個(gè)存儲(chǔ)文件;一個(gè)存儲(chǔ)文件; 一個(gè)基本表可帶多個(gè)索引,放在存儲(chǔ)文件中。一個(gè)基本表可帶多個(gè)索引,放在存儲(chǔ)文件中。存儲(chǔ)文件存儲(chǔ)文件:邏輯結(jié)構(gòu):邏輯結(jié)構(gòu)內(nèi)模式內(nèi)模式,物理結(jié)構(gòu)任意。,物理結(jié)構(gòu)任意。視圖視圖(view):對(duì)應(yīng)于對(duì)應(yīng)于外模式外模式。是從基本表或其他視圖中導(dǎo)出的是從基本表或其他視圖中導(dǎo)出的虛表虛表,不存儲(chǔ)。,不存儲(chǔ)?;颈砗鸵晥D都是基本表和視圖都是關(guān)系關(guān)系,都用,都用SQL語言進(jìn)行操作。語言進(jìn)行操作。SQL對(duì)數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)三級(jí)三級(jí)模式模式結(jié)構(gòu)的支持結(jié)構(gòu)的支持:視圖視圖1視圖視圖2基本表基本表2存儲(chǔ)文件存儲(chǔ)文件1SQL模式模式內(nèi)模式內(nèi)模式基本表基本表1基本表基本表3存儲(chǔ)

5、文件存儲(chǔ)文件2外模式外模式第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.1 SQL概述概述3.2 數(shù)據(jù)定義數(shù)據(jù)定義3.3 查詢查詢3.4 數(shù)據(jù)更新數(shù)據(jù)更新3.5 視圖視圖3.6 數(shù)據(jù)控制數(shù)據(jù)控制3.7 嵌入式嵌入式SQL第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.2 數(shù)據(jù)定義數(shù)據(jù)定義1. 數(shù)據(jù)定義概述數(shù)據(jù)定義概述 2. 定義、刪除與修改基本表定義、刪除與修改基本表3. 建立與刪除索引建立與刪除索引1. 數(shù)據(jù)定義概述數(shù)據(jù)定義概述 創(chuàng)建創(chuàng)建和和刪除刪除: 基本表、視圖、索引?;颈?、視圖、索引。修改修改基本表。無修改基本表。無修改索引索引、視圖視圖的操作的操作: 刪除重建

6、。刪除重建。操作操作對(duì)象對(duì)象 操作方式操作方式創(chuàng)建創(chuàng)建刪除刪除修改修改表表CREATE TABLEDROP TABLEALTER TABLE視圖視圖 CREATE VIEWDROP VIEW索引索引 CREATE INDEXDROP INDEX本節(jié)只介紹本節(jié)只介紹基本表基本表和和索引索引,視圖視圖在在3.5節(jié)介紹。節(jié)介紹。第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.2 數(shù)據(jù)定義數(shù)據(jù)定義1. 數(shù)據(jù)定義概述數(shù)據(jù)定義概述 2. 定義、刪除與修改基本表定義、刪除與修改基本表3. 建立與刪除索引建立與刪除索引1. 定義基本表定義基本表 一般格式:一般格式: CREATE TABLE ( 列

7、級(jí)完整性約束列級(jí)完整性約束 , 列級(jí)完整性約束列級(jí)完整性約束. ,) ;:基本表的名字,:基本表的名字,:基本表所含的屬性基本表所含的屬性(列列)的名字,一個(gè)或多個(gè)。的名字,一個(gè)或多個(gè)。列級(jí)完整性約束列級(jí)完整性約束:規(guī)定列要滿足的一些約束條件:規(guī)定列要滿足的一些約束條件(僅僅涉及一個(gè)涉及一個(gè)屬性,如:屬性,如:NOT NULL、UNIQUE、單屬性單屬性主碼、外碼等主碼、外碼等)表級(jí)完整性約束條件表級(jí)完整性約束條件:規(guī)定表要滿足的一些約束條件:規(guī)定表要滿足的一些約束條件(涉及一涉及一個(gè)或多個(gè)屬性,如:個(gè)或多個(gè)屬性,如:?jiǎn)螌傩曰蚪M合單屬性或組合的主碼、外碼等的主碼、外碼等) :指明屬性的:指明屬

8、性的數(shù)據(jù)類型數(shù)據(jù)類型及及長(zhǎng)度長(zhǎng)度。不同。不同DBMS支持支持的數(shù)據(jù)類型不完全相同的數(shù)據(jù)類型不完全相同(在實(shí)驗(yàn)課中介紹在實(shí)驗(yàn)課中介紹)。;為語句結(jié)束標(biāo)志,在為語句結(jié)束標(biāo)志,在SQL Server中可省略。中可省略。 2. 定義、刪除與修改基本表定義、刪除與修改基本表 CREATE TABLE Student ( Sno CHAR(5) CONSTRAINT PK_Stu PRIMARY KEY, Sname CHAR(20) CONSTRAINT UQ1 UNIQUE, Ssex CHAR(2), Sage INT NOT NULL CONSTRAINT UQ2 UNIQUE CONSTRAIN

9、T CK1 CHECK(Sage=15 AND Sage=35), Sdept CHAR(15), CHECK(Ssex IN (男男,女女) AND Sno LIKE 95_ ) )說明:說明: 1) CONSTRAINT用來為約束用來為約束取名字取名字,如果,如果不取名不取名則不用則不用 2) 一列可以含多個(gè)約束,其間用空格分隔一列可以含多個(gè)約束,其間用空格分隔 3) 在在SQL Server中中, NOT NULL不是對(duì)象,可取名但無效。不是對(duì)象,可取名但無效。 4) 列級(jí)列級(jí)CHECK約束約束中的中的只能訪問只能訪問本列本列 5) 表級(jí)表級(jí)CHECK約束約束中的中的可訪問可訪問本表的所

10、有列本表的所有列例例1 建立建立: Student(Sno, Sname, Ssex, Sage, Sdept) Course(Cno, Cname, Cpno,Ccredit) SC(Sno, Cno, Grade) 例:創(chuàng)建基本表例:創(chuàng)建基本表CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(20), Cpno CHAR(4), Ccredit INT )CREATE TABLE SC ( Sno CHAR(5) FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(4) FOREIGN

11、 KEY REFERENCES Course(Cno), Grade INT, PRIMARY KEY (Sno, Cno) )要先建要先建Student和和Course, 后建后建SC,為什么?為什么?例例1 建立建立: Student(Sno, Sname, Ssex, Sage, Sdept) Course(Cno, Cname, Cpno,Ccredit) SC(Sno, Cno, Grade) 例:創(chuàng)建基本表例:創(chuàng)建基本表ALTER TABLE ADD 完整性約束完整性約束 DROP COLUMN ALTER COLUMN NOT NULL DROP CONSTRAINT : 指定要

12、修改的基本表;指定要修改的基本表;ADD子句子句: : 用于增加新列和新的完整性約束;用于增加新列和新的完整性約束;DROP COLUMN子句子句: : 用于刪除指定列用于刪除指定列ALTER COLUMN 子句子句:用于修改原有的列定義:用于修改原有的列定義DROP CONSTRAINT 子句子句:用于刪除完整性約束;:用于刪除完整性約束;2. 修改基本表修改基本表 一般格式為一般格式為( (與書上格式有區(qū)別與書上格式有區(qū)別) ):2. 定義、刪除與修改基本表定義、刪除與修改基本表 例:修改基本表例:修改基本表例例2 向向Student表增加表增加Scity列。列。 ALTER TABLE

13、Student ADD Scity CHAR(20)CONSTRAINT CK3 CHECK( Scity IN (杭州杭州, 寧波寧波) ) 如果表中已有數(shù)據(jù),則如果表中已有數(shù)據(jù),則新增加的列一律為空值。新增加的列一律為空值。例例3 將年齡的數(shù)據(jù)類型改為將年齡的數(shù)據(jù)類型改為SMALLINT并允許取空值并允許取空值 。 ALTER TABLE Student ALTER COLUMN Sage SMALLINT NULL1)若有若有約束對(duì)象約束對(duì)象訪問該列,則不允許修改,除非刪除這些對(duì)象訪問該列,則不允許修改,除非刪除這些對(duì)象2)修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù)。修改原有的列定義有可能會(huì)破

14、壞已有數(shù)據(jù)。例例4 刪除刪除Scity列列。ALTER TABLE Student DROP COLUMN Scity若有若有約束對(duì)象約束對(duì)象訪問該列,則不允許刪除。訪問該列,則不允許刪除。例例5 先先刪除刪除約束對(duì)象約束對(duì)象CK1、CK3、UQ2, 然后執(zhí)行然后執(zhí)行例例3和和例例4。 ALTER TABLE Student DROP CK1, CK3, UQ2DROP TABLE , 例例5 刪除刪除SC表,表,Couser表和表和Student表表DROP TABLE SC , Course, Student1) SC一定要寫在一定要寫在Course和和Student前面,前面,為什么?為

15、什么? 2) 基本表定義一旦刪除,表中的數(shù)據(jù)、索引都將自動(dòng)被刪除基本表定義一旦刪除,表中的數(shù)據(jù)、索引都將自動(dòng)被刪除掉。執(zhí)行刪除操作一定要掉。執(zhí)行刪除操作一定要格外小心格外小心。3. 刪除基本表刪除基本表 一般格式為:一般格式為:2. 定義、刪除與修改基本表定義、刪除與修改基本表 第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.2 數(shù)據(jù)定義數(shù)據(jù)定義1. 數(shù)據(jù)定義概述數(shù)據(jù)定義概述 2. 定義、刪除與修改基本表定義、刪除與修改基本表3. 建立與刪除索引建立與刪除索引3. 建立與刪除索引建立與刪除索引 索引是加快查詢速度的有效手段:索引是加快查詢速度的有效手段:無索引無索引:在表:在表R中查

16、找中查找A屬性值為屬性值為ai的元組,的元組,順序查找。順序查找。比較次數(shù)為比較次數(shù)為 |R|/2有索引:有索引:在索引順序表中在索引順序表中二分查找二分查找ai,Aait索引項(xiàng)索引項(xiàng)記錄位置記錄位置aiLoc若若|R|232=4294967296,無索引要比較無索引要比較2147483647次次有索引只需比較有索引只需比較32次。次。根據(jù)記錄位置找到所需記錄。根據(jù)記錄位置找到所需記錄。比較次數(shù)為比較次數(shù)為log2(|R|)。按索按索引項(xiàng)引項(xiàng)的值的值升序升序或或降降序序可以在一個(gè)基本表上建立一個(gè)或多個(gè)索引??梢栽谝粋€(gè)基本表上建立一個(gè)或多個(gè)索引。1.建立索引建立索引 一般格式為:一般格式為: C

17、REATE UNIQUE CLUSTER INDEX ON ( , . ) :指定要建索引的基本表。指定要建索引的基本表。 :指定要建索引的指定要建索引的列名。列名。索引可以建在一列或多列索引可以建在一列或多列上,各列名之間用逗號(hào)分隔。上,各列名之間用逗號(hào)分隔。 :每個(gè)每個(gè)后后可可指定索引值的排列次序,包括指定索引值的排列次序,包括ASC(升序)和升序)和DESC(降序)兩種,缺省值為降序)兩種,缺省值為ASC。 UNIQUE:表明每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。表明每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。 CLUSTER:建立建立聚簇索引聚簇索引:表中的記錄按索引項(xiàng)的順序存:表中的記錄按索引項(xiàng)的

18、順序存放。一個(gè)基本表最多只能建立一個(gè)聚簇索引。放。一個(gè)基本表最多只能建立一個(gè)聚簇索引。聚簇索引列數(shù)據(jù)的更新會(huì)導(dǎo)致表中記錄的物理移動(dòng),代價(jià)聚簇索引列數(shù)據(jù)的更新會(huì)導(dǎo)致表中記錄的物理移動(dòng),代價(jià)較大,因此經(jīng)常更新的列不宜建聚簇索引。較大,因此經(jīng)常更新的列不宜建聚簇索引。 3. 建立與刪除索引建立與刪除索引 例:建立索引例:建立索引 例例6 為為Student、Course、SC建立索引。建立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno) /*默認(rèn)升序默認(rèn)升序*/CREATE UNIQUE INDEX Coucno ON Course(Cno) /*默認(rèn)升序

19、默認(rèn)升序*/CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC) DROP INDEX ., .例例7 刪除索引刪除索引Stusno、 Coucno、 SCno DROP INDEX Student.Stusno,Course.Coucno,SC.SCno1)索引一經(jīng)建立,就由索引一經(jīng)建立,就由DBMS使用和維護(hù)它使用和維護(hù)它,不需用戶干預(yù)不需用戶干預(yù);2)如果數(shù)據(jù)如果數(shù)據(jù)增刪改頻繁增刪改頻繁,系統(tǒng)會(huì)花費(fèi)許多時(shí)間來維護(hù)索引,系統(tǒng)會(huì)花費(fèi)許多時(shí)間來維護(hù)索引, 這時(shí),可以這時(shí),可以刪除刪除一些不必要的索引。一些不必要的索引。2. 刪除索引刪除索引 一般格

20、式為:一般格式為:3. 建立與刪除索引建立與刪除索引 第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL3.1 SQL概述概述3.2 數(shù)據(jù)定義數(shù)據(jù)定義3.3 查詢查詢3.4 數(shù)據(jù)更新數(shù)據(jù)更新3.5 視圖視圖3.6 數(shù)據(jù)控制數(shù)據(jù)控制3.7 嵌入式嵌入式SQL第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢 ( )1. 查詢概述查詢概述 SQL用用SELECT語句進(jìn)行查詢,其一般格式為(含若干語句進(jìn)行查詢,其一般格式為(含若干子句子句):):SELECT ALL|

21、DISTINCT ,. FROM , . WHERE GROUP BY HAVING ORDER BY ASC|DESC 含義含義: ( )根據(jù)根據(jù)WHERE子句的條件表達(dá)式,子句的條件表達(dá)式,從從FROM子句的基本表或視圖的笛卡兒積中,子句的基本表或視圖的笛卡兒積中,找出滿足條件的元組,找出滿足條件的元組,按按SELECT子句的目標(biāo)列表達(dá)式,子句的目標(biāo)列表達(dá)式,進(jìn)行投影,進(jìn)行投影,形成結(jié)果表。形成結(jié)果表。FrsX1, X2,X1X21. 查詢概述查詢概述如果有如果有GROUP BY子句,則:子句,則: 最后將這條最后將這條“記錄記錄”投影到目標(biāo)列,產(chǎn)生結(jié)果表的投影到目標(biāo)列,產(chǎn)生結(jié)果表的一條記

22、錄。一條記錄。演示演示 然后將然后將(聚聚)集函數(shù)集函數(shù)作用到組,得到一條作用到組,得到一條“記錄記錄”,演示,演示 先將選擇結(jié)果先將選擇結(jié)果F(r s),按按的值分的值分組組(值相等的元組分為一組值相等的元組分為一組),演示,演示如果有如果有ORDER BY,則結(jié)果表還要按則結(jié)果表還要按的值升序或的值升序或降序排列。降序排列。如果如果GROUP BY帶帶HAVING,則只輸出滿足則只輸出滿足HAVING條件的組條件的組SQL用用SELECT語句進(jìn)行查詢,其一般格式為(含若干語句進(jìn)行查詢,其一般格式為(含若干子句子句):):SELECT ALL|DISTINCT ,. FROM , . WHE

23、RE GROUP BY HAVING ORDER BY ASC|DESC 含義含義:第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列選擇列:指定列指定列,所有列,計(jì)算列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值判斷,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使

24、用使用HAVING篩選組篩選組指僅涉及指僅涉及一個(gè)表一個(gè)表的查詢,包括:的查詢,包括:選擇列選擇列、選擇行選擇行。是。是最簡(jiǎn)單最簡(jiǎn)單的查詢。的查詢。2. 單表查詢單表查詢 選擇表中的部分或全部列,是選擇表中的部分或全部列,是投影投影。 1) 查詢指定列查詢指定列 例例1 查詢?nèi)w學(xué)生的查詢?nèi)w學(xué)生的學(xué)號(hào)學(xué)號(hào)與與姓名姓名。 SELECT Sno, Sname FROM Student 結(jié)果表中列的順序可以和原表不同結(jié)果表中列的順序可以和原表不同: 例例2 查詢?nèi)w學(xué)生的查詢?nèi)w學(xué)生的姓名姓名、學(xué)號(hào)學(xué)號(hào)、所在系所在系。 SELECT Sname, Sno, Sdept FROM Student(1

25、)選擇列選擇列:第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列選擇列:指定列,:指定列,所有列所有列,計(jì)算列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值判斷,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組 a) 在在SELECT子句中子句中

26、列出所有屬性列出所有屬性; b) 若結(jié)果表若結(jié)果表列順序列順序與原表與原表相同相同,可將,可將 指定為指定為* 例例3 查詢?nèi)w學(xué)生的詳細(xì)記錄查詢?nèi)w學(xué)生的詳細(xì)記錄 SELECT * FROM Student 無條件地查詢表的全部信息:無條件地查詢表的全部信息:全表查詢?nèi)聿樵?,最?jiǎn)單。,最簡(jiǎn)單。 2) 查詢所有列。查詢所有列。兩種方法:兩種方法:2. 單表查詢單表查詢第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列選擇列:指定列,所有列,:指定列,所有列,

27、計(jì)算列計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值判斷,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組可以是可以是算術(shù)表達(dá)式算術(shù)表達(dá)式: 例例4 查全體學(xué)生的查全體學(xué)生的姓名姓名及其及其出生年份出生年份 SELECT Sname, YEAR( GETDATE( ) ) - Sage FROM Student 用當(dāng)前年份減去學(xué)生的年齡,得到學(xué)生的出生年份。用當(dāng)前年份減去學(xué)生的年齡,

28、得到學(xué)生的出生年份。輸出的結(jié)果為:輸出的結(jié)果為: Sname (無列名無列名) 李勇李勇 1987 劉晨劉晨 1988 王名王名 1989張立張立 1988 3) 查詢計(jì)算列:查詢計(jì)算列:表中表中不存在不存在,是,是計(jì)算而得計(jì)算而得的列的列也可以是也可以是字符串常量字符串常量、函數(shù)函數(shù)等等2. 單表查詢單表查詢 SELECT Sname, Birth In, 2007-Sage, LOWER(Sdept) FROM Student 結(jié)果為:結(jié)果為: Sname (無列名無列名) (無列名無列名) (無列名無列名) 李勇李勇 Birth In 1987 cs 劉晨劉晨 Birth In 1988

29、 is . 可以為結(jié)果表的列指定可以為結(jié)果表的列指定別名別名,例如,例如: : SELECT Sname AS NAME, Birth In BIRTH, 2007-Sage AS Year of Birth, LOWER(Sdept) DEPARTMENT FROM Student 結(jié)果為:結(jié)果為: NAME BIRTH Year of Birth DEPARTMENT 李勇李勇 Birth In 1987 cs . 思考:思考:要將要將2007-Sage 列的別名改為列的別名改為Births Year, 應(yīng)如何寫?應(yīng)如何寫?例例5 查全體學(xué)生的查全體學(xué)生的姓名姓名、出生年份出生年份和和所在

30、系所在系,要求用,要求用小寫小寫字母字母表示所在系名。表示所在系名。第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值判斷,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVI

31、NG篩選組篩選組1) 消除重復(fù)行消除重復(fù)行: 例例6 查選修了課程的學(xué)生的學(xué)號(hào)。查選修了課程的學(xué)生的學(xué)號(hào)。 SELECT Sno FROM SC假設(shè)假設(shè)SC表中有下列數(shù)據(jù):表中有下列數(shù)據(jù): Sno Cno Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 選擇部分元組的選擇部分元組的部分部分列或列或全部全部列。列。 需指定需指定DISTINCT短語、短語、WHERE子句。子句。2. 單表查詢單表查詢用用DISTINCT短語可消除重復(fù):短語可消除重復(fù):SELECT DISTINCT Sno FROM SC執(zhí)行結(jié)果為:執(zhí)行結(jié)果

32、為: Sno 95001 95001 95001 95002 95002結(jié)果為:結(jié)果為: Sno 95001 95002(2)選擇行選擇行:1) 消除重復(fù)行消除重復(fù)行: 例例6 查選修了課程的學(xué)生的學(xué)號(hào)。查選修了課程的學(xué)生的學(xué)號(hào)。 SELECT DISTINCT Sno FROM SC 選擇部分元組的選擇部分元組的部分部分列或列或全部全部列。列。 需指定需指定DISTINCT短語、短語、WHERE子句。子句。2. 單表查詢單表查詢注意:注意:DISTINCT屬于整個(gè)屬于整個(gè)SELECT子句子句, 必須必須緊跟緊跟SELECT 例如以下例如以下SELECT語句是語句是錯(cuò)誤的錯(cuò)誤的: SELECT

33、 Ssex, DISTINCT Sname FROM Student正確的語句為:正確的語句為: SELECT DISTINCT Ssex, Sname FROM Student(2)選擇行選擇行:第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值判斷

34、,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組 2)查詢滿足條件的行:查詢滿足條件的行:通過通過WHERE子句實(shí)現(xiàn)。子句實(shí)現(xiàn)。查詢條件查詢條件運(yùn)算運(yùn)算比較比較大小大小=, , =, =, !=, , !, !確定范圍確定范圍BETWEEN AND, NOT BETWEEN AND確定集合確定集合IN, NOT IN字符匹配字符匹配LIKE, NOT LIKE空值空值判斷判斷IS NULL, IS NOT NULL組合條件組合條件NOT, AND, OR下面逐一舉例說明。下面逐一舉例說明。 WHE

35、RE子句中常用的子句中常用的查詢條件查詢條件為:為:第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小比較大小,確定范圍,確定集合,確定范圍,確定集合字符匹配,空值判斷,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組

36、 例例7 查查CS系全體學(xué)生的系全體學(xué)生的名名單。單。 SELECT Sname FROM Student WHERE Sdept= CS 例例8 查年齡在查年齡在20歲以下的學(xué)生歲以下的學(xué)生姓名姓名及其及其年齡年齡。 SELECT Sname, Sage FROM Student WHERE Sage , =, =, !=, , !, != 20例例9 查至少有一門課不及格的學(xué)生查至少有一門課不及格的學(xué)生學(xué)號(hào)學(xué)號(hào)。 SELECT DISTINCT Sno FROM SC WHERE Grade =L AND X=HX NOT BETWEEN L AND H 等價(jià)于等價(jià)于: XH確定范圍:確定

37、范圍: BETWEEN AND 第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小,確定范圍,比較大小,確定范圍,確定集合確定集合字符匹配,空值判斷,組合條件字符匹配,空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組例例12 查查IS系

38、、系、 MA系或系或CS系的學(xué)生系的學(xué)生姓名姓名和和性別性別。 SELECT Sname, Ssex FROM Student WHERE Sdept IN (IS, MA, CS) /*用用()表示集合表示集合*/ NOT IN 查找屬性值查找屬性值不屬于不屬于指定集合的元組指定集合的元組例例13 查既不是查既不是IS系和系和MA系,也不是系,也不是CS系的學(xué)生系的學(xué)生姓名姓名和和性別性別 SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN (IS, MA, CS) 顯然:顯然:X IN (e1, , ek) 等價(jià)于等價(jià)于: X=e1 ORO

39、R X=ekX NOT IN (e1, , ek)等價(jià)于等價(jià)于: Xe1 ANDAND X ek確定集合確定集合: IN 查找屬性值查找屬性值屬于屬于指定集合的元組指定集合的元組第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配字符匹配,空值判斷,組合條件,

40、空值判斷,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組 NOT LIKE ESCAPE 含義:含義:若若與與匹配匹配則為真,否則為假。則為真,否則為假。:由普通字符串和:由普通字符串和通配符通配符(%和和_)構(gòu)成:構(gòu)成: %:代表任意字符串。如:代表任意字符串。如a%b:a開頭開頭b結(jié)尾,長(zhǎng)度結(jié)尾,長(zhǎng)度=2 _:代表任意一個(gè)字符。如:代表任意一個(gè)字符。如a_b:a開頭開頭b結(jié)尾結(jié)尾, 長(zhǎng)度為長(zhǎng)度為3例例14 查所有姓查所有姓劉劉的學(xué)生的學(xué)生姓名姓名、學(xué)號(hào)學(xué)號(hào)和和性別性別。 SELECT Sname, Sno, Ssex F

41、ROM Student WHERE Sname LIKE 劉劉% 例例15 查姓查姓“歐陽歐陽”且全名為且全名為3個(gè)漢字的學(xué)生姓名。個(gè)漢字的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽歐陽_注意注意:在支持中文的:在支持中文的DBMS中一個(gè)漢字為一個(gè)字符。中一個(gè)漢字為一個(gè)字符。例例16 查名字中第查名字中第2個(gè)字為個(gè)字為“陽陽”的學(xué)生的姓名和學(xué)號(hào)。的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname, Sno FROM Student WHERE Sname LIKE _陽陽%字符串匹配字符串匹配 :用用LIKE運(yùn)算符實(shí)現(xiàn),格式為:運(yùn)算符實(shí)現(xiàn)

42、,格式為: SELECT Sname , Sno, Ssex FROM Student WHERE Sname NOT LIKE 劉劉%若需要匹配若需要匹配%或或_本身本身,就要用就要用ESCAPE對(duì)對(duì)通配符通配符進(jìn)行進(jìn)行轉(zhuǎn)義轉(zhuǎn)義, 即將匹配串中的即將匹配串中的%或或_轉(zhuǎn)義為普通字符。轉(zhuǎn)義為普通字符。例例18 查查DB_ Design課程的課程號(hào)和學(xué)分。課程的課程號(hào)和學(xué)分。 SELECT Cno, Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ESCAPE 表示表示 為換碼字符,這樣緊跟在為換碼字符,這樣緊跟在 后面的字符后面的字符

43、“_”不再是通配符,被轉(zhuǎn)義為普通的不再是通配符,被轉(zhuǎn)義為普通的“_”字符。字符。 例例19 查以查以“DB_”開頭,倒數(shù)第三個(gè)字符為開頭,倒數(shù)第三個(gè)字符為i的課程信息。的課程信息。 SELECT * FROM Course WHERE Cname LIKE DB_%i _ _ ESCAPE 注意:注意:若匹配串中不含若匹配串中不含%或或_, 則:則: X LIKE Pat 等價(jià)于:等價(jià)于: X Pat X NOT LIKE Pat 等價(jià)于:等價(jià)于: X Pat例例17 查所有不姓劉的學(xué)生姓名。查所有不姓劉的學(xué)生姓名。第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2

44、. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,字符匹配,空值判斷空值判斷,組合條件,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組例例20 查查成績(jī)?yōu)榭粘煽?jī)?yōu)榭盏倪x課記錄中的的選課記錄中的學(xué)號(hào)學(xué)號(hào)和和課程號(hào)課程號(hào)。 SELECT Sno, Cno FROM S

45、C WHERE Grade IS NULL 注意注意:IS不能用等號(hào)代替。不能用等號(hào)代替。例例21 查查有成績(jī)有成績(jī)的選課記錄中的的選課記錄中的學(xué)號(hào)學(xué)號(hào)和和課程號(hào)課程號(hào)。 SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL 注意:注意: X IS NOT NULL等價(jià)于等價(jià)于: NOT X IS NULL空值判斷空值判斷 :IS NULL、IS NOT NULL第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定

46、列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值,字符匹配,空值,組合條件組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組例例22 查詢查詢CS系年齡在系年齡在20歲以下的學(xué)生姓名。歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept=CS AND Sage20組合條件查詢組合條件查詢:用:用NOT、AND、OR和和括號(hào)括號(hào)連接多

47、個(gè)連接多個(gè)簡(jiǎn)單查詢條件簡(jiǎn)單查詢條件,形成一個(gè),形成一個(gè)復(fù)雜查詢條件復(fù)雜查詢條件。例例12 查查IS系、系、 MA系或系或CS系的學(xué)生姓名和性別。系的學(xué)生姓名和性別。 SELECT Sname, Ssex FROM Student WHERE Sdept IN (IS, MA, CS)IN運(yùn)算實(shí)際上是多個(gè)運(yùn)算實(shí)際上是多個(gè)OR運(yùn)算的縮寫,因此例運(yùn)算的縮寫,因此例12中的查中的查詢?cè)?也可以用也可以用OR運(yùn)算寫成:運(yùn)算寫成: SELECT Sname, Ssex FROM Student WHERE Sdept=IS OR Sdept=MA OR Sdept=CS 第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系

48、數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值,組合條件字符匹配,空值,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組例例23 查詢選修了查詢選修了3號(hào)課程的學(xué)號(hào)及成績(jī),按成績(jī)降序排列。號(hào)課程的學(xué)號(hào)及成績(jī),按成績(jī)

49、降序排列。 SELECT Sno, Grade FROM SC WHERE Cno=3 ORDER BY Grade DESC例例24 查詢?nèi)w學(xué)生情況,按所在系升序排列,對(duì)同一系查詢?nèi)w學(xué)生情況,按所在系升序排列,對(duì)同一系的學(xué)生按年齡降序排列。的學(xué)生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept, Sage DESC(3)對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序:用:用ORDER BY指定按指定按某些列某些列升序升序(ASC)或降序或降序(DESC) ,其中其中ASC為缺省值。為缺省值。 第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢

50、概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值,組合條件字符匹配,空值,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組COUNT(DISTINCT *) 統(tǒng)計(jì)元組個(gè)數(shù)統(tǒng)計(jì)元組個(gè)數(shù) COUNT(DISTINCT ) 統(tǒng)計(jì)列值的個(gè)數(shù)統(tǒng)計(jì)列值的個(gè)數(shù) SUM

51、(DISTINCT ) 計(jì)算計(jì)算數(shù)值型數(shù)值型列的總和列的總和 AVG(DISTINCT ) 計(jì)算計(jì)算數(shù)值型數(shù)值型列的平均值列的平均值 MAX(DISTINCT ) 求列的最大值求列的最大值 MIN(DISTINCT ) 求列的最小值求列的最小值如果指定如果指定DISTINCT,則在計(jì)算時(shí)要取消重復(fù)值。則在計(jì)算時(shí)要取消重復(fù)值。例例25 查詢學(xué)生總?cè)藬?shù)。查詢學(xué)生總?cè)藬?shù)。 SELECT COUNT(*) FROM Student例例26 查詢選修了課程的學(xué)生人數(shù)。查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC例例27 計(jì)算計(jì)算1號(hào)課程的平均成績(jī)。號(hào)課

52、程的平均成績(jī)。 SELECT AVG(Grade) FROM SC WHERE Cno=1例例28 查詢查詢1號(hào)課程的最高分?jǐn)?shù)。號(hào)課程的最高分?jǐn)?shù)。 SELECT MAX(Grade) FROM SC WHERE Cno=1(4)使用集函數(shù)使用集函數(shù):SQL用用集函數(shù)集函數(shù)進(jìn)行統(tǒng)計(jì)查詢,包括:進(jìn)行統(tǒng)計(jì)查詢,包括:第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行

53、。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值,組合條件字符匹配,空值,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組查詢結(jié)果為:查詢結(jié)果為: Cno (無列名無列名) 1 1 2 2 3 2思考:思考:下列語句正確嗎?為什么?下列語句正確嗎?為什么? SELECT Cno, Sno FROM SC GROUP BY Cno(5)對(duì)查詢結(jié)果分組:對(duì)查詢結(jié)果分組: 用用GROUP BY子句按列值相等的原子句按列值相等的原則對(duì)查詢結(jié)果進(jìn)行分組。則對(duì)查詢結(jié)果進(jìn)行分組。

54、例例29 查詢各門課程的查詢各門課程的課程號(hào)課程號(hào)及相應(yīng)的及相應(yīng)的選課人數(shù)選課人數(shù)。SELECT Cno, Sno FROM SCGROUP BY Cno中間結(jié)果中間結(jié)果Cno相同的元組分為一組相同的元組分為一組COUNT( )對(duì)每一組作用集函數(shù)對(duì)每一組作用集函數(shù)COUNT,求得選課人數(shù)。求得選課人數(shù)。CnoSno122339500195001950029500195002第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢選擇列:指定列,所有列,計(jì)算列選擇列:指定列

55、,所有列,計(jì)算列選擇行選擇行消除重復(fù)行消除重復(fù)行查詢滿足條件的行。查詢條件:查詢滿足條件的行。查詢條件:比較大小,確定范圍,確定集合比較大小,確定范圍,確定集合字符匹配,空值,組合條件字符匹配,空值,組合條件對(duì)查詢結(jié)果排序?qū)Σ樵兘Y(jié)果排序使用集函數(shù)使用集函數(shù)對(duì)查詢結(jié)果分組對(duì)查詢結(jié)果分組使用使用HAVING篩選組篩選組例例30 查詢前查詢前4位為位為“9500”且選修了且選修了1門以上課程的學(xué)號(hào)。門以上課程的學(xué)號(hào)。 (6)使用使用HAVING篩選組篩選組:只輸出滿足:只輸出滿足HAVING條件的組。條件的組。只有滿足只有滿足HAVING條件的組才會(huì)被選出來。條件的組才會(huì)被選出來。WHERE與與HA

56、VING的區(qū)別:的區(qū)別:作用對(duì)象不同作用對(duì)象不同。WHERE作用于作用于表表,選擇,選擇元組元組,不能,不能直接直接包含集函數(shù)。包含集函數(shù)。HAVING作用于作用于組組,選擇,選擇組組,常包含集函數(shù)。,常包含集函數(shù)。 SELECT Sno FROM SC WHERE Sno LIKE 9500%GROUP BY SnoHAVING COUNT(*)1中間結(jié)果中間結(jié)果學(xué)號(hào)相同的元組分為一組學(xué)號(hào)相同的元組分為一組挑選組挑選組Sno950019500195001950029500295003 單單表表查查詢?cè)儐伪聿樵儐伪聿樵冃〗Y(jié)小結(jié)選擇列選擇列(投影投影):指定列:指定列,所有列所有列( * ),計(jì)

57、算列計(jì)算列選擇行選擇行(選擇選擇):消除重復(fù)行消除重復(fù)行:DISTINCT查詢滿足條件的行查詢滿足條件的行。查詢條件:。查詢條件:比較大小比較大?。骸ⅲ?、 等比較運(yùn)算符等比較運(yùn)算符確定范圍確定范圍:NOT BETWEEN AND確定集合確定集合:NOT IN 字符串匹配字符串匹配:NOT LIKE 空值判斷空值判斷: IS NOT NULL組合條件組合條件:用:用AND、OR組合多個(gè)條件組合多個(gè)條件對(duì)查詢結(jié)果排序:對(duì)查詢結(jié)果排序:ORDER BY 子句子句使用集函數(shù):使用集函數(shù):SUM、COUNT、AVG、MAX、MIN對(duì)查詢結(jié)果分組:對(duì)查詢結(jié)果分組:GROUP BY子句子句使用使用HAVIN

58、G篩選組:篩選組:HAVING子句子句 對(duì)對(duì)多表查詢多表查詢?nèi)赃m用。仍適用。 當(dāng)不同表的列名相同時(shí),在列名前加表名前綴:當(dāng)不同表的列名相同時(shí),在列名前加表名前綴:SC.Sno=Student.Sno; GROUP BY SC.Cno第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢連接條件連接條件的一般格式:的一般格式:連接字段連接字段:連接條件中的列名。:連接條件中的列名。 連接字段必須是連接字段必須是可比的可比的。種類:種類:等值、非等值、自身、外、復(fù)合等值、非

59、等值、自身、外、復(fù)合含義:含義:涉及多個(gè)表的查詢。涉及多個(gè)表的查詢。FROM后面涉及后面涉及多個(gè)表多個(gè)表WHERE 條件條件: 連接條件連接條件 and 普通條件普通條件. . and/or. . and/or. .第第3章章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL1. 查詢概述查詢概述2. 單表查詢單表查詢3. 連接查詢連接查詢4. 嵌套查詢嵌套查詢5. 集合查詢集合查詢3.3 查詢查詢等值連接等值連接非等值連接非等值連接自身連接自身連接外連接外連接復(fù)合條件連接復(fù)合條件連接廣義笛卡兒積廣義笛卡兒積自然連接自然連接特例特例3. 連接查詢連接查詢 等值連接等值連接:為為“=”的連接。的連接。

60、 非等值連接非等值連接: 不是不是“=”的連接。的連接。 連接過程連接過程:設(shè):設(shè)表表1與與表表2連接連接 for (表表1中的每個(gè)元組中的每個(gè)元組t ) for (表表2中的每個(gè)元組中的每個(gè)元組s ) if ( t和和s使連接條件使連接條件成立成立 )(1) 等值連接與非等值連接等值連接與非等值連接表表1 表表2 結(jié)果表結(jié)果表 t. s. 成立成立?ts拼接拼接拼接拼接t和和s, 形成形成結(jié)果表結(jié)果表的一個(gè)元組的一個(gè)元組;涉及涉及Student與與SC兩個(gè)表。將這兩個(gè)表中學(xué)號(hào)相同的元兩個(gè)表。將這兩個(gè)表中學(xué)號(hào)相同的元組連接起來,是等值連接:組連接起來,是等值連接: SELECT Student

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論