數(shù)據(jù)庫課件第3章SQL語言.ppt

上傳人:max****ui 文檔編號(hào):15482806 上傳時(shí)間:2020-08-12 格式:PPT 頁數(shù):89 大?。?20.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)庫課件第3章SQL語言.ppt_第1頁
第1頁 / 共89頁
數(shù)據(jù)庫課件第3章SQL語言.ppt_第2頁
第2頁 / 共89頁
數(shù)據(jù)庫課件第3章SQL語言.ppt_第3頁
第3頁 / 共89頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)庫課件第3章SQL語言.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫課件第3章SQL語言.ppt(89頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、An Introduction to Database System,數(shù)據(jù)庫系統(tǒng)概論 An Introduction to Database System 第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,,An Introduction to Database System,第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫 3.3 數(shù)據(jù)定義 3.4 數(shù)據(jù)查詢 3.5 數(shù)據(jù)更新 3.6 視圖 3.7 小結(jié),An Introduction to Database System,3.1 SQL概述,SQL(Structured Query Language) 結(jié)構(gòu)化查詢語言,是關(guān)系

2、數(shù)據(jù)庫的標(biāo)準(zhǔn)語言 SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言,An Introduction to Database System,SQL概述(續(xù)),3.1.1 SQL 的產(chǎn)生與發(fā)展 3.1.2 SQL的特點(diǎn) 3.1.3 SQL的基本概念,An Introduction to Database System,SQL標(biāo)準(zhǔn)的進(jìn)展過程,標(biāo)準(zhǔn) 大致頁數(shù) 發(fā)布日期 SQL/86 1986.10 SQL/89(FIPS 127-1) 120頁 1989年 SQL/92 622頁 1992年 SQL99 1700頁

3、 1999年 SQL2003 2003年,An Introduction to Database System,3.1 SQL概述,3.1.1 SQL 的產(chǎn)生與發(fā)展 3.1.2 SQL的特點(diǎn) 3.1.3 SQL的基本概念,An Introduction to Database System,3.1.2 SQL的特點(diǎn),1.綜合統(tǒng)一 集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操縱語言(DML),數(shù)據(jù)控制語言(DCL)功能于一體。 可以獨(dú)立完成數(shù)據(jù)庫生命周期中的全部活動(dòng): 定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫; 對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢和更新; 數(shù)據(jù)庫重構(gòu)和維護(hù) 數(shù)據(jù)庫安全性、完

4、整性控制等 用戶數(shù)據(jù)庫投入運(yùn)行后,可根據(jù)需要隨時(shí)逐步修改模式,不影響數(shù)據(jù)的運(yùn)行。 數(shù)據(jù)操作符統(tǒng)一,An Introduction to Database System,2.高度非過程化,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“面向過程”,必須制定存取路徑 SQL只要提出“做什么”,無須了解存取路徑。 存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動(dòng)完成。,An Introduction to Database System,3.面向集合的操作方式,非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對(duì)象是一條記錄 SQL采用集合操作方式 操作對(duì)象、查找結(jié)果可以是元組的集合 一次插入、刪除、更新操作的對(duì)象可以是元組的集

5、合,An Introduction to Database System,4.以同一種語法結(jié)構(gòu)提供多種使用方式,SQL是獨(dú)立的語言 能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式 SQL又是嵌入式語言 SQL能夠嵌入到高級(jí)語言(例如C,C++,Java)程序中,供程序員設(shè)計(jì)程序時(shí)使用,An Introduction to Database System,5.語言簡潔,易學(xué)易用,SQL功能極強(qiáng),完成核心功能只用了9個(gè)動(dòng)詞。,An Introduction to Database System,3.1 SQL概述,3.1.1 SQL 的產(chǎn)生與發(fā)展 3.1.2 SQL的特點(diǎn) 3.1.3 SQL的基本概念,An

6、 Introduction to Database System,SQL的基本概念(續(xù)),SQL支持關(guān)系數(shù)據(jù)庫三級(jí)模式結(jié)構(gòu),An Introduction to Database System,SQL的基本概念(續(xù)),基本表 本身獨(dú)立存在的表 SQL中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)基本表 一個(gè)(或多個(gè))基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件 一個(gè)表可以帶若干索引 存儲(chǔ)文件 邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫的內(nèi)模式 物理結(jié)構(gòu)是任意的,對(duì)用戶透明 視圖 從一個(gè)或幾個(gè)基本表導(dǎo)出的表 數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù) 視圖是一個(gè)虛表 用戶可以在視圖上再定義視圖,An Introduction to Database Sys

