第講數(shù)據(jù)定義PPT課件.ppt_第1頁
第講數(shù)據(jù)定義PPT課件.ppt_第2頁
第講數(shù)據(jù)定義PPT課件.ppt_第3頁
第講數(shù)據(jù)定義PPT課件.ppt_第4頁
第講數(shù)據(jù)定義PPT課件.ppt_第5頁
免費預(yù)覽已結(jié)束,剩余41頁可下載查看

下載本文檔

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

文檔簡介

1、Chapter3 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,SQL ( Structured Query Language ),即結(jié)構(gòu)化查詢語言。 SQL是一個通用的、功能極強大的關(guān)系數(shù)據(jù)庫語言。,3.1 SQL概述,SQL的產(chǎn)生和發(fā)展 1974年Boyce和Chamberlin提出 19751979年在IBM的System R上實現(xiàn) 1986年ANSI的數(shù)據(jù)庫委員會批準(zhǔn)了SQL作為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn) 1987年ISO也通過該標(biāo)準(zhǔn),3.1 SQL概述,SQL的特點 1. 綜合統(tǒng)一 2. 高度非過程化 3. 面向集合的操作方式 4. 以同一種語法結(jié)構(gòu)提供兩種使用方法 5. 語言簡潔,易學(xué)易用,SQL的基本

2、概念 支持SQL的RDBMS支持關(guān)系數(shù)據(jù)庫的三級模式結(jié)構(gòu)。,3.2 學(xué)生課程數(shù)據(jù)庫 包括以下三個表: 學(xué)生表:Student (Sno, Sname, Ssex, Sage, Sdept) 課程表:Course (Cno, Cname, Cpno, Ccredit) 選課表:SC (Sno, Cno, Grade) 各個表的數(shù)據(jù)示例參見課本P82,3.3 數(shù)據(jù)定義 SQL的數(shù)據(jù)定義功能包括對基本表(table)、視圖(view)、和索引(index)的定義。, 列級完整性約束條件 , 列級完整性約束條件 , :所要定義的基本表的名字 :組成該表的各個屬性(列) :涉及相應(yīng)屬性列的完整性約束條件

3、 :涉及一個或多個屬性列的完整性約束條件,1 定義基本表的一般格式為:,一、基本表的定義、修改與刪除,CREATE TABLE ( );,1. 整數(shù)數(shù)據(jù)類型:依整數(shù)數(shù)值的范圍大小,有BIT, INT , SMALLINT。 2. 精確數(shù)值類型:用來定義可帶小數(shù)部分的數(shù)字,有NUMERIC和DECIMAL,如:123.0、8000.56 3. 近似浮點數(shù)值數(shù)據(jù)類型:當(dāng)數(shù)值的位數(shù)太多時,可用此數(shù)據(jù)類型取其近似值,用FLOAT和REAL兩種。如:1.23E+10,SQL支持的數(shù)據(jù)類型 不同的DBMS支持的數(shù)據(jù)類型不完全相同,其中使用最多的是字符型數(shù)據(jù)和數(shù)值型數(shù)據(jù)。 例如,SQL SERVER 中常用

4、的數(shù)據(jù)類型有:,SQL支持的數(shù)據(jù)類型 4. 字符串?dāng)?shù)據(jù)類型:用來表示字符串的字段。包括:CHAR, VARCHAR, TEXT三種 5. 日期時間數(shù)據(jù)類型:用來表示日期與時間,依時間范圍與精確程度可分為DATETIME與SMALLDATETIME兩種。如:1998-06-08 15:30:00,常用完整性約束 實體完整性:PRIMARY KEY 參照完整性:FOREIGN KEY REFERENCES 用戶定義完整性: NOT NULL: 列值非空 UNIQE:列值唯一 CHECK:檢查列值是否滿足一個布爾表達式,例1 建立一個“學(xué)生”表Student, Student(Sno,Sname,S

5、sex,Sage,Sdept) 其中學(xué)號不能為空,值是唯一的,并且姓名取值也唯一。,CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(10) UNIQUE, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20) );,CREATE TABLE SC ( SNO CHAR(5), CNO CHAR(5), SCORE SMALLINT, PRIMARY KEY (SNO,CNO), FOREIGN KEY SNO REFERENCES S(SNO), FOREIGN KEY CNO RE

6、FERENCES C(CNO) );,練習(xí):解釋如下基本表的定義.,例2 建立一個課程表Course,并標(biāo)明主碼和外碼。 Course(Cno,Cname,Cpno,Ccredit),CREATE TABLE Course ( Cno CHAR(5) primary key, Cname CHAR(20), Cpno CHAR(5), Ccredit SMALLINT, Foreign key Cpno references Course(Cno) );,2 修改基本表,ALTER TABLE ADD 完整性約束 DROP MODIFY ; :要修改的基本表 ADD子句:增加新列 DROP子句

