




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第三章第三章 關系數(shù)據(jù)庫標準語言關系數(shù)據(jù)庫標準語言SQLSQL.第三章第三章 關系數(shù)據(jù)庫標準語言關系數(shù)據(jù)庫標準語言SQL3.1 SQL概述3.2 數(shù)據(jù)定義3.3 查詢3.4 數(shù)據(jù)更新3.5 視圖3.6 數(shù)據(jù)控制3.7 嵌入式SQL3.8 小結.3.1 SQL概述概述nSQL的特點n1. 綜合統(tǒng)一n2. 高度非過程化n3. 面向集合的操作方式n4. 以同一種語法結構提供兩種使用方法n5. 語言簡潔,易學易用.5. 語言簡捷,易學易用語言簡捷,易學易用表表 3.1 SQL語語言言的的動動詞詞SQL 功
2、功 能能動動 詞詞數(shù)數(shù) 據(jù)據(jù) 定定 義義CREATE, DROP, ALTER數(shù)數(shù) 據(jù)據(jù) 查查 詢詢SELECT數(shù)數(shù) 據(jù)據(jù) 操操 縱縱INSERT,UPDATEDELETE數(shù)數(shù) 據(jù)據(jù) 控控 制制GRANT,REVOKE.第三章第三章 關系數(shù)據(jù)庫標準語言關系數(shù)據(jù)庫標準語言SQL3.1 SQL概述3.2 數(shù)據(jù)定義3.3 查詢3.4 數(shù)據(jù)更新3.5 視圖3.6 數(shù)據(jù)控制3.7 嵌入式SQL3.8 小結.3.2 數(shù)數(shù) 據(jù)據(jù) 定定 義義 表表3.2 SQL的的數(shù)數(shù)據(jù)據(jù)定定義義語語句句操操 作作 方方 式式操操 作作 對對象象創(chuàng)創(chuàng) 建建刪刪 除除修修 改改表表CREATET ABLEDROPT ABLEA
3、LTERT ABLE視視 圖圖CREATEVIEWDROP VIEW索索 引引CREATEINDEXDROPINDEX.3.2.1 定義定義語句格式語句格式CREATE TABLE ( , , );n:所要定義的基本表的名字n:組成該表的各個屬性(列)n:涉及相應屬性列的完整性約束條件n:涉及一個或多個屬性列的完整性約束條件 .例題例題 例1 建立一個“學生”表Student,它由學號Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個屬性組成。其中學號不能為空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student (Sno CHAR(5) NOT N
4、ULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15); .定義基本表(續(xù))定義基本表(續(xù))n常用完整性約束n主碼約束: PRIMARY KEYn唯一性約束:UNIQUEn非空值約束:NOT NULLn參照完整性約束PRIMARY KEY與 UNIQUE的區(qū)別?.例題例題 (續(xù))(續(xù))n例2 建立一個“學生選課”表SC,它由學號Sno、課程號Cno,修課成績Grade組成,其中(Sno, Cno)為主碼。nCREATE TABLE SC(n Sno CHAR(5) ,n Cno CHAR(3) , n
5、 Grade int,n Primary key (Sno, Cno);.例題例題 (續(xù))(續(xù))SnoSnameSsexSageSdept 字字符符型型 字字符符型型 字字符符型型 整整數(shù)數(shù) 字字符符型型 長長度度為為5 5 長長度度為為2 20 0 長長度度為為1 1 長長度度為為1 15 5 不不能能為為空空值值.三、刪除基本表三、刪除基本表 DROP TABLE ; 基本表刪除 數(shù)據(jù)、表上的索引都刪除 表上的視圖往往仍然保留,但無法引用刪除基本表時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關該基本表及其索引的描述 (標準中沒有,認為表建立后就永久存在).例題例題例5 刪除Student表 DROP TA
6、BLEStudent ;.二、修改基本表二、修改基本表ALTER TABLE ADD 完整性約束 DROP MODIFY ;n:要修改的基本表nADD子句:增加新列和新的完整性約束條件nDROP子句:刪除指定的完整性約束條件nMODIFY子句:用于修改列名和數(shù)據(jù)類型.例題例題 例2 向Student表增加“入學時間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD Scome DATE;n不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。 .語句格式(續(xù))語句格式(續(xù))n刪除屬性列 直接/間接刪除n把表中要保留的列及其內容復制到一個新表中n刪除原表n再將新表重命名為原
7、表名直接刪除屬性列:(新)例:ALTER TABLE Student Drop Scome;. 例3 將年齡的數(shù)據(jù)類型改為半字長整數(shù)。 ALTER TABLE Student MODIFY Sage SMALLINT;n注:修改原有的列定義有可能會破壞已有數(shù)據(jù).例題例題 例4 刪除學生姓名必須取唯一值的約束。ALTER TABLE Student DROP UNIQUE(Sname); .3.2.2 建立與刪除索引建立與刪除索引 n建立索引是加快查詢速度的有效手段n建立索引nDBA或表的屬主(即建立表的人)根據(jù)需要建立n有些DBMS自動建立以下列上的索引n PRIMARY KEYn UNIQU
8、En維護索引n DBMS自動完成 n使用索引n DBMS自動選擇是否使用索引以及使用哪些索引.一、建立索引一、建立索引 n語句格式CREATE UNIQUE CLUSTER INDEX ON (, );n用指定要建索引的基本表名字n索引可以建立在該表的一列或多列上,各列名之間用逗號分隔n用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCnUNIQUE表明此索引的每一個索引值只對應唯一的數(shù)據(jù)記錄nCLUSTER表示要建立的索引是聚簇索引.例題例題 例6 為學生-課程數(shù)據(jù)庫中的Student,Course,SC三個表建立索引。其中Student表按學號升序建唯一索引,Course
9、表按課程號升序建唯一索引,SC表按學號升序和課程號降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); .建立索引建立索引 (續(xù))(續(xù))n唯一值索引n對于已含重復值的屬性列不能建UNIQUE索引n對某個列建立UNIQUE索引后,插入新記錄時DBMS會自動檢查新記錄在該列上是否取了重復值。這相當于增加了一個UNIQUE約束.建立索引建立索引 (續(xù))(續(xù))n聚簇索引n建
10、立聚簇索引后,基表中數(shù)據(jù)也需要按指建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項順序與表中記錄的物理聚簇索引的索引項順序與表中記錄的物理順序一致順序一致例:CREATE CLUSTER INDEX Stusname ON Student(Sname);在在Student表的表的Sname(姓名)列上建立一個聚簇索引,而(姓名)列上建立一個聚簇索引,而且且Student表中的記錄將按照表中的記錄將按照Sname值的升序存放值的升序存放 .建立索引建立索引 (續(xù))(續(xù))n在一個基本表上最多只能建立一個聚簇索引n聚簇索引的
11、用途:對于某些類型的查詢,可以提高查詢效率n聚簇索引的適用范圍n 很少對基表進行增刪操作n 很少對其中的變長列進行修改操作 .二、刪除索引二、刪除索引 DROP INDEX ;n刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關該索引的描述。例7 刪除Student表的Stusname索引。DROP INDEX Stusname;.3.3 查查 詢詢 3.3.1 概述3.3.2 單表查詢3.3.3 連接查詢3.3.4 嵌套查詢3.3.5 集合查詢3.3.6 小結 .3.3.1 概述概述 n語句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDE
12、R BY ASC|DESC ; .語句格式語句格式nSELECT子句:指定要顯示的屬性列nFROM子句:指定查詢對象(基本表或視圖)nWHERE子句:指定查詢條件n GROUP BY子句:對查詢結果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數(shù)。nHAVING短語:篩選出只有滿足指定條件的組nORDER BY子句:對查詢結果表按指定列值的升序或降序排序 .示例數(shù)據(jù)庫示例數(shù)據(jù)庫 學生-課程數(shù)據(jù)庫n學生表:Student(Sno,Sname,Ssex,Sage,Sdept)n課程表:Course(Cno,Cname,Cpno,Ccredit)n 學生選課表:SC(Sno,
13、Cno,Grade) .3.3 查查 詢詢 3.3.1 概述3.3.2 單表查詢3.3.3 連接查詢3.3.4 嵌套查詢3.3.5 集合查詢3.3.6 小結 .3.3.2 單表查詢單表查詢 查詢僅涉及一個表,是一種最簡單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對查詢結果排序四、使用集函數(shù)五、對查詢結果分組 .查詢指定列查詢指定列例1 查詢全體學生的學號與姓名。SELECT Sno,SnameFROM Student; 例2 查詢全體學生的姓名、學號、所在系。SELECT Sname,Sno,SdeptFROM Student;.查詢全部列查詢全部列例3 查詢全體學生的詳細記錄。
14、SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或SELECT *FROM Student; .3. 查詢經(jīng)過計算的值查詢經(jīng)過計算的值 SELECT子句的為表達式n算術表達式n字符串常量n函數(shù)n列別名n等 .3. 查詢經(jīng)過計算的值查詢經(jīng)過計算的值例4 查全體學生的姓名及其出生年份。SELECT Sname,2000-SageFROM Student; 輸出結果: Sname 2000-Sage - - 李勇 1976 劉晨 1977 王名 1978 張立 1978 .3. 查詢經(jīng)過計算的值查詢經(jīng)過計算的值例5 查詢全體學生的姓名、出生年份和所有系,
15、要求用小寫字母表示所有系名。SELECT Sname,Year of Birth: ,2000-Sage, ISLOWER(Sdept)FROM Student; .例題(續(xù))例題(續(xù))輸出結果: 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 .例例5.1 使用列使用列別名別名改變查詢結果的列標題改變查詢結果的列標題SELECT
16、 Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,ISLOWER(Sdept) DEPARTMENTFROM Student;輸出結果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1976 cs 劉晨 Year of Birth: 1977 is 王名 Year of Birth: 1978 ma 張立 Year of Birth: 1977 is.二、選擇表中的若干元組二、選擇表中的若干元組 n消除取值重復的行n查詢滿足條件的元組 .1. 消除取值重復的行消除取值重
17、復的行n在SELECT子句中使用DISTINCT短語假設SC表中有下列數(shù)據(jù) Sno Cno Grade - - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80.ALL 與與 DISTINCT 例6 查詢選修了課程的學生學號。(1) SELECT Sno FROM SC;或(默認 ALL) SELECT ALL Sno FROM SC; 結果: Sno - 95001 95001 95001 95002 95002 .例題(續(xù))例題(續(xù))(2) SELECT DISTINCT Sno FROM SC; 結果: Sno - 9500
18、1 95002 .例題(續(xù))例題(續(xù))n注意 DISTINCT短語的作用范圍是所有目標列例:查詢選修課程的各種成績錯誤的寫法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正確的寫法 SELECT DISTINCT Cno,Grade FROM SC; .2.查詢滿足條件的元組查詢滿足條件的元組表表3.3 常常 用用 的的 查查 詢詢 條條 件件查查 詢詢 條條 件件謂謂 詞詞比比 較較=, , = , = , != , , ! , ! ;N OT + 上上 述述 比比 較較 運運 算算 符符確確 定定 范范 圍圍BETW E EN A N D , N O
19、T BETW EEN A N D確確 定定 集集 合合IN , N OT IN字字 符符 匹匹 配配LIKE , N OT LIKE空空 值值IS N U LL , IS N O T N U LL多多 重重 條條 件件A N D , ORWHERE子句常用的查詢條件子句常用的查詢條件.(1) 比較大小比較大小在WHERE子句的中使用比較運算符n=,=,=,!= 或 ,!,!, n邏輯運算符NOT + 比較運算符例8 查詢所有年齡在20歲以下的學生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage = 20; .(2) 確定范圍確定范圍n使用謂詞
20、BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學生的姓名、系別和年齡。 SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; .例題(續(xù))例題(續(xù))例11 查詢年齡不在2023歲之間的學生姓名、系別和年齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23; .(3) 確定集合確定集合使用謂詞 IN , NOT IN :用逗號分隔的一組取值例12查詢信息系(IS)、數(shù)學系
21、(MA)和計 算機科學系(CS)學生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS );.(3) 確定集合確定集合例13查詢既不是信息系、數(shù)學系,也不是計算 機科學系的學生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS );.(4) 字符串匹配字符串匹配n NOT LIKE ESCAPE :指定匹配模板 匹配模板:固定字符串或含通配符的字符串 當匹配模板為固定字符串時, 可以用 = 運算符取代 LIKE 謂詞 用 != 或 運算符取代
22、 NOT LIKE 謂詞.通配符通配符w% (百分號) 代表任意長度(長度可以為0)的字符串n例:a%b表示以a開頭,以b結尾的任意長度的字符串。如acb,addgb,ab 等都滿足該匹配串_ (下橫線) 代表任意單個字符n例:a_b表示以a開頭,以b結尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串.ESCAPE 短語:短語:n當用戶要查詢的字符串本身就含有 % 或 _ 時,要使用ESCAPE 短語對通配符進行轉義。.例題例題1) 匹配模板為固定字符串 例14 查詢學號為95001的學生的詳細情況。 SELECT * FROM Student WHERE Sno LIKE 9500
23、1;等價于: SELECT * FROM Student WHERE Sno = 95001;.例題(續(xù))例題(續(xù))2) 匹配模板為含通配符的字符串例15 查詢所有姓劉學生的姓名、學號和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;.例題(續(xù))例題(續(xù))匹配模板為含通配符的字符串(續(xù))例16 查詢姓歐陽且全名為三個漢字的學生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽_;.例題(續(xù))例題(續(xù))匹配模板為含通配符的字符串(續(xù))例17 查詢名字中第2個字為陽字的學生的姓名
24、和學號。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽%;.例題(續(xù))例題(續(xù))匹配模板為含通配符的字符串(續(xù))例18 查詢所有不姓劉的學生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉%;.例題(續(xù))例題(續(xù))3) 使用換碼字符將通配符轉義為普通字符 例19 查詢DB_Design課程的課程號和學分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE .例題(續(xù))例題(續(xù))使用換碼字符
25、將通配符轉義為普通字符(續(xù))例20 查詢以DB_開頭,且倒數(shù)第3個字符為 i的課程的詳細情況。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ;.(5) 涉及空值的查詢涉及空值的查詢n 使用謂詞 IS NULL 或 IS NOT NULLn “IS NULL” 不能用 “= NULL” 代替例21 某些學生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢缺少成績的學生的學號和相應的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;.例題例題(續(xù)續(xù)) 例22 查所有有成績的學生
26、學號和課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;.(6) 多重條件查詢多重條件查詢用邏輯運算符AND和 OR來聯(lián)結多個查詢條件n AND的優(yōu)先級高于ORn 可以用括號改變優(yōu)先級可用來實現(xiàn)多種其他謂詞n NOT INn NOT BETWEEN AND .例題例題例23 查詢計算機系年齡在20歲以下的學生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23;.三、對查詢結果排序三、對查詢結果排序 使用ORDER BY子句n 可以按一個或多個屬性列排序n
27、 升序:ASC;降序:DESC;缺省值為升序當排序列含空值時nASC:排序列為空值的元組最后顯示nDESC:排序列為空值的元組最先顯示 .對查詢結果排序(續(xù))對查詢結果排序(續(xù)) 例24 查詢選修了3號課程的學生的學號及其成績,查詢結果按分數(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.對查詢結果排序(續(xù))對查詢結果排序(續(xù)) 例25
28、 查詢全體學生情況,查詢結果按所在系的系號升序排列,同一系中的學生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; .四、使用集函數(shù)四、使用集函數(shù) 5類主要集函數(shù)n計數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )n計算總和SUM(DISTINCT|ALL )n 計算平均值AVG(DISTINCT|ALL ).使用集函數(shù)(續(xù))使用集函數(shù)(續(xù)) 求最大值MAX(DISTINCT|ALL ) 求最小值MIN(DISTINCT|ALL )DISTINCT短語:在計算時要取消指定列中的重復值ALL短語:不取消重復值ALL為缺省值.使用集函數(shù)使用集函數(shù) (續(xù))(續(xù))例26 查詢學生總人數(shù)。 SELECT COUNT(*) FROM Student; 例27 查詢選修了課程的學生人數(shù)。 SE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶樓與茶藝表演團隊合作演出合同
- 農(nóng)村集體土地征收拆遷補償合同
- 水務企業(yè)水資源利用與財務管理制度
- 環(huán)保項目場地調研合同協(xié)議書范本
- 老人營養(yǎng)健康課件
- 美術課件彩虹
- 美術素描兒童課件下載
- 美術版畫介紹課件
- 美術政策解讀課件下載
- 安全工作總結幼兒園中班
- 血小板減少癥護理查房
- 浙江杭州市2024-2025學年高一下學期6月期末考試數(shù)學試題及答案
- 堿性電解水制氫過程中的純度影響因素研究
- 師傅帶徒弟管理制度
- (蘇教版)數(shù)學三年級下冊計算題“天天練”習題卡含105份題組
- 2025年中國郵政集團有限公司廣東省分公司人員招聘筆試備考試題及參考答案詳解1套
- 中建海外管理制度
- 農(nóng)產(chǎn)品產(chǎn)業(yè)園項目可行性研究報告專用模板
- 2025-2030中國全麥粉市場銷售狀況與競爭前景分析報告
- 2025至2030中國醫(yī)藥軟包裝行業(yè)市場發(fā)展分析及競爭格局與投資發(fā)展報告
- 主語從句超全課件
評論
0/150
提交評論