7、tem,第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫 3.3 數(shù)據(jù)定義 3.4 數(shù)據(jù)查詢 3.5 數(shù)據(jù)更新 3.6 視圖 3.7 小結(jié),An Introduction to Database System,3.2 學(xué)生-課程 數(shù)據(jù)庫,學(xué)生-課程模式 S-T : 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:SC(Sno,Cno,Grade),An Introduction to Database System,Student表,An Int

8、roduction to Database System,Course表,An Introduction to Database System,SC表,An Introduction to Database System,第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫 3.3 數(shù)據(jù)定義 3.4 數(shù)據(jù)查詢 3.5 數(shù)據(jù)更新 3.6 視圖 3.7 小結(jié),An Introduction to Database System,3.3 數(shù)據(jù)定義,SQL的數(shù)據(jù)定義功能: 模式定義、表定義、視圖和索引的定義,An Introduction to Database System

9、,3.3 數(shù)據(jù)定義,3.3.1 模式的定義與刪除 3.3.2 基本表的定義、刪除與修改 3.3.3 索引的建立與刪除,An Introduction to Database System,定義模式(續(xù)),例1定義一個(gè)學(xué)生-課程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; 為用戶WANG定義了一個(gè)模式S-T 例2CREATE SCHEMA AUTHORIZATION WANG; 隱含為用戶名WANG 如果沒有指定,那么隱含為,An Introduction to Database System,定義模式(續(xù)),定義模式實(shí)際上定義了

10、一個(gè)命名空間 在這個(gè)空間中可以定義該模式包含的數(shù)據(jù)庫對(duì)象,例如基本表、視圖、索引等。 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。 CREATE SCHEMA AUTHORIZATION ||,An Introduction to Database System,定義模式(續(xù)),例3 CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20),

11、 COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) ); 為用戶ZHANG創(chuàng)建了一個(gè)模式TEST,并在其中定義了一個(gè)表TAB1。,An Introduction to Database System,二、刪除模式,DROP SCHEMA CASCADE(級(jí)聯(lián)) 刪除模式的同時(shí)把該模式中所有的數(shù)據(jù)庫對(duì)象全部刪除 RESTRICT(限制) 如果該模式中定義了下屬的數(shù)據(jù)庫對(duì)象(如表、視圖等),則拒絕該刪除語句的執(zhí)行。 當(dāng)該模式中沒有任何下屬的對(duì)象時(shí) 才能執(zhí)行。,An Introduction to Database Sy

12、stem,刪除模式(續(xù)),例4 DROP SCHEMA ZHANG CASCADE; 刪除模式ZHANG 同時(shí)該模式中定義的表TAB1也被刪除,An Introduction to Database System,3.3 數(shù)據(jù)定義,3.3.1 模式的定義與刪除 3.3.2 基本表的定義、刪除與修改 3.3.3 索引的建立與刪除,An Introduction to Database System,3.3.2 基本表的定義、刪除與修改,一、定義基本表 CREATE TABLE ( , , ); 如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級(jí)上,否則既可以定義在列級(jí)

13、也可以定義在表級(jí)。,An Introduction to Database System,學(xué)生表Student,例5 建立“學(xué)生”表Student,學(xué)號(hào)是主碼,姓名取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列級(jí)完整性約束條件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );,主碼,An Introduction to Database System,課程