7、:刪除指定的完整性約束條件 MODIFY子句:用于修改列的數(shù)據(jù)類型,例3 向Student表增加“入學(xué)時間”列,其數(shù)據(jù)類型為日期型。,ALTER TABLE Student ADD Scome DATE;,例4 將Student表年齡的數(shù)據(jù)類型改為短整數(shù)。,ALTER TABLE Student MODIFY Sage SMALLINT;,DROP TABLE RESTRICT CASCADE; RESTRICT(缺省): 該表的刪除有限制條件。如,該表不能被其他表的約束所引用,不能有視圖、觸發(fā)器、存儲過程。 CASCADE :該表的刪除沒有限制條件。刪除基本表時,相關(guān)依賴對象一起被刪除。,3

8、 刪除基本表,例5 刪除Student表 DROP TABLEStudent ;,不同數(shù)據(jù)庫產(chǎn)品在遵循SQL標(biāo)準(zhǔn)的基礎(chǔ)上具體實現(xiàn)細(xì)節(jié)和處理策略會與標(biāo)準(zhǔn)有差別。例如,P89,二、索引的建立與刪除,索引是基本表的目錄,建立索引是加快查詢速度的有效手段 建立索引 DBA或表的屬主(即建立表的人)根據(jù)需要建立 有些DBMS自動建立以下列上的索引 PRIMARY KEY UNIQUE 維護索引 DBMS自動完成 使用索引 DBMS自動選擇是否使用索引以及使用哪些索引,語句格式 CREATE UNIQUE CLUSTER INDEX ON ( , ); 用指定要建索引的基本表名字 索引可以建立在該表的一列

9、或多列上,各列名之間用逗號分隔 用指定索引表中索引值的排列次序,升序:ASC,降序:DESC。缺省值為ASC。 UNIQUE: 唯一性索引。不允許索引列有同值;若已有同值,則不允許建立此索引。 CLUSTER:聚簇索引。表中元組按索引項的值排序并物理地聚集在一起。,1.建立索引,例6 為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個表建立索引。其中Student表按學(xué)號升序建唯一索引,Course表按課程號升序建唯一索引,SC表按學(xué)號升序和課程號降序建唯一索引。,CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE IN

10、DEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);,練習(xí):解釋如下索引的含義: CREATE CLUSTER INDEX Stusname ON Student(Sname);,在Student表的Sname(姓名)列上建立一個聚簇索引,而且Student表中的記錄將按照Sname值的升序存放,2. 刪除索引 DROP INDEX ; 刪除索引時,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。 例7 刪除Student表的Stusname索引。 DROP INDEX Stusname;,索引的有關(guān)說

