歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

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

  • 資源ID:15654565       資源大?。?span id="kdxkbpb" class="font-tahoma">720.50KB        全文頁(yè)數(shù):89頁(yè)
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說(shuō)明有答案則都視為沒有答案,請(qǐng)知曉。

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

An Introduction to Database System,數(shù)據(jù)庫(kù)系統(tǒng)概論 An Introduction to Database System 第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,An Introduction to Database System,第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫(kù) 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)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言 SQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,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)展過(guò)程,標(biāo)準(zhǔn) 大致頁(yè)數(shù) 發(fā)布日期 SQL/86 1986.10 SQL/89(FIPS 127-1) 120頁(yè) 1989年 SQL/92 622頁(yè) 1992年 SQL99 1700頁(yè) 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ù)定義語(yǔ)言(DDL),數(shù)據(jù)操縱語(yǔ)言(DML),數(shù)據(jù)控制語(yǔ)言(DCL)功能于一體。 可以獨(dú)立完成數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng): 定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫(kù); 對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢和更新; 數(shù)據(jù)庫(kù)重構(gòu)和維護(hù) 數(shù)據(jù)庫(kù)安全性、完整性控制等 用戶數(shù)據(jù)庫(kù)投入運(yùn)行后,可根據(jù)需要隨時(shí)逐步修改模式,不影響數(shù)據(jù)的運(yùn)行。 數(shù)據(jù)操作符統(tǒng)一,An Introduction to Database System,2.高度非過(guò)程化,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語(yǔ)言“面向過(guò)程”,必須制定存取路徑 SQL只要提出“做什么”,無(wú)須了解存取路徑。 存取路徑的選擇以及SQL的操作過(guò)程由系統(tǒng)自動(dòng)完成。,An Introduction to Database System,3.面向集合的操作方式,非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對(duì)象是一條記錄 SQL采用集合操作方式 操作對(duì)象、查找結(jié)果可以是元組的集合 一次插入、刪除、更新操作的對(duì)象可以是元組的集合,An Introduction to Database System,4.以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式,SQL是獨(dú)立的語(yǔ)言 能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式 SQL又是嵌入式語(yǔ)言 SQL能夠嵌入到高級(jí)語(yǔ)言(例如C,C+,Java)程序中,供程序員設(shè)計(jì)程序時(shí)使用,An Introduction to Database System,5.語(yǔ)言簡(jiǎn)潔,易學(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 Introduction to Database System,SQL的基本概念(續(xù)),SQL支持關(guān)系數(shù)據(jù)庫(kù)三級(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ù)庫(kù)的內(nèi)模式 物理結(jié)構(gòu)是任意的,對(duì)用戶透明 視圖 從一個(gè)或幾個(gè)基本表導(dǎo)出的表 數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù) 視圖是一個(gè)虛表 用戶可以在視圖上再定義視圖,An Introduction to Database System,第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫(kù) 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ù)庫(kù),學(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 Introduction to Database System,Course表,An Introduction to Database System,SC表,An Introduction to Database System,第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫(kù) 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,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í)際上定義了一個(gè)命名空間 在這個(gè)空間中可以定義該模式包含的數(shù)據(jù)庫(kù)對(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), 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ù)庫(kù)對(duì)象全部刪除 RESTRICT(限制) 如果該模式中定義了下屬的數(shù)據(jù)庫(kù)對(duì)象(如表、視圖等),則拒絕該刪除語(yǔ)句的執(zhí)行。 當(dāng)該模式中沒有任何下屬的對(duì)象時(shí) 才能執(zhí)行。,An Introduction to Database System,刪除模式(續(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í)也可以定義在表級(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,課程表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 CREATE 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 Introduction to Database System,二、數(shù)據(jù)類型,SQL中域的概念用數(shù)據(jù)類型來(lái)實(shí)現(xiàn) 定義表的屬性時(shí) 需要指明其數(shù)據(jù)類型及長(zhǎng)度 選用哪種數(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”.Cource(.); Create table “S-T”.SC(.); 方法二:在創(chuàng)建模式語(yǔ)句中同時(shí)創(chuàng)建表 方法三:設(shè)置所屬的模式,An Introduction to Database System,模式與表(續(xù)),創(chuàng)建基本表(其他數(shù)據(jù)庫(kù)對(duì)象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù)搜索路徑來(lái)確定該對(duì)象所屬的模式 RDBMS會(huì)使用模式列表中第一個(gè)存在的模式作為數(shù)據(jù)庫(kù)對(duì)象的模式名 若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤 顯示當(dāng)前的搜索路徑: SHOW search_path; 搜索路徑的當(dāng)前默認(rèn)值是:$user, PUBLIC,An Introduction to Database 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,修改基本表(續(xù)),例8向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD S_entrance DATE; 不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。 例9將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來(lái)的數(shù)據(jù)類型是字符型)改為整數(shù)。 ALTER TABLE Student ALTER COLUMN Sage INT; 例10增加課程名稱必須取唯一值的約束條件。 ALTER TABLE Course ADD UNIQUE(Cname);,An Introduction to Database System,五、刪除基本表,DROP TABLE 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若表上建有視圖,選擇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 Student 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 System,3.3 數(shù)據(jù)定義,3.3.1 模式的定義與刪除 3.3.2 基本表的定義、刪除與修改 3.3.3 索引的建立與刪除,An Introduction to Database System,3.3.3 索引的建立與刪除,建立索引的目的:加快查詢速度 誰(shuí)可以建立索引 DBA 或 表的屬主(即建立表的人) DBMS一般會(huì)自動(dòng)建立以下列上的索引 PRIMARY KEY UNIQUE 誰(shuí) 維護(hù)索引 DBMS自動(dòng)完成 使用索引 DBMS自動(dòng)選擇是否使用索引以及使用哪些索引,An Introduction to Database System,索 引,RDBMS中索引一般采用B+樹、HASH索引來(lái)實(shí)現(xiàn) B+樹索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn) HASH索引具有查找速度快的特點(diǎn) 采用B+樹,還是HASH索引 則由具體的RDBMS來(lái)決定 索引是關(guān)系數(shù)據(jù)庫(kù)的內(nèi)部實(shí)現(xiàn)技術(shù),屬于內(nèi)模式的范疇 CREATE INDEX語(yǔ)句定義索引時(shí),可以定義索引是唯一索引、非唯一索引或聚簇索引,An Introduction to Database System,一、建立索引,語(yǔ)句格式 CREATE UNIQUE CLUSTER INDEX ON (, );,An Introduction to Database System,建立索引(續(xù)),例13 CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname(姓名)列上建立一個(gè)聚簇索引 在最經(jīng)常查詢的列上建立聚簇索引以提高查詢效率 一個(gè)基本表上最多只能建立一個(gè)聚簇索引 經(jīng)常更新的列不宜建立聚簇索引,An Introduction to Database System,建立索引(續(xù)),例14為學(xué)生-課程數(shù)據(jù)庫(kù)中的Student,Course,SC三個(gè)表建 立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno 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ù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,3.1 SQL概述 3.2 學(xué)生-課程數(shù)據(jù)庫(kù) 3.3 數(shù)據(jù)定義 3.4 數(shù)據(jù)查詢 3.5 數(shù)據(jù)更新 3.6 視圖 3.7 小結(jié),An Introduction to Database System,數(shù)據(jù)查詢,語(yǔ)句格式 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語(yǔ)句的一般形式,An Introduction to Database 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)苛?選出所有屬性列: 在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)過(guò)計(jì)算的值,SELECT子句的可以為: 算術(shù)表達(dá)式 字符串常量 函數(shù) 列別名,An Introduction to Database System,例4 查全體學(xué)生的姓名及其出生年份。 SELECT Sname,2004-Sage /*假定當(dāng)年的年份為2004年*/ FROM Student; 輸出結(jié)果: Sname 2004-Sage 李勇 1984 劉晨 1985 王敏 1986 張立 1985,查詢經(jīng)過(guò)計(jì)算的值(續(xù)),An Introduction to Database System,查詢經(jīng)過(guò)計(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(Sdept) 李勇 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)過(guò)計(jì)算的值(續(xù)),使用列別名改變查詢結(jié)果的列標(biāo)題: SELECT Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Student; 輸出結(jié)果: NAME BIRTH 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子句 四、 聚集函數(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語(yǔ)句后,結(jié)果為: Sno 200215121 200215121 200215121 200215122 200215122,An Introduction to Database System,消除取值重復(fù)的行(續(xù)),指定DISTINCT關(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 FROM Student WHERE Sage < 20; 例9 查詢考試成績(jī)有不及格的學(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 查詢年齡不在2023歲之間的學(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 Sname,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,字符匹配(續(xù)),2) 匹配串為含通配符的字符串 例15 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%; 例16 查詢姓歐陽(yáng)且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽(yáng)_;,An Introduction to Database System,字符匹配(續(xù)),例17 查詢名字中第2個(gè)字為陽(yáng)字的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽(yáng)%; 例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 Course WHERE Cname LIKE DB_%i_ _ ESCAPE ; ESCAPE 表示“ ” 為換碼字符,An Introduction to Database System,(5) 涉及空值的查詢,謂詞: IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替 例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒 有考試成績(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)。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;,An Introduction to Database System,(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 ,An Introduction to Database System,多重條件查詢(續(xù)),例23 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage<20;,An Introduction 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è)表: 一、 選擇表中的若干列 二、 選擇表中的若干元組 三、 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)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT Sno,Grade FROM SC WHERE 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ù) COUNT(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é)生平均成績(jī)。 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.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)的選課人數(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短語(yǔ)與WHERE子句的區(qū)別: 作用對(duì)象不同 WHERE子句作用于基表或視圖,從中選擇滿足條件的元組 HAVING短語(yǔ)作用于組,從中選擇滿足條件的組。,An Introduction to Database System,下課了。,休息一會(huì)兒。,追 求,

注意事項(xiàng)

本文(數(shù)據(jù)庫(kù)課件第3章SQL語(yǔ)言.ppt)為本站會(huì)員(xin****828)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(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),我們立即給予刪除!