14、表Course,例6 建立一個(gè)“課程”表Course CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );,先修課,Cpno是外碼 被參照表是Course 被參照列是Cno,An Introduction to Database System,學(xué)生選課表SC,例7 建立一個(gè)“學(xué)生選課”表SC CR

15、EATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /* 主碼由兩個(gè)屬性構(gòu)成,必須作為表級(jí)完整性進(jìn)行定義*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表級(jí)完整性約束條件,Sno是外碼,被參照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno) /* 表級(jí)完整性約束條件, Cno是外碼,被參照表是Course*/ );,An Introduc

16、tion to Database System,二、數(shù)據(jù)類型,SQL中域的概念用數(shù)據(jù)類型來實(shí)現(xiàn) 定義表的屬性時(shí) 需要指明其數(shù)據(jù)類型及長度 選用哪種數(shù)據(jù)類型 取值范圍 要做哪些運(yùn)算,An Introduction to Database System,二、數(shù)據(jù)類型,An Introduction to Database System,三、模式與表,每一個(gè)基本表都屬于某一個(gè)模式 一個(gè)模式包含多個(gè)基本表 定義基本表所屬模式 方法一:在表名中明顯地給出模式名 Create table “S-T”.Student(......); /*模式名為 S-T*/ Create table “S-T”.Cour

17、ce(......); Create table “S-T”.SC(......); 方法二:在創(chuàng)建模式語句中同時(shí)創(chuàng)建表 方法三:設(shè)置所屬的模式,An Introduction to Database System,模式與表(續(xù)),創(chuàng)建基本表(其他數(shù)據(jù)庫對(duì)象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù)搜索路徑來確定該對(duì)象所屬的模式 RDBMS會(huì)使用模式列表中第一個(gè)存在的模式作為數(shù)據(jù)庫對(duì)象的模式名 若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤 顯示當(dāng)前的搜索路徑: SHOW search_path; 搜索路徑的當(dāng)前默認(rèn)值是:$user, PUBLIC,An Introduction to Databas

18、e System,模式與表(續(xù)),DBA用戶可以設(shè)置搜索路徑,然后定義基本表 SET search_path TO “S-T”,PUBLIC; Create table Student(......); 結(jié)果建立了S-T.Student基本表。 RDBMS發(fā)現(xiàn)搜索路徑中第一個(gè)模式名S-T存在,就把該 模式作為基本表Student所屬的模式。,An Introduction to Database System,四、修改基本表,ALTER TABLE ADD 完整性約束 DROP ALTER COLUMN ;,An Introduction to Database System,修改基

19、本表(續(xù)),例8向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD S_entrance DATE; 不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。 例9將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。 ALTER TABLE Student ALTER COLUMN Sage INT; 例10增加課程名稱必須取唯一值的約束條件。 ALTER TABLE Course ADD UNIQUE(Cname);,An Introduction to Database System,五、刪除基本表,DROP TABLE

20、 RESTRICT| CASCADE; RESTRICT:刪除表是有限制的。 欲刪除的基本表不能被其他表的約束所引用 如果存在依賴該表的對(duì)象,則此表不能被刪除 CASCADE:刪除該表沒有限制。 在刪除基本表的同時(shí),相關(guān)的依賴對(duì)象一起刪除,An Introduction to Database System,刪除基本表(續(xù)),例11 刪除Student表 DROP TABLE Student CASCADE ; 基本表定義被刪除,數(shù)據(jù)被刪除 表上建立的索引、視圖、觸發(fā)器等一般也將被刪除,An Introduction to Database System,刪除基本表(續(xù)),例12若表上建有視

21、圖,選擇RESTRICT時(shí)表不能刪除 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS; DROP TABLE Student RESTRICT; --ERROR: cannot drop table Student because other objects depend on it,An Introduction to Database System,刪除基本表(續(xù)),例12如果選擇CASCADE時(shí)可以刪除表,視圖也自動(dòng)被刪除 DROP TABLE Stu

