數(shù)據(jù)庫系統(tǒng)概論第四版第3章的關(guān)系數(shù)據(jù)庫標準語言SQL1-課件_第1頁
數(shù)據(jù)庫系統(tǒng)概論第四版第3章的關(guān)系數(shù)據(jù)庫標準語言SQL1-課件_第2頁
數(shù)據(jù)庫系統(tǒng)概論第四版第3章的關(guān)系數(shù)據(jù)庫標準語言SQL1-課件_第3頁
數(shù)據(jù)庫系統(tǒng)概論第四版第3章的關(guān)系數(shù)據(jù)庫標準語言SQL1-課件_第4頁
數(shù)據(jù)庫系統(tǒng)概論第四版第3章的關(guān)系數(shù)據(jù)庫標準語言SQL1-課件_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、An Introduction to Database System洛陽理工學(xué)院計算機與信息工程系數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第三章 關(guān)系數(shù)據(jù)庫標準語言SQLAn Introduction to Database SyAn Introduction to Database System第三章 關(guān)系數(shù)據(jù)庫標準語言SQL3.1 SQL概述3.2 學(xué)生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新3.6 視圖3.6 小結(jié)An Introduction to Database SyAn Introduction to Database

2、 System3.1 SQL概述SQL的特點1. 綜合統(tǒng)一2. 高度非過程化3. 面向集合的操作方式4. 以同一種語法結(jié)構(gòu)提供兩種使用方法5. 語言簡潔,易學(xué)易用An Introduction to Database SyAn Introduction to Database System5. 語言簡捷,易學(xué)易用An Introduction to Database Sy3.2 學(xué)生-課程數(shù)據(jù)庫由三個表構(gòu)成:1 學(xué)生表Student(Sno,Sname,Ssex,Sage,Sdept)2 課程表Course(Cno,Cname,Cpno,Ccredit)3 學(xué)生選課表SC(Sno,Cno,Gr

3、ade)3.2 學(xué)生-課程數(shù)據(jù)庫由三個表構(gòu)成:An Introduction to Database System第三章 關(guān)系數(shù)據(jù)庫標準語言SQL3.1 SQL概述3.2 學(xué)生-課程數(shù)據(jù)庫3.3 數(shù)據(jù)定義3.4 數(shù)據(jù)查詢3.5 數(shù)據(jù)更新3.6 視圖3.6 小結(jié)An Introduction to Database SyAn Introduction to Database System3.3 數(shù) 據(jù) 定 義 An Introduction to Database SyCreate database data_nameOn(filename=“”size=)Log on(Filename=“”s

4、ize=)An Introduction to Database SystemCreate database data_nameAn InAn Introduction to Database System3.3.1 定義語句格式CREATE TABLE ( , , );:所要定義的基本表的名字:組成該表的各個屬性(列):涉及相應(yīng)屬性列的完整性約束條件:涉及一個或多個屬性列的完整性約束條件 An Introduction to Database SyAn Introduction to Database System例題 例1 建立一個“學(xué)生”表Student,它由學(xué)號Sno、姓名Sname、

5、性別Ssex、年齡Sage、所在系Sdept五個屬性組成。其中學(xué)號不能為空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15); An Introduction to Database SyAn Introduction to Database System定義基本表(續(xù))常用完整性約束主碼約束: PRIMARY KEY唯一性約束:UNIQUE非空值約束:NOT NULL參照完整性約束P

6、RIMARY KEY與 UNIQUE的區(qū)別?An Introduction to Database SyAn Introduction to Database System例題 (續(xù))例2 建立一個“學(xué)生選課”表SC,它由學(xué)號Sno、課程號Cno,修課成績Grade組成,其中(Sno, Cno)為主碼。CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade int, Primary key (Sno, Cno);An Introduction to Database SyAn Introduction to Database System例題 (續(xù)

7、)An Introduction to Database SyAn Introduction to Database System三、刪除基本表 DROP TABLE ; 基本表刪除 數(shù)據(jù)、表上的索引都刪除 表上的視圖往往仍然保留,但無法引用刪除基本表時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該基本表及其索引的描述 (標準中沒有,認為表建立后就永久存在)An Introduction to Database SyAn Introduction to Database System例題例5 刪除Student表 DROP TABLEStudent ;An Introduction to Database S