11、明 可以動態(tài)地定義索引,即可以隨時建立和刪除索引; 一個表上可建多個索引; 不允許用戶在數(shù)據(jù)操作中引用索引,索引如何使用完全由系統(tǒng)決定; 應(yīng)在使用頻率高、經(jīng)常進行連接的列上建立索引; 索引可提高查詢效率,但索引過多耗費空間,且降低了插入、刪除、更新的效率。,3.4 數(shù)據(jù)查詢,3.4.1 單表查詢 3.4.2 連接查詢 3.4.3 嵌套查詢 3.4.4 集合查詢 3.4.5 小結(jié),示例數(shù)據(jù)庫,學(xué)生-課程數(shù)據(jù)庫 e.g.P82 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:SC(Sno

12、,Cno,Grade),概述,一般格式 SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;,3.4.1 單表查詢,查詢僅涉及一個表,是一種最簡單的查詢操作 一、選擇表中的若干列 二、選擇表中的若干元組 三、對查詢結(jié)果排序 四、使用集函數(shù) 五、對查詢結(jié)果分組,1. 查詢指定列,例1 查詢?nèi)w學(xué)生的學(xué)號與姓名。 例2 查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。,SELECT Sno,Sname FROM Student;,SELECT Sname,Sno,Sdept FROM Student;,考慮語句的執(zhí)行過程,一

13、、選擇表中的若干列,2.查詢?nèi)苛?例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。,SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或 SELECT * FROM Student;,3. 查詢經(jīng)過計算的值,例4 查全體學(xué)生的姓名及其出生年份。,SELECT Sname,2010-Sage FROM Student;,輸出結(jié)果: Sname 2010-Sage - - 李勇 1985 劉晨 1986 王名 1987 張立 1986,SELECT子句的可以是屬性列,也可以表達式,如算術(shù)表達式、字符串常量、函數(shù)等,例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字

14、母表示所有系名。,SELECT Sname,Year of Birth: ,2010-Sage, ISLOWER(Sdept) FROM Student;,輸出結(jié)果: Sname Year of Birth: 2010-Sage ISLOWER(Sdept) - - - - 李勇 Year of Birth: 1985 cs 劉晨 Year of Birth: 1986 is 王名 Year of Birth: 1987 ma 張立 Year of Birth: 1986 is,使用列別名改變查詢結(jié)果的列標(biāo)題,SELECT Sname NAME,Year of Birth: BIRTH,201

15、0-Sage BIRTHDAY,ISLOWER(Sdept) DEPARTMENT FROM Student 輸出結(jié)果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1985 cs 劉晨 Year of Birth: 1986 is 王名 Year of Birth: 1987 ma 張立 Year of Birth: 1986 is,假設(shè)SC表中有下列數(shù)據(jù) Sno Cno Grade - - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80,二、選擇表中的若干

16、元組,例6 查詢選修了課程的 學(xué)生學(xué)號。,結(jié)果: Sno - 95001 95001 95001 95002 95002,SELECT Sno FROM SC;,SELECT DISTINCT Sno FROM SC 結(jié)果: Sno - 95001 95002,1. 消除取值重復(fù)的行,2.查詢滿足條件的元組,WHERE子句常用的查詢條件,(1) 比較大小,在WHERE子句的中使用比較運算符 =,=, 邏輯運算符NOT + 比較運算符 例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。,SELECT Sname,Sage FROM Student WHERE Sage 20;,(2) 確定范圍,

17、使用謂詞 BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。 例11 查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡。,(3) 確定集合:謂詞IN用來查找屬性值屬于指定集合的元組。,使用謂詞 IN NOT IN 其中,:用逗號分隔的一組取值 例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計算機 科學(xué)系(CS)學(xué)生的姓名和性別。 例13查詢既不是信息系、數(shù)學(xué)系,也不是計算 機科學(xué)系的學(xué)生的姓名和性別。,(4) 字符串匹配:查找指定的屬性列值與匹配串相匹配的元組。,NOT LIKE ESCAPE ,通配符: %(百

18、分號) 代表任意長度(長度可以為0)的字符串 例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab 等都滿足該匹配串 _(下橫線) 代表任意單個字符 例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串,1) 匹配串為固定字符串 例14 查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。,SELECT * FROM Student WHERE Sno LIKE 95001; 等價于: SELECT * FROM Student WHERE Sno = 95001;,2) 匹配模板為含通配符的字符串 例15 查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。,SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;,例16 查詢所有不姓劉的學(xué)生姓名。,匹配模板為含通配符的字符串(續(xù)) 例17 查詢名字中第2個字為“陽”字的學(xué)生的姓名和學(xué)號。,SELECT Sname,Sno FROM Student WHERE Sname LIKE _

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論