22、dent CASCADE; --NOTICE: drop cascades to view IS_Student SELECT * FROM IS_Student; --ERROR: relation IS_Student does not exist,An Introduction to Database System,刪除基本表(續(xù)),,,DROP TABLE時(shí),SQL99 與 3個(gè)RDBMS的處理策略比較,R表示RESTRICT , C表示CASCADE 表示不能刪除基本表,表示能刪除基本表,保留表示刪除基本表后,還保留依賴對(duì)象,An Introduction to Database

23、System,3.3 數(shù)據(jù)定義,3.3.1 模式的定義與刪除 3.3.2 基本表的定義、刪除與修改 3.3.3 索引的建立與刪除,An Introduction to Database System,3.3.3 索引的建立與刪除,建立索引的目的:加快查詢速度 誰可以建立索引 DBA 或 表的屬主(即建立表的人) DBMS一般會(huì)自動(dòng)建立以下列上的索引 PRIMARY KEY UNIQUE 誰 維護(hù)索引 DBMS自動(dòng)完成 使用索引 DBMS自動(dòng)選擇是否使用索引以及使用哪些索引,An Introduction to Database System,索 引,RDBMS中索引一般采用B+樹、HASH

24、索引來實(shí)現(xiàn) B+樹索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn) HASH索引具有查找速度快的特點(diǎn) 采用B+樹,還是HASH索引 則由具體的RDBMS來決定 索引是關(guān)系數(shù)據(jù)庫的內(nèi)部實(shí)現(xiàn)技術(shù),屬于內(nèi)模式的范疇 CREATE INDEX語句定義索引時(shí),可以定義索引是唯一索引、非唯一索引或聚簇索引,An Introduction to Database System,一、建立索引,語句格式 CREATE UNIQUE CLUSTER INDEX ON (, );,An Introduction to Database System,建立索引(續(xù)),例13 CREATE CLUSTER INDEX Stusname O

25、N Student(Sname); 在Student表的Sname(姓名)列上建立一個(gè)聚簇索引 在最經(jīng)常查詢的列上建立聚簇索引以提高查詢效率 一個(gè)基本表上最多只能建立一個(gè)聚簇索引 經(jīng)常更新的列不宜建立聚簇索引,An Introduction to Database System,建立索引(續(xù)),例14為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個(gè)表建 立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCn

26、o ON SC(Sno ASC,Cno DESC); Student表按學(xué)號(hào)升序建唯一索引 Course表按課程號(hào)升序建唯一索引 SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引,An Introduction to Database System,二、刪除索引,DROP INDEX ; 刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的 描述。 例15 刪除Student表的Stusname索引 DROP INDEX Stusname;,An Introduction to Database System,第三章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫 3.3

27、數(shù)據(jù)定義 3.4 數(shù)據(jù)查詢 3.5 數(shù)據(jù)更新 3.6 視圖 3.7 小結(jié),An Introduction to Database System,數(shù)據(jù)查詢,語句格式 SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,An Introduction to Database System,3.4 數(shù)據(jù)查詢,3.4.1 單表查詢 3.4.2 連接查詢 3.4.3 嵌套查詢 3.4.4 集合查詢 3.4.5 Select語句的一般形式,An Introduction to Data

28、base System,3.4.1 單表查詢,查詢僅涉及一個(gè)表: 一、 選擇表中的若干列 二、 選擇表中的若干元組 三、 ORDER BY子句 四、 聚集函數(shù) 五、 GROUP BY子句,An Introduction to Database System,一、 選擇表中的若干列,查詢指定列 例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。 SELECT Sno,Sname FROM Student; 例2 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。 SELECT Sname,Sno,Sdept FROM Student;,An Introduction to Database System,2. 查詢?nèi)苛?選出所