8、yAn Introduction to Database System二、修改基本表ALTER TABLE ADD 完整性約束 DROP MODIFY ;:要修改的基本表ADD子句:增加新列和新的完整性約束條件DROP子句:刪除指定的完整性約束條件MODIFY子句:用于修改列名和數(shù)據(jù)類型An Introduction to Database SyAn Introduction to Database System例題 例2 向Student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD Scome DATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一

9、律為空值。An Introduction to Database SyAn Introduction to Database System語句格式(續(xù))刪除屬性列 直接/間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個新表中刪除原表再將新表重命名為原表名直接刪除屬性列:(新)例:ALTER TABLE Student Drop Scome;An Introduction to Database SyAn Introduction to Database System 例3 將年齡的數(shù)據(jù)類型改為半字長整數(shù)。 ALTER TABLE Student MODIFY Sage SMALLINT;注:修改原有

10、的列定義有可能會破壞已有數(shù)據(jù)An Introduction to Database SyAn Introduction to Database System例題 例4 刪除學(xué)生姓名必須取唯一值的約束。ALTER TABLE Student DROP UNIQUE(Sname); An Introduction to Database SyAn Introduction to Database System3.3.2 建立與刪除索引 建立索引是加快查詢速度的有效手段建立索引DBA或表的屬主(即建立表的人)根據(jù)需要建立有些DBMS自動建立以下列上的索引 PRIMARY KEY UNIQUE維護索引

11、 DBMS自動完成使用索引 DBMS自動選擇是否使用索引以及使用哪些索引An Introduction to Database SyAn Introduction to Database System一、建立索引 語句格式CREATE UNIQUE CLUSTER INDEX ON (, );用指定要建索引的基本表名字索引可以建立在該表的一列或多列上,各列名之間用逗號分隔用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE表明此索引的每一個索引值只對應(yīng)唯一的數(shù)據(jù)記錄CLUSTER表示要建立的索引是聚簇索引An Introduction to Database SyA

12、n Introduction to Database System例題 例6 為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個表建立索引。其中Student表按學(xué)號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學(xué)號升序和課程號降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); An Introduction to Database Sy

13、An Introduction to Database System建立索引 (續(xù))唯一值索引對于已含重復(fù)值的屬性列不能建UNIQUE索引對某個列建立UNIQUE索引后,插入新記錄時DBMS會自動檢查新記錄在該列上是否取了重復(fù)值。這相當于增加了一個UNIQUE約束An Introduction to Database SyAn Introduction to Database System建立索引 (續(xù))聚簇索引建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項順序與表中記錄的物理順序一致例:CREATE CLUSTER INDEX Stusname ON

14、 Student(Sname);在Student表的Sname(姓名)列上建立一個聚簇索引,而且Student表中的記錄將按照Sname值的升序存放 An Introduction to Database SyAn Introduction to Database System建立索引 (續(xù))在一個基本表上最多只能建立一個聚簇索引聚簇索引的用途:對于某些類型的查詢,可以提高查詢效率聚簇索引的適用范圍 很少對基表進行增刪操作 很少對其中的變長列進行修改操作 An Introduction to Database SyAn Introduction to Database System二、刪除索引

15、 DROP INDEX ;刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。例7 刪除Student表的Stusname索引。DROP INDEX Stusname;An Introduction to Database SyAn Introduction to Database System3.4 查 詢 3.4.1 概述3.4.2 單表查詢3.4.3 連接查詢3.4.4 嵌套查詢3.4.5 集合查詢3.4.6 小結(jié) An Introduction to Database SyAn Introduction to Database System3.4.1 概述 語句格式SELECT ALL

16、|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;An Introduction to Database SyAn Introduction to Database System語句格式SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對象(基本表或視圖)WHERE子句:指定查詢條件 GROUP BY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數(shù)。HAVING短語:篩選出只有滿足指定條件的組ORDER BY子句:對查詢結(jié)果表按指定列值的升序或降序排序 An Introduct

17、ion to Database SyAn Introduction to Database System示例數(shù)據(jù)庫 學(xué)生-課程數(shù)據(jù)庫學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:SC(Sno,Cno,Grade) An Introduction to Database SyAn Introduction to Database System3.4 查 詢 3.4.1 概述3.4.2 單表查詢3.4.3 連接查詢3.4.4 嵌套查詢3.4.5 集合查詢3.4.6 小結(jié) An Intro

18、duction to Database SyAn Introduction to Database System3.4.2 單表查詢 查詢僅涉及一個表,是一種最簡單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對查詢結(jié)果排序四、使用集函數(shù)五、對查詢結(jié)果分組 An Introduction to Database SyAn Introduction to Database System查詢指定列例1 查詢?nèi)w學(xué)生的學(xué)號與姓名。SELECT Sno,SnameFROM Student;例2 查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。SELECT Sname,Sno,SdeptFROM Stude

19、nt;An Introduction to Database SyAn Introduction to Database System查詢?nèi)苛欣? 查詢?nèi)w學(xué)生的詳細記錄。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或SELECT *FROM Student; An Introduction to Database SyAn Introduction to Database System3. 查詢經(jīng)過計算的值 SELECT子句的為表達式算術(shù)表達式字符串常量函數(shù)列別名等 An Introduction to Database SyAn Intr

20、oduction to Database System3. 查詢經(jīng)過計算的值例4 查全體學(xué)生的姓名及其出生年份。SELECT Sname,2000-SageFROM Student;輸出結(jié)果: Sname 2000-Sage - - 李勇 1976 劉晨 1977 王名 1978 張立 1978 An Introduction to Database SyAn Introduction to Database System3. 查詢經(jīng)過計算的值例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名。SELECT Sname,Year of Birth: ,2000-Sage,

21、ISLOWER(Sdept)FROM Student; An Introduction to Database SyAn Introduction to Database System例題(續(xù))輸出結(jié)果: Sname Year of Birth: 2000-Sage ISLOWER(Sdept) - - - - 李勇 Year of Birth: 1976 cs 劉晨 Year of Birth: 1977 is 王名 Year of Birth: 1978 ma 張立 Year of Birth: 1977 is An Introduction to Database SyAn Introd

22、uction to Database System例 使用列別名改變查詢結(jié)果的列標題SELECT Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,ISLOWER(Sdept) DEPARTMENTFROM Student;輸出結(jié)果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1976 cs 劉晨 Year of Birth: 1977 is 王名 Year of Birth: 1978 ma 張立 Year of Birth: 1977 isAn Introducti

23、on to Database SyAn Introduction to Database System二、選擇表中的若干元組 消除取值重復(fù)的行查詢滿足條件的元組 An Introduction to Database SyAn Introduction to Database System1. 消除取值重復(fù)的行在SELECT子句中使用DISTINCT短語假設(shè)SC表中有下列數(shù)據(jù) Sno Cno Grade - - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80An Introduction to Database SyAn Int

24、roduction to Database SystemALL 與 DISTINCT 例6 查詢選修了課程的學(xué)生學(xué)號。(1) SELECT Sno FROM SC;或(默認 ALL) SELECT ALL Sno FROM SC;結(jié)果: Sno - 95001 95001 95001 95002 95002 An Introduction to Database SyAn Introduction to Database System例題(續(xù))(2) SELECT DISTINCT Sno FROM SC;結(jié)果: Sno - 95001 95002 An Introduction to Dat

25、abase SyAn Introduction to Database System例題(續(xù))注意 DISTINCT短語的作用范圍是所有目標列例:查詢選修課程的各種成績錯誤的寫法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正確的寫法 SELECT DISTINCT Cno,Grade FROM SC;An Introduction to Database SyAn Introduction to Database System2.查詢滿足條件的元組WHERE子句常用的查詢條件An Introduction to Database SyAn Introdu

26、ction to Database System(1) 比較大小在WHERE子句的中使用比較運算符=,=,=,!= 或 ,!,!, 邏輯運算符NOT + 比較運算符例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage = 20; An Introduction to Database SyAn Introduction to Database System(2) 確定范圍使用謂詞 BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡

27、。 SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; An Introduction to Database SyAn Introduction to Database System例題(續(xù))例11 查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23; An Introduction to Database SyAn Introduction to Database System(3

28、) 確定集合使用謂詞 IN , NOT IN :用逗號分隔的一組取值例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計 算機科學(xué)系(CS)學(xué)生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS );An Introduction to Database SyAn Introduction to Database System(3) 確定集合例13查詢既不是信息系、數(shù)學(xué)系,也不是計算 機科學(xué)系的學(xué)生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS

29、);An Introduction to Database SyAn Introduction to Database System(4) 字符串匹配 NOT LIKE ESCAPE :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 當匹配模板為固定字符串時, 可以用 = 運算符取代 LIKE 謂詞 用 != 或 運算符取代 NOT LIKE 謂詞An Introduction to Database SyAn Introduction to Database System通配符% (百分號) 代表任意長度(長度可以為0)的字符串例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如ac

