版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復(fù)雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 結(jié)構(gòu)化查詢語言SQL (Structured Query Language) 是一種面向集合的數(shù)據(jù)庫查詢語言。SQL語言是集數(shù)據(jù)查詢(Data Query)、數(shù)據(jù)操縱(Data Manipulation)、數(shù)據(jù)定義(Data Definition)和數(shù)據(jù)控制(Data Control)于一體的一種非過程化語言。 結(jié)構(gòu)化查詢語言SQL (Structured Q數(shù)據(jù)DBMSClient請(qǐng)求回答SQL 語言O(shè)racl
2、e 8i/9i/10g/11gSQL Server 2000、2005、2008、2012數(shù)據(jù)DBMSClient請(qǐng)求回答SQL 語言O(shè)racle 8第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復(fù)雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 SQL最早的版本是IBM開發(fā)的。是20世紀(jì)70年代早期作為Systems R項(xiàng)目的一部分實(shí)現(xiàn)的。現(xiàn)在有許多產(chǎn)品支持SQL語言,它已經(jīng)很明確地確立了自己作為標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫語言的地位。 1986年,美國國家標(biāo)準(zhǔn)化組織(ANSI)和國家標(biāo)準(zhǔn)化組織(ISO)發(fā)布了SQL標(biāo)準(zhǔn)
3、:SQL-86; 1989年,發(fā)布了SQL-89; 1992年,發(fā)布了SQL-92; 1999年,發(fā)布了SQL-99; 2003年,發(fā)布了SQL-2003; 2006年,發(fā)布了SQL-2006; SQL最早的版本是IBM開發(fā)的。是20世紀(jì)70年代早 SQL語言有以下幾部分: 數(shù)據(jù)定義語言; 數(shù)據(jù)操作語言; 完整性; 視圖定義: 嵌入式SQL和動(dòng)態(tài)SQL: 授權(quán) SQL語言有以下幾部分:SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲(chǔ)文件1存儲(chǔ)文件2內(nèi)模式外模式模 式SQL數(shù)據(jù)庫體系結(jié)構(gòu)(三級(jí)模式)SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲(chǔ)文件1 外模式對(duì)應(yīng)于視圖和部分基本表,
4、模式對(duì)應(yīng)于基本表,內(nèi)模式對(duì)應(yīng)于存儲(chǔ)文件。特征如下: 一個(gè)SQL模式(Schema)是表和約束的集合。 一個(gè)表(Table)是行(Row)的集合,每行是列(Column)的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。 個(gè)表可以是一個(gè)基本表,也可以是一個(gè)視圖,基本表是實(shí)際存儲(chǔ)在數(shù)據(jù)庫中的表,視圖是一個(gè)虛表。 一個(gè)基本表可以跨一個(gè)或多個(gè)存儲(chǔ)文件,一個(gè)存儲(chǔ)文件也可存放一個(gè)或多個(gè)基本表 。 外模式對(duì)應(yīng)于視圖和部分基本表,模式對(duì)應(yīng)于基本表,SQL語言的特點(diǎn): 1.集DDL、DML、DCL于一體 SQL語言集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL的功能于一體,語言風(fēng)格統(tǒng)一,可以獨(dú)立完成數(shù)據(jù)庫生命周期中的全
5、部活動(dòng) 。 2.高度非過程化 SQL語言進(jìn)行數(shù)據(jù)操作,用戶只需提出“做什么”,而不必指明“怎么做”,用戶無需了解存取路徑 。SQL語言的特點(diǎn): 1.集DDL、DML、DCL于 3.面向集合的操作方式 4.一種語法提供兩種操作方式 交互式操作和嵌入式操作。 5. 功能強(qiáng)大、語言簡(jiǎn)潔 設(shè)計(jì)巧妙,語言十分簡(jiǎn)潔 ,核心功能只用了9個(gè)動(dòng)詞: CREATE、ALTER、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE 。 3.面向集合的操作方式數(shù)據(jù)定義(DDL) Create table Drop table Create View Drop View Creat
6、e Index Drop Index 數(shù)據(jù)操縱(DML) Select Update Insert Delete數(shù)據(jù)控制(DCL) Grant Revoke數(shù)據(jù)定義(DDL) 數(shù)據(jù)類型 1.字符型(varchar,char) 2.文本型 (Text) 3.數(shù)值型 整數(shù):(Int,Smallint,Tinyint) 小數(shù):Numeric 錢數(shù):Money 4.邏輯性 (Bit) 5.日期型 (Datetime, SmallDatetime) 數(shù)據(jù)類型第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復(fù)雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查
7、詢語言-SQL 3.1 SQL概述設(shè)有一個(gè)學(xué)生-課程數(shù)據(jù)庫,包括學(xué)生關(guān)系Student,課程關(guān)系Course和選修關(guān)系SC。其關(guān)系模式分別為: Student(Sno,Sname,Ssex,Sage,Sdept); Course(Cno,Cname,Cpno,Ccredit) SC(Sno,Cno,Grade) 設(shè)有一個(gè)學(xué)生-課程數(shù)據(jù)庫,包括學(xué)生關(guān)系Student,課一、數(shù)據(jù)定義命令1.模式的定義 Create Schema 模式名 Authorization ;例1:定義一個(gè)學(xué)生-課程模式2.刪除模式Drop Schema ;例2:刪除學(xué)生-課程模式一、數(shù)據(jù)定義命令3.表結(jié)構(gòu)的建立、刪除與修
8、改(1)表結(jié)構(gòu)的建立Create Table ( 列級(jí)完整性約束, 列級(jí)完整性約束, 列級(jí)完整性約束, ,表級(jí)完整性約束條件);3.表結(jié)構(gòu)的建立、刪除與修改例3:建立一個(gè)學(xué)生表Student例4:建立一個(gè)課程表Course例5:建立一個(gè)選課表SCCreate Table Course (Cno Char(4) Primary Key, Cname Char(20), Cpno Char(4), Ccredit Smallint, Foreign Key Cpno References Course(Cno);例3:建立一個(gè)學(xué)生表StudentCreate Table Create Table
9、SC (Sno Char(9) , Cno Char(4), Grade Smallint, Primary Key (Sno, Cno), Foreign Key Sno References Student(Sno) Foreign Key Cno References Course(Cno);Create Table SC(2)表結(jié)構(gòu)的刪除 Drop Table Restrict | Cascade;例6:刪除Student表(3)表結(jié)構(gòu)的修改Alter TableAdd 完整性約束Drop Alter Column ;例7:向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。(2
10、)表結(jié)構(gòu)的刪除例8:將年齡的數(shù)據(jù)類型由字符型改為整數(shù)例9:增加課程名稱必須取唯一值的約束條件4.索引的建立與刪除(1)建立索引 Create Unique/Cluster Index On ( Asc/Desc , Asc/Desc); 例8:將年齡的數(shù)據(jù)類型由字符型改為整數(shù)例10:為Student、Course和SC 3個(gè)表建立索引。Student按學(xué)號(hào)升序建唯一索引,Course表按課程號(hào)升序建唯一索引,SC按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。(2)索引刪除Drop Index ;例11:刪除Student表的Stusname索引例10:為Student、Course和SC 3個(gè)表建立索引二
11、、數(shù)據(jù)操縱命令 1.數(shù)據(jù)查詢 Select Distinct|All From Where Group By Having Order By Asc|Desc; 二、數(shù)據(jù)操縱命令 1.數(shù)據(jù)查詢(1)單表查詢 查詢僅涉及一個(gè)表:選擇表中的若干列選擇表中的若干元組ORDER BY子句聚集函數(shù)GROUP BY子句(1)單表查詢 查詢僅涉及一個(gè)表:查詢指定列例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。例2 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。選擇表中的若干列查詢指定列選擇表中的若干列選出所有屬性列:在SELECT關(guān)鍵字后面列出所有列名 將指定為 *例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。選出所有屬性列:查詢經(jīng)過計(jì)算的值 SE
12、LECT子句的可以為:算術(shù)表達(dá)式字符串常量函數(shù)列別名 查詢經(jīng)過計(jì)算的值 SELECT子句的可以為:例4 查全體學(xué)生的姓名及其出生年份。例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名例4 查全體學(xué)生的姓名及其出生年份。選擇表中的若干元組消除取值重復(fù)的行 如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL 指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行 例6 查詢選修了課程的學(xué)生學(xué)號(hào)。選擇表中的若干元組消除取值重復(fù)的行查詢滿足條件的元組查 詢 條 件謂 詞比 較=,=,=,!=,!,!;NOT+上述比較運(yùn)算符確定范圍BETWEEN AND,NOT BETWEEN AND確定集
13、合IN,NOT IN字符匹配LIKE,NOT LIKE空 值IS NULL,IS NOT NULL多重條件(邏輯運(yùn)算)AND,OR,NOT常用的查詢條件查詢滿足條件的元組查 詢 條 件謂 詞比 較=,比較大小例7 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的姓名例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡 例9 查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)。 比較大小例7 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的姓名確定范圍謂詞: BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡例11 查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡確定范圍謂詞:
14、 BETWEEN AND 確定集合謂詞:IN , NOT IN 例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。確定集合謂詞:IN , NOT IN 字符匹配謂詞:NOT LIKE ESCAPE 例14 查詢學(xué)號(hào)為200215121的學(xué)生的詳細(xì)情況例15 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別例16 查詢姓歐陽且全名為三個(gè)漢字的學(xué)生的姓名 字符匹配謂詞:NOT LIKE 例17 查詢名字中第2個(gè)字為“陽”字的學(xué)生的姓名和學(xué)號(hào)例18 查詢所有不姓劉的學(xué)生姓名。例19 查詢DB_Design課程的課程
15、號(hào)和學(xué)分例20 查詢以“DB_”開頭,且倒數(shù)第3個(gè)字符為i的課程的詳細(xì)情況 例17 查詢名字中第2個(gè)字為“陽”字的學(xué)生的姓名和涉及空值的查詢謂詞: IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)例22 查詢所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào) 涉及空值的查詢謂詞: IS NULL 或 IS NOT NU多重條件查詢邏輯運(yùn)算符:AND和 OR來聯(lián)結(jié)多個(gè)查詢條件 AND的優(yōu)先級(jí)高于OR 可以用括號(hào)改變優(yōu)先級(jí)例23 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名多重條件查詢邏輯運(yùn)
16、算符:AND和 OR來聯(lián)結(jié)多個(gè)查詢條件ORDER BY子句 ORDER BY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示 ORDER BY子句 ORDER BY子句例24 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列例25 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系名升序排列,同一系中的學(xué)生按年齡降序排列 例24 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成聚集函數(shù) 計(jì)數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )計(jì)算總和SUM(DIST
17、INCT|ALL ) 計(jì)算平均值A(chǔ)VG(DISTINCT|ALL )最大最小值 MAX(DISTINCT|ALL ) MIN(DISTINCT|ALL )聚集函數(shù) 計(jì)數(shù)例26 查詢學(xué)生總?cè)藬?shù)例27 查詢選修了課程的學(xué)生人數(shù)例28 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)例29 查詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù) 例30查詢學(xué)生200215012選修課程的總學(xué)分?jǐn)?shù) 例26 查詢學(xué)生總?cè)藬?shù)GROUP BY子句 例31 求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)例32 查詢選修了3門以上課程的學(xué)生學(xué)號(hào)GROUP BY子句 例31 求各個(gè)課程號(hào)及相應(yīng)的選課HAVING短語與WHERE子句的區(qū)別:作用對(duì)象不同WHERE子句作用于基表或
18、視圖,從中選擇滿足條件的元組HAVING短語作用于組,從中選擇滿足條件的組 HAVING短語與WHERE子句的區(qū)別:(2)連接查詢 連接查詢:同時(shí)涉及多個(gè)表的查詢連接條件或連接謂詞:用來連接兩個(gè)表的條件 一般格式:. . BETWEEN . AND .連接字段:連接謂詞中的列名稱連接條件中的各連接字段類型必須是可比的,但名字不必是相同的(2)連接查詢 連接查詢:同時(shí)涉及多個(gè)表的查詢等值與非等值連接查詢 等值連接:連接運(yùn)算符為=例33 查詢每個(gè)學(xué)生及其選修課程的情況自然連接:例34 對(duì)例33用自然連接完成。 等值與非等值連接查詢 等值連接:連接運(yùn)算符為=自身連接 一個(gè)表與其自己進(jìn)行連接需要給表起
19、別名以示區(qū)別由于所有屬性名都是同名屬性,因此必須使用別名前綴例35查詢每一門課的間接先修課(即先修課的先修課) 自身連接 一個(gè)表與其自己進(jìn)行連接 FIRST表(Course表) Cno CnameCpnoCcredit 1數(shù)據(jù)庫 5 4 2數(shù)學(xué) 2 3信息系統(tǒng) 1 4 4操作系統(tǒng) 6 3 5數(shù)據(jù)結(jié)構(gòu) 7 4 6數(shù)據(jù)處理 2 7PASCAL語言 6 4 FIRST表(Course表) Cno CnameCno CnameCpnoCcredit 1數(shù)據(jù)庫 5 4 2數(shù)學(xué) 2 3信息系統(tǒng) 1 4 4操作系統(tǒng) 6 3 5數(shù)據(jù)結(jié)構(gòu) 7 4 6數(shù)據(jù)處理 2 7PASCAL語言 6 4 SECOND表(Co
20、urse表) Cno CnameCpnoCcredit 1數(shù)據(jù)庫 5 復(fù)合條件連接復(fù)合條件連接:WHERE子句中含多個(gè)連接條件例36查詢選修2號(hào)課程且成績(jī)?cè)?0分以上的所有學(xué)生的學(xué)號(hào)和姓名例37查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)復(fù)合條件連接復(fù)合條件連接:WHERE子句中含多個(gè)連接條件(3)嵌套查詢一個(gè)SELECT-FROM-WHERE語句稱為一個(gè)查詢塊將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢 (3)嵌套查詢一個(gè)SELECT-FROM-WHERE語句稱為 SELECT Sname /*外層查詢/父查詢*/ FROM Student WH
21、ERE Sno IN (SELECT Sno /*內(nèi)層查詢/子查詢*/ FROM SC WHERE Cno= 2 ); SELECT Sname 子查詢的限制不能使用ORDER BY子句層層嵌套方式反映了 SQL語言的結(jié)構(gòu)化有些嵌套查詢可以用連接運(yùn)算替代子查詢的限制不能使用ORDER BY子句帶有IN謂詞的子查詢例38 查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生 此查詢要求可以分步來完成 確定“劉晨”所在系名(結(jié)果為CS) 查找所有在CS系學(xué)習(xí)的學(xué)生。例39查詢選修了課程名為“信息系統(tǒng)”的學(xué)生學(xué)號(hào)和姓名 帶有IN謂詞的子查詢例38 查詢與“劉晨”在同一個(gè)系學(xué)帶有ANY(SOME)或ALL謂詞的子查詢
22、謂詞語義ANY:任意一個(gè)值A(chǔ)LL:所有值帶有ANY(SOME)或ALL謂詞的子查詢 謂詞語義需要配合使用比較運(yùn)算符 ANY大于子查詢結(jié)果中的某個(gè)值 ALL大于子查詢結(jié)果中的所有值 ANY小于子查詢結(jié)果中的某個(gè)值 = ANY大于等于子查詢結(jié)果中的某個(gè)值 = ALL大于等于子查詢結(jié)果中的所有值= ANY小于等于子查詢結(jié)果中的某個(gè)值 = ALL小于等于子查詢結(jié)果中的所有值= ANY等于子查詢結(jié)果中的某個(gè)值 =ALL等于子查詢結(jié)果中的所有值(通常沒有實(shí)際意義)!=(或)ANY不等于子查詢結(jié)果中的某個(gè)值!=(或)ALL不等于子查詢結(jié)果中的任何一個(gè)值需要配合使用比較運(yùn)算符例40 查詢其他系中比計(jì)算機(jī)科學(xué)某
23、一學(xué)生年齡小的學(xué)生姓名和年齡例41 查詢其他系中比計(jì)算機(jī)科學(xué)系所有學(xué)生年齡都小的學(xué)生姓名及年齡。例40 查詢其他系中比計(jì)算機(jī)科學(xué)某一學(xué)生年齡集合查詢集合操作的種類并操作UNION交操作INTERSECT差操作EXCEPT參加集合操作的各查詢結(jié)果的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同 集合查詢集合操作的種類例42 查詢計(jì)算機(jī)科學(xué)系的學(xué)生及年齡不大于19歲的學(xué)生。例43 查詢選修了課程1或者選修了課程2的學(xué)生。例44 查詢計(jì)算機(jī)科學(xué)系的學(xué)生與年齡不大于19歲的學(xué)生的交集例45 查詢既選修了課程1又選修了課程2的學(xué)生例46 查詢計(jì)算機(jī)科學(xué)系的學(xué)生與年齡不大于19歲的學(xué)生的差集。例42 查詢計(jì)算機(jī)
24、科學(xué)系的學(xué)生及年齡不大于19歲2.數(shù)據(jù)輸入 Insert Into(屬性列表) Values ();例1將一個(gè)新學(xué)生元祖(學(xué)號(hào)200215128:姓名:陳冬;性別:男;所在系:IS 年齡:18)插入到Student表中。例2插入一條選課記錄(200215128,1)2.數(shù)據(jù)輸入3.數(shù)據(jù)更新 Update Set= , =, Where ;例1將學(xué)生200215128的年齡改為22例2將所有學(xué)生的年齡增加1歲3.數(shù)據(jù)更新4.數(shù)據(jù)刪除 Delete From Where;例1 刪除學(xué)號(hào)為 200215128的學(xué)生記錄例2 刪除所有學(xué)生的選課記錄4.數(shù)據(jù)刪除四、數(shù)據(jù)控制命令授權(quán)GRANT ON TO
25、 WITH GRANT OPTION; 允許接受權(quán)限者將權(quán)限傳遞給其它用戶 四、數(shù)據(jù)控制命令GRANT ON 表名或視圖Principle and Application of DataBase 例1 把查詢Student表權(quán)限授給用戶U1例2 把對(duì)Student表和Course表的全部權(quán)限授予用戶U2和U3例3 把對(duì)表SC的查詢權(quán)限授予所有用戶例4 把查詢Student表和修改學(xué)生學(xué)號(hào)的權(quán)限授給用戶U4例5 把對(duì)表SC的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶Principle and Application of D角色 角色是對(duì)權(quán)限的集中管理。每個(gè)角色都有一個(gè)給定的名
26、稱,它是一組系統(tǒng)權(quán)限和對(duì)象權(quán)限的集合,當(dāng)把某角色授予某個(gè)用戶,該用戶就會(huì)自動(dòng)獲得該角色包括的所有權(quán)限。使用角色將使得授予和撤銷權(quán)限都比較方便,通過對(duì)一個(gè)角色添加或刪除權(quán)限,從而可以改變被授予該角色的用戶組的權(quán)限。當(dāng)需要修改用戶的權(quán)限時(shí),只需對(duì)角色進(jìn)行修改,不必對(duì)單個(gè)用戶進(jìn)行修改。 角色 角色是對(duì)權(quán)限的集中管理。每個(gè)角色都有一個(gè)給定的創(chuàng)建和刪除角色CREATE ROLE ; DROP ROLE ;例6創(chuàng)建角色role1和role2。例7將Student表的查詢、插入權(quán)限授予角色role1。例8刪除角色role2。創(chuàng)建和刪除角色授權(quán)權(quán)限的撤銷REVOKE ON FROM CASCADE|RESTR
27、ICT;例8撤銷U1用戶對(duì)表Student的查詢權(quán)限。例9收回所有用戶對(duì)表SC的查詢的權(quán)限。例10把用戶U5對(duì)SC表的Insert權(quán)限收回。授權(quán)權(quán)限的撤銷REVOKE ON 表名第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復(fù)雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述視圖的特點(diǎn):虛表,是從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表只存放視圖的定義,不存放視圖對(duì)應(yīng)的數(shù)據(jù)基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變視圖的特點(diǎn):視圖的作用1.視圖對(duì)重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨(dú)立性 2.視圖能夠簡(jiǎn)化用戶的操
28、作3. 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)視圖的作用1.視圖對(duì)重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯基于視圖的操作查詢刪除受限更新定義基于該視圖的新視圖基于視圖的操作創(chuàng)建視圖CREATE VIEW ( ,) AS WITH CHECK OPTION;創(chuàng)建視圖CREATE VIEW 組成視圖的屬性列名:全部省略或全部指定子查詢不允許含有ORDER BY子句和DISTINCT短語RDBMS執(zhí)行CREATE VIEW語句時(shí)只是把視圖定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對(duì)視圖查詢時(shí),按視圖的定義從基本表中將數(shù)據(jù)查出。組成視圖的屬性列名:全部省略或全部指定例1 建立信息系學(xué)生的視圖。例2建立信息系學(xué)
29、生的視圖,并要求進(jìn)行修改和插入操作時(shí)仍需保證該視圖只有信息系的學(xué)生 。例3 建立信息系選修了1號(hào)課程的學(xué)生視圖。例4 建立信息系選修了1號(hào)課程且成績(jī)?cè)?0分以上的學(xué)生的視圖。 例1 建立信息系學(xué)生的視圖。例5 定義一個(gè)反映學(xué)生出生年份的視圖。例6 將學(xué)生的學(xué)號(hào)及他的平均成績(jī)定義為一個(gè)視圖。 例5 定義一個(gè)反映學(xué)生出生年份的視圖。刪除視圖DROP VIEW ;該語句從數(shù)據(jù)字典中刪除指定的視圖定義如果該視圖上還導(dǎo)出了其他視圖,使用CASCADE級(jí)聯(lián)刪除語句,把該視圖和由它導(dǎo)出的所有視圖一起刪除 刪除基表時(shí),由該基表導(dǎo)出的所有視圖定義都必須顯式地使用DROP VIEW語句刪除 刪除視圖DROP VI
30、EW ;例8刪除視圖BT_S: DROP VIEW BT_S; 查詢視圖用戶角度:查詢視圖與查詢基本表相同 RDBMS實(shí)現(xiàn)視圖查詢的方法:視圖消解法 進(jìn)行有效性檢查 轉(zhuǎn)換成等價(jià)的對(duì)基本表的查詢 執(zhí)行修正后的查詢例8刪除視圖BT_S: DROP VIEW BT_S;查例9 在信息系學(xué)生的視圖中找出年齡小于20歲的學(xué)生。例10 查詢選修了1號(hào)課程的信息系學(xué)生。例11在S_G視圖中查詢平均成績(jī)?cè)?0分以上的學(xué)生學(xué)號(hào)和平均成績(jī) 例9 在信息系學(xué)生的視圖中找出年齡小于20更新視圖例12 將信息系學(xué)生視圖IS_Student中學(xué)號(hào)200215122的學(xué)生姓名改為“劉辰”。例13 向信息系學(xué)生視圖IS_S中
31、插入一個(gè)新的學(xué)生記錄:200215129,趙新,20歲。例14刪除信息系學(xué)生視圖IS_Student中學(xué)號(hào)為200215129的記錄更新視圖例12 將信息系學(xué)生視圖IS_Student中更新視圖的限制:一些視圖是不可更新的,因?yàn)閷?duì)這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新。允許對(duì)行列子集視圖進(jìn)行更新對(duì)其他類型視圖的更新不同系統(tǒng)有不同限制更新視圖的限制:一些視圖是不可更新的,因?yàn)榈?章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復(fù)雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 概念 數(shù)據(jù)的完整性是指
32、數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和一致性,這是數(shù)據(jù)庫理論中的重要概念。正確性是指數(shù)據(jù)的合法性;有效性是指數(shù)據(jù)是否在定義的有效范圍;一致性是指表示同一個(gè)事實(shí)的兩個(gè)數(shù)據(jù)應(yīng)相同。 數(shù)據(jù)完整性包括實(shí)體完整性、參照完整性和用戶自定義的完整性。 概念 數(shù)據(jù)的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效SQL完整性主碼(PRIMARY KEY)約束外碼(FOREIGN KEY )約束非空值(NOT NULL)約束鍵值唯一(UNIQUE)約束檢查(CHECK)約束觸發(fā)器(TRIGGER)約束SQL完整性主碼(PRIMARY KEY)約束主碼(PRIMARY KEY)約束 主碼(也稱主鍵)約束是指關(guān)系表具有一個(gè)特定的最小字
33、段集合,通過主碼可以唯一確定每條記錄。能唯一確定每條記錄的關(guān)系的字段集合稱為關(guān)系的主碼(PRIMARY KEY) 外碼(FOREIGN KEY )約束 涉及兩個(gè)關(guān)系的最普通的完整性約束是外碼約束。在SQL中外碼約束是通過定義關(guān)系表或者修改表時(shí)實(shí)現(xiàn)的。 主碼(PRIMARY KEY)約束非空值(NOT NULL)約束 非空值約束用來限制關(guān)系表中某列的值不能為空值。在SQL中非空值約束是在定義表語句中用NOT NULL關(guān)鍵字實(shí)現(xiàn)的。 鍵值唯一(UNIQUE)約束 鍵值唯一約束規(guī)定一列中的每個(gè)值或者列的組合必須是唯一的,即在一個(gè)關(guān)系表中的任何兩行在指定的屬性列或?qū)傩粤械慕M合沒有相同的值。 檢查(CHECK)約束 檢查約束是根據(jù)邏輯表達(dá)式來限定值域的,SQL中對(duì)檢查約束的實(shí)現(xiàn),是在定義表語句中用CHECK短語完成的。 CHECK(條件表達(dá)式); 非空值(NOT NULL)約束觸發(fā)器 觸發(fā)器是一系列在表中的數(shù)據(jù)修改時(shí)要執(zhí)行的SQL語句的集合。是過程化SQL代碼。當(dāng)某個(gè)數(shù)據(jù)操作事件發(fā)生時(shí),DBMS自動(dòng)調(diào)用觸發(fā)器。觸發(fā)器中可以包含復(fù)雜的Transact-SQL語言,觸發(fā)整體被看作一個(gè)事務(wù),可以回滾。 SQL Server 2000中有兩種類型的觸發(fā)器:DML觸發(fā)器和DDL觸發(fā)器。 觸發(fā)器創(chuàng)建觸發(fā)器 CREATE TRIGGER trigger_na
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《外科營(yíng)養(yǎng)代謝教學(xué)》課件
- 《增值稅計(jì)算》課件
- 《EVDO技術(shù)交流》課件
- 天津市非住宅購房合同
- 2025年梅州b2貨運(yùn)資格證多少道題
- 2021年中秋節(jié)活動(dòng)小結(jié)范文10篇
- 2025年郴州a2駕駛證貨運(yùn)從業(yè)資格證模擬考試
- 體育用品庫房延期協(xié)議
- 廣州市物業(yè)公共糾紛解決機(jī)制
- 品牌合作定向合作協(xié)議
- 2024年度土建升壓站工程勞務(wù)分包合同:就土建升壓站工程勞務(wù)分包事項(xiàng)達(dá)成一致3篇
- 廣東省廣州荔灣區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 醫(yī)藥高等數(shù)學(xué)知到智慧樹章節(jié)測(cè)試課后答案2024年秋浙江中醫(yī)藥大學(xué)
- ICU患者外出檢查的護(hù)理
- 校地結(jié)對(duì)共建合作協(xié)議書(2篇)
- 重慶育才中學(xué)教育集團(tuán) 2024-2025學(xué)年上學(xué)期八年級(jí)期中考試數(shù)學(xué)試題
- 零信任環(huán)境下的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)管理優(yōu)化
- 國家開放大學(xué)電大??啤督ㄖこ添?xiàng)目管理》2024期末試題及答案
- 2024年“七五”普法考試題庫及答案(共100題)
- 2024年官方獸醫(yī)牧運(yùn)通考試題庫(含答案)
- 社區(qū)教育志愿者培訓(xùn)教材
評(píng)論
0/150
提交評(píng)論