29、有屬性列: 在SELECT關(guān)鍵字后面列出所有列名 將指定為 * 例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或 SELECT * FROM Student;,An Introduction to Database System,3. 查詢經(jīng)過計(jì)算的值,SELECT子句的可以為: 算術(shù)表達(dá)式 字符串常量 函數(shù) 列別名,An Introduction to Database System,例4 查全體學(xué)生的姓名及其出生年份。 SELECT Sname,2004-Sage /*假定當(dāng)年的年份為2004年*/ FROM

30、 Student; 輸出結(jié)果: Sname 2004-Sage 李勇 1984 劉晨 1985 王敏 1986 張立 1985,查詢經(jīng)過計(jì)算的值(續(xù)),,An Introduction to Database System,查詢經(jīng)過計(jì)算的值(續(xù)),例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名 SELECT Sname,Year of Birth: ,2004-Sage, ISLOWER(Sdept) FROM Student; 輸出結(jié)果: Sname Year of Birth: 2004-Sage ISLOWER(Sde

31、pt) 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 張立 Year of Birth: 1985 is,,An Introduction to Database System,查詢經(jīng)過計(jì)算的值(續(xù)),使用列別名改變查詢結(jié)果的列標(biāo)題: SELECT Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student; 輸出結(jié)果: NAME BIRTH

32、 BIRTHDAY DEPARTMENT ------- ---------------- ------------- ------------------ 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth: 1986 ma 張立 Year of Birth: 1985 is,An Introduction to Database System,3.4.1 單表查詢,查詢僅涉及一個(gè)表: 一、 選擇表中的若干列 二、 選擇表中的若干元組 三、 ORDER BY子句 四、 聚集

33、函數(shù) 五、 GROUP BY子句,An Introduction to Database System,二、選擇表中的若干元組,1. 消除取值重復(fù)的行 如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL 例6 查詢選修了課程的學(xué)生學(xué)號(hào)。 SELECT Sno FROM SC; 等價(jià)于: SELECT ALL Sno FROM SC; 執(zhí)行上面的SELECT語句后,結(jié)果為: Sno 200215121 200215121 200215121 200215122 200215122,,An Introduction to Database System,消除取值重復(fù)的行(續(xù)),指定DISTIN

34、CT關(guān)鍵詞,去掉表中重復(fù)的行 SELECT DISTINCT Sno FROM SC; 執(zhí)行結(jié)果: Sno 200215121 200215122,,An Introduction to Database System,2.查詢滿足條件的元組,,,,表3.4 常用的查詢條件,An Introduction to Database System,(1) 比較大小,例7 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。 SELECT Sname FROM Student WHERE Sdept=CS; 例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FRO

35、M Student WHERE Sage < 20; 例9 查詢考試成績有不及格的學(xué)生的學(xué)號(hào)。 SELECT DISTINCT Sno FROM SC WHERE Grade<60;,An Introduction to Database System,(2)確定范圍,謂詞: BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的 姓名、系別和年齡 SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23; 例11 查詢年齡不在20

36、23歲之間的學(xué)生姓名、系別和年齡 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23;,An Introduction to Database System,(3) 確定集合,謂詞:IN , NOT IN 例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( IS,MA,CS ); 例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。 SELECT S

37、name,Ssex FROM Student WHERE Sdept NOT IN ( IS,MA,CS );,An Introduction to Database System,(4)字符匹配,謂詞: NOT LIKE ESCAPE 匹配串為固定字符串 例14 查詢學(xué)號(hào)為200215121的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 200215121; 等價(jià)于: SELECT * FROM Student WHERE Sno = 200215121 ;,An Introduction to Database System,字

38、符匹配(續(xù)),2) 匹配串為含通配符的字符串 例15 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%; 例16 查詢姓歐陽且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽__;,An Introduction to Database System,字符匹配(續(xù)),例17 查詢名字中第2個(gè)字為陽字的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname,Sno FROM Student WHERE Sname LIK

39、E __陽%; 例18 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉%;,An Introduction to Database System,字符匹配(續(xù)),3) 使用換碼字符將通配符轉(zhuǎn)義為普通字符 例19 查詢DB_Design課程的課程號(hào)和學(xué)分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ; 例20 查詢以DB_開頭,且倒數(shù)第3個(gè)字符為 i的課程的詳細(xì)情況。 SELECT * FROM C

40、ourse WHERE Cname LIKE DB_%i_ _ ESCAPE ; ESCAPE 表示“ ” 為換碼字符,An Introduction to Database System,(5) 涉及空值的查詢,謂詞: IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替 例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒 有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL 例22 查所有有成績的學(xué)生學(xué)號(hào)和課程號(hào)。 SELECT Sno,Cno FROM S

41、C 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é)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage<20;,An Introduction

42、 to Database System,多重條件查詢(續(xù)),改寫例12 例12 查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( IS,MA,CS ) 可改寫為: SELECT Sname,Ssex FROM Student WHERE Sdept= IS OR Sdept= MA OR Sdept= CS ;,An Introduction to Database System,3.4.1 單表查詢,查詢僅涉及一個(gè)表: 一、 選擇表中的若干列 二、 選擇表中的若干元組 三

43、、 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)及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT Sno,Grade FROM SC WHERE

44、Cno= 3 ORDER BY Grade DESC; 例25 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC;,An Introduction to Database System,3.4.1 單表查詢,查詢僅涉及一個(gè)表: 一、 選擇表中的若干列 二、 選擇表中的若干元組 三、 ORDER BY子句 四、 聚集函數(shù) 五、 GROUP BY子句,An Introduction to Database System,四、聚集函數(shù),聚集函數(shù): 計(jì)數(shù) COU

45、NT(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ù)。 SELECT COUNT(*) FROM Student; 例27 查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC; 例28 計(jì)算1號(hào)課程的學(xué)生平均成績。

46、 SELECT AVG(Grade) FROM SC WHERE Cno= 1 ;,An Introduction to Database System,聚集函數(shù) (續(xù)),例29 查詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù)。 SELECT MAX(Grade) FROM SC WHER Cno= 1 ; 例30查詢學(xué)生200215012選修課程的總學(xué)分?jǐn)?shù)。 SELECT SUM(Ccredit) FROM SC, Course WHER Sno=200215012 AND SC.Cno=Course.Cno;,An Introduction to Database System,3.

47、4.1 單表查詢,查詢僅涉及一個(gè)表: 一、 選擇表中的若干列 二、 選擇表中的若干元組 三、 ORDER BY子句 四、 聚集函數(shù) 五、 GROUP BY子句,An Introduction to Database System,五、GROUP BY子句,GROUP BY子句分組: 細(xì)化聚集函數(shù)的作用對(duì)象 未對(duì)查詢結(jié)果分組,聚集函數(shù)將作用于整個(gè)查詢結(jié)果 對(duì)查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個(gè)組 作用對(duì)象是查詢的中間結(jié)果表 按指定的一列或多列值分組,值相等的為一組,An Introduction to Database System,GROUP BY子句(續(xù)),例31 求各個(gè)課程號(hào)及相應(yīng)的

48、選課人數(shù)。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno; 查詢結(jié)果: Cno COUNT(Sno) 1 22 2 34 3 44 4 33 5 48,An Introduction to Database System,GROUP BY子句(續(xù)),例32 查詢選修了3門以上課程的學(xué)生學(xué)號(hào)。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 3;,An Introduction to Database System,GROUP BY子句(續(xù)),HAVING短語與WHERE子句的區(qū)別: 作用對(duì)象不同 WHERE子句作用于基表或視圖,從中選擇滿足條件的元組 HAVING短語作用于組,從中選擇滿足條件的組。,An Introduction to Database System,下課了。。。,休息一會(huì)兒。。。,追 求,

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!