30、b,addgb,ab 等都滿足該匹配串_ (下橫線) 代表任意單個字符例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串An Introduction to Database SyAn Introduction to Database SystemESCAPE 短語:當用戶要查詢的字符串本身就含有 % 或 _ 時,要使用ESCAPE 短語對通配符進行轉(zhuǎn)義。An Introduction to Database SyAn Introduction to Database System例題1) 匹配模板為固定字符串 例14 查詢學(xué)號為95001的學(xué)生的詳細情況

31、。 SELECT * FROM Student WHERE Sno LIKE 95001;等價于: SELECT * FROM Student WHERE Sno = 95001;An Introduction to Database SyAn Introduction to Database System例題(續(xù))2) 匹配模板為含通配符的字符串例15 查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;An Introduction to Database SyAn Introduction t

32、o Database System例題(續(xù))匹配模板為含通配符的字符串(續(xù))例16 查詢姓歐陽且全名為三個漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽_;An Introduction to Database SyAn Introduction to Database System例題(續(xù))匹配模板為含通配符的字符串(續(xù))例17 查詢名字中第2個字為陽字的學(xué)生的姓名和學(xué)號。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽%;An Introduction to Database

33、 SyAn Introduction to Database System例題(續(xù))匹配模板為含通配符的字符串(續(xù))例18 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉%;An Introduction to Database SyAn Introduction to Database System例題(續(xù))3) 使用換碼字符將通配符轉(zhuǎn)義為普通字符 例19 查詢DB_Design課程的課程號和學(xué)分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE D

34、B_Design ESCAPE An Introduction to Database SyAn Introduction to Database System例題(續(xù))使用換碼字符將通配符轉(zhuǎn)義為普通字符(續(xù))例20 查詢以DB_開頭,且倒數(shù)第3個字符為 i的課程的詳細情況。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ;An Introduction to Database SyAn Introduction to Database System(5) 涉及空值的查詢 使用謂詞 IS NULL 或 IS NOT NULL “IS

35、 NULL” 不能用 “= NULL” 代替例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;An Introduction to Database SyAn Introduction to Database System例題(續(xù)) 例22 查所有有成績的學(xué)生學(xué)號和課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;An Introduction to Database SyAn Introdu

36、ction to Database System(6) 多重條件查詢用邏輯運算符AND和 OR來聯(lián)結(jié)多個查詢條件 AND的優(yōu)先級高于OR 可以用括號改變優(yōu)先級可用來實現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND An Introduction to Database SyAn Introduction to Database System例題例23 查詢計算機系年齡在20歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23;An Introduction to Database S

37、yAn Introduction to Database System三、對查詢結(jié)果排序 使用ORDER BY子句 可以按一個或多個屬性列排序 升序:ASC;降序:DESC;缺省值為升序當排序列含空值時ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示 An Introduction to Database SyAn Introduction to Database System對查詢結(jié)果排序(續(xù)) 例24 查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分數(shù)降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grad

38、e DESC; An Introduction to Database SyAn Introduction to Database System查詢結(jié)果 Sno Grade - - 95010 95024 95007 92 95003 82 95010 82 95009 75 95014 61 95002 55An Introduction to Database SyAn Introduction to Database System對查詢結(jié)果排序(續(xù)) 例25 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。 SELECT * FROM Student OR

39、DER BY Sdept,Sage DESC; An Introduction to Database SyAn Introduction to Database System四、使用集函數(shù) 5類主要集函數(shù)計數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )計算總和SUM(DISTINCT|ALL ) 計算平均值A(chǔ)VG(DISTINCT|ALL )An Introduction to Database SyAn Introduction to Database System使用集函數(shù)(續(xù)) 求最大值MAX(DISTINCT|ALL ) 求最小值MIN(DISTINCT|ALL )DISTINCT短語:在計算時要取消指定列中的重復(fù)值A(chǔ)LL短語:不取消重復(fù)值A(chǔ)LL為缺省值A(chǔ)n Introduction to Database SyAn Introduction to Database System使用集函數(shù) (續(xù))例26 查詢學(xué)生總?cè)藬?shù)。 SELECT COUNT(*) FROM Student;例27 查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC;注:用DISTIN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論