版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復雜完整性約束 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請求回答SQL 語言O(shè)racl
2、e 8i/9i/10g/11gSQL Server 2000、2005、2008、2012數(shù)據(jù)DBMSClient請求回答SQL 語言O(shè)racle 8第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 SQL最早的版本是IBM開發(fā)的。是20世紀70年代早期作為Systems R項目的一部分實現(xiàn)的?,F(xiàn)在有許多產(chǎn)品支持SQL語言,它已經(jīng)很明確地確立了自己作為標準關(guān)系數(shù)據(jù)庫語言的地位。 1986年,美國國家標準化組織(ANSI)和國家標準化組織(ISO)發(fā)布了SQL標準
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世紀70年代早 SQL語言有以下幾部分: 數(shù)據(jù)定義語言; 數(shù)據(jù)操作語言; 完整性; 視圖定義: 嵌入式SQL和動態(tài)SQL: 授權(quán) SQL語言有以下幾部分:SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲文件1存儲文件2內(nèi)模式外模式模 式SQL數(shù)據(jù)庫體系結(jié)構(gòu)(三級模式)SQL視圖1視圖2基本表1基本表2基本表3基本表4存儲文件1 外模式對應于視圖和部分基本表,
4、模式對應于基本表,內(nèi)模式對應于存儲文件。特征如下: 一個SQL模式(Schema)是表和約束的集合。 一個表(Table)是行(Row)的集合,每行是列(Column)的序列,每列對應一個數(shù)據(jù)項。 個表可以是一個基本表,也可以是一個視圖,基本表是實際存儲在數(shù)據(jù)庫中的表,視圖是一個虛表。 一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表 。 外模式對應于視圖和部分基本表,模式對應于基本表,SQL語言的特點: 1.集DDL、DML、DCL于一體 SQL語言集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL的功能于一體,語言風格統(tǒng)一,可以獨立完成數(shù)據(jù)庫生命周期中的全
5、部活動 。 2.高度非過程化 SQL語言進行數(shù)據(jù)操作,用戶只需提出“做什么”,而不必指明“怎么做”,用戶無需了解存取路徑 。SQL語言的特點: 1.集DDL、DML、DCL于 3.面向集合的操作方式 4.一種語法提供兩種操作方式 交互式操作和嵌入式操作。 5. 功能強大、語言簡潔 設(shè)計巧妙,語言十分簡潔 ,核心功能只用了9個動詞: 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中的復雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查
7、詢語言-SQL 3.1 SQL概述設(shè)有一個學生-課程數(shù)據(jù)庫,包括學生關(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è)有一個學生-課程數(shù)據(jù)庫,包括學生關(guān)系Student,課一、數(shù)據(jù)定義命令1.模式的定義 Create Schema 模式名 Authorization ;例1:定義一個學生-課程模式2.刪除模式Drop Schema ;例2:刪除學生-課程模式一、數(shù)據(jù)定義命令3.表結(jié)構(gòu)的建立、刪除與修
8、改(1)表結(jié)構(gòu)的建立Create Table ( 列級完整性約束, 列級完整性約束, 列級完整性約束, ,表級完整性約束條件);3.表結(jié)構(gòu)的建立、刪除與修改例3:建立一個學生表Student例4:建立一個課程表Course例5:建立一個選課表SCCreate Table Course (Cno Char(4) Primary Key, Cname Char(20), Cpno Char(4), Ccredit Smallint, Foreign Key Cpno References Course(Cno);例3:建立一個學生表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表增加“入學時間”列,其數(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個表建立索引。Student按學號升序建唯一索引,Course表按課程號升序建唯一索引,SC按學號升序和課程號降序建唯一索引。(2)索引刪除Drop Index ;例11:刪除Student表的Stusname索引例10:為Student、Course和SC 3個表建立索引二
11、、數(shù)據(jù)操縱命令 1.數(shù)據(jù)查詢 Select Distinct|All From Where Group By Having Order By Asc|Desc; 二、數(shù)據(jù)操縱命令 1.數(shù)據(jù)查詢(1)單表查詢 查詢僅涉及一個表:選擇表中的若干列選擇表中的若干元組ORDER BY子句聚集函數(shù)GROUP BY子句(1)單表查詢 查詢僅涉及一個表:查詢指定列例1 查詢?nèi)w學生的學號與姓名。例2 查詢?nèi)w學生的姓名、學號、所在系。選擇表中的若干列查詢指定列選擇表中的若干列選出所有屬性列:在SELECT關(guān)鍵字后面列出所有列名 將指定為 *例3 查詢?nèi)w學生的詳細記錄。選出所有屬性列:查詢經(jīng)過計算的值 SE
12、LECT子句的可以為:算術(shù)表達式字符串常量函數(shù)列別名 查詢經(jīng)過計算的值 SELECT子句的可以為:例4 查全體學生的姓名及其出生年份。例5 查詢?nèi)w學生的姓名、出生年份和所有系,要求用小寫字母表示所有系名例4 查全體學生的姓名及其出生年份。選擇表中的若干元組消除取值重復的行 如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL 指定DISTINCT關(guān)鍵詞,去掉表中重復的行 例6 查詢選修了課程的學生學號。選擇表中的若干元組消除取值重復的行查詢滿足條件的元組查 詢 條 件謂 詞比 較=,=,=,!=,!,!;NOT+上述比較運算符確定范圍BETWEEN AND,NOT BETWEEN AND確定集
13、合IN,NOT IN字符匹配LIKE,NOT LIKE空 值IS NULL,IS NOT NULL多重條件(邏輯運算)AND,OR,NOT常用的查詢條件查詢滿足條件的元組查 詢 條 件謂 詞比 較=,比較大小例7 查詢計算機科學系全體學生的姓名例8 查詢所有年齡在20歲以下的學生姓名及其年齡 例9 查詢考試成績有不及格的學生的學號。 比較大小例7 查詢計算機科學系全體學生的姓名確定范圍謂詞: BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學生的姓名、系別和年齡例11 查詢年齡不在2023歲之間的學生姓名、系別和年齡確定范圍謂詞:
14、 BETWEEN AND 確定集合謂詞:IN , NOT IN 例12查詢信息系(IS)、數(shù)學系(MA)和計算機科學系(CS)學生的姓名和性別。例13查詢既不是信息系、數(shù)學系,也不是計算機科學系的學生的姓名和性別。確定集合謂詞:IN , NOT IN 字符匹配謂詞:NOT LIKE ESCAPE 例14 查詢學號為200215121的學生的詳細情況例15 查詢所有姓劉學生的姓名、學號和性別例16 查詢姓歐陽且全名為三個漢字的學生的姓名 字符匹配謂詞:NOT LIKE 例17 查詢名字中第2個字為“陽”字的學生的姓名和學號例18 查詢所有不姓劉的學生姓名。例19 查詢DB_Design課程的課程
15、號和學分例20 查詢以“DB_”開頭,且倒數(shù)第3個字符為i的課程的詳細情況 例17 查詢名字中第2個字為“陽”字的學生的姓名和涉及空值的查詢謂詞: IS NULL 或 IS NOT NULL “IS” 不能用 “=” 代替例21 某些學生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W生的學號和相應的課程號例22 查詢所有有成績的學生學號和課程號 涉及空值的查詢謂詞: IS NULL 或 IS NOT NU多重條件查詢邏輯運算符:AND和 OR來聯(lián)結(jié)多個查詢條件 AND的優(yōu)先級高于OR 可以用括號改變優(yōu)先級例23 查詢計算機系年齡在20歲以下的學生姓名多重條件查詢邏輯運
16、算符:AND和 OR來聯(lián)結(jié)多個查詢條件ORDER BY子句 ORDER BY子句可以按一個或多個屬性列排序升序:ASC;降序:DESC;缺省值為升序當排序列含空值時ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示 ORDER BY子句 ORDER BY子句例24 查詢選修了3號課程的學生的學號及其成績,查詢結(jié)果按分數(shù)降序排列例25 查詢?nèi)w學生情況,查詢結(jié)果按所在系的系名升序排列,同一系中的學生按年齡降序排列 例24 查詢選修了3號課程的學生的學號及其成聚集函數(shù) 計數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )計算總和SUM(DIST
17、INCT|ALL ) 計算平均值A(chǔ)VG(DISTINCT|ALL )最大最小值 MAX(DISTINCT|ALL ) MIN(DISTINCT|ALL )聚集函數(shù) 計數(shù)例26 查詢學生總?cè)藬?shù)例27 查詢選修了課程的學生人數(shù)例28 計算1號課程的學生平均成績例29 查詢選修1號課程的學生最高分數(shù) 例30查詢學生200215012選修課程的總學分數(shù) 例26 查詢學生總?cè)藬?shù)GROUP BY子句 例31 求各個課程號及相應的選課人數(shù)例32 查詢選修了3門以上課程的學生學號GROUP BY子句 例31 求各個課程號及相應的選課HAVING短語與WHERE子句的區(qū)別:作用對象不同WHERE子句作用于基表或
18、視圖,從中選擇滿足條件的元組HAVING短語作用于組,從中選擇滿足條件的組 HAVING短語與WHERE子句的區(qū)別:(2)連接查詢 連接查詢:同時涉及多個表的查詢連接條件或連接謂詞:用來連接兩個表的條件 一般格式:. . BETWEEN . AND .連接字段:連接謂詞中的列名稱連接條件中的各連接字段類型必須是可比的,但名字不必是相同的(2)連接查詢 連接查詢:同時涉及多個表的查詢等值與非等值連接查詢 等值連接:連接運算符為=例33 查詢每個學生及其選修課程的情況自然連接:例34 對例33用自然連接完成。 等值與非等值連接查詢 等值連接:連接運算符為=自身連接 一個表與其自己進行連接需要給表起
19、別名以示區(qū)別由于所有屬性名都是同名屬性,因此必須使用別名前綴例35查詢每一門課的間接先修課(即先修課的先修課) 自身連接 一個表與其自己進行連接 FIRST表(Course表) Cno CnameCpnoCcredit 1數(shù)據(jù)庫 5 4 2數(shù)學 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ù)學 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 復合條件連接復合條件連接:WHERE子句中含多個連接條件例36查詢選修2號課程且成績在90分以上的所有學生的學號和姓名例37查詢每個學生的學號、姓名、選修的課程名及成績復合條件連接復合條件連接:WHERE子句中含多個連接條件(3)嵌套查詢一個SELECT-FROM-WHERE語句稱為一個查詢塊將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢 (3)嵌套查詢一個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)化有些嵌套查詢可以用連接運算替代子查詢的限制不能使用ORDER BY子句帶有IN謂詞的子查詢例38 查詢與“劉晨”在同一個系學習的學生 此查詢要求可以分步來完成 確定“劉晨”所在系名(結(jié)果為CS) 查找所有在CS系學習的學生。例39查詢選修了課程名為“信息系統(tǒng)”的學生學號和姓名 帶有IN謂詞的子查詢例38 查詢與“劉晨”在同一個系學帶有ANY(SOME)或ALL謂詞的子查詢
22、謂詞語義ANY:任意一個值A(chǔ)LL:所有值帶有ANY(SOME)或ALL謂詞的子查詢 謂詞語義需要配合使用比較運算符 ANY大于子查詢結(jié)果中的某個值 ALL大于子查詢結(jié)果中的所有值 ANY小于子查詢結(jié)果中的某個值 = ANY大于等于子查詢結(jié)果中的某個值 = ALL大于等于子查詢結(jié)果中的所有值= ANY小于等于子查詢結(jié)果中的某個值 = ALL小于等于子查詢結(jié)果中的所有值= ANY等于子查詢結(jié)果中的某個值 =ALL等于子查詢結(jié)果中的所有值(通常沒有實際意義)!=(或)ANY不等于子查詢結(jié)果中的某個值!=(或)ALL不等于子查詢結(jié)果中的任何一個值需要配合使用比較運算符例40 查詢其他系中比計算機科學某
23、一學生年齡小的學生姓名和年齡例41 查詢其他系中比計算機科學系所有學生年齡都小的學生姓名及年齡。例40 查詢其他系中比計算機科學某一學生年齡集合查詢集合操作的種類并操作UNION交操作INTERSECT差操作EXCEPT參加集合操作的各查詢結(jié)果的列數(shù)必須相同;對應項的數(shù)據(jù)類型也必須相同 集合查詢集合操作的種類例42 查詢計算機科學系的學生及年齡不大于19歲的學生。例43 查詢選修了課程1或者選修了課程2的學生。例44 查詢計算機科學系的學生與年齡不大于19歲的學生的交集例45 查詢既選修了課程1又選修了課程2的學生例46 查詢計算機科學系的學生與年齡不大于19歲的學生的差集。例42 查詢計算機
24、科學系的學生及年齡不大于19歲2.數(shù)據(jù)輸入 Insert Into(屬性列表) Values ();例1將一個新學生元祖(學號200215128:姓名:陳冬;性別:男;所在系:IS 年齡:18)插入到Student表中。例2插入一條選課記錄(200215128,1)2.數(shù)據(jù)輸入3.數(shù)據(jù)更新 Update Set= , =, Where ;例1將學生200215128的年齡改為22例2將所有學生的年齡增加1歲3.數(shù)據(jù)更新4.數(shù)據(jù)刪除 Delete From Where;例1 刪除學號為 200215128的學生記錄例2 刪除所有學生的選課記錄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 把對Student表和Course表的全部權(quán)限授予用戶U2和U3例3 把對表SC的查詢權(quán)限授予所有用戶例4 把查詢Student表和修改學生學號的權(quán)限授給用戶U4例5 把對表SC的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶Principle and Application of D角色 角色是對權(quán)限的集中管理。每個角色都有一個給定的名
26、稱,它是一組系統(tǒng)權(quán)限和對象權(quán)限的集合,當把某角色授予某個用戶,該用戶就會自動獲得該角色包括的所有權(quán)限。使用角色將使得授予和撤銷權(quán)限都比較方便,通過對一個角色添加或刪除權(quán)限,從而可以改變被授予該角色的用戶組的權(quán)限。當需要修改用戶的權(quán)限時,只需對角色進行修改,不必對單個用戶進行修改。 角色 角色是對權(quán)限的集中管理。每個角色都有一個給定的創(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用戶對表Student的查詢權(quán)限。例9收回所有用戶對表SC的查詢的權(quán)限。例10把用戶U5對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中的復雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述視圖的特點:虛表,是從一個或幾個基本表(或視圖)導出的表只存放視圖的定義,不存放視圖對應的數(shù)據(jù)基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變視圖的特點:視圖的作用1.視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性 2.視圖能夠簡化用戶的操
28、作3. 視圖能夠?qū)C密數(shù)據(jù)提供安全保護視圖的作用1.視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯基于視圖的操作查詢刪除受限更新定義基于該視圖的新視圖基于視圖的操作創(chuàng)建視圖CREATE VIEW ( ,) AS WITH CHECK OPTION;創(chuàng)建視圖CREATE VIEW 組成視圖的屬性列名:全部省略或全部指定子查詢不允許含有ORDER BY子句和DISTINCT短語RDBMS執(zhí)行CREATE VIEW語句時只是把視圖定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出。組成視圖的屬性列名:全部省略或全部指定例1 建立信息系學生的視圖。例2建立信息系學
29、生的視圖,并要求進行修改和插入操作時仍需保證該視圖只有信息系的學生 。例3 建立信息系選修了1號課程的學生視圖。例4 建立信息系選修了1號課程且成績在90分以上的學生的視圖。 例1 建立信息系學生的視圖。例5 定義一個反映學生出生年份的視圖。例6 將學生的學號及他的平均成績定義為一個視圖。 例5 定義一個反映學生出生年份的視圖。刪除視圖DROP VIEW ;該語句從數(shù)據(jù)字典中刪除指定的視圖定義如果該視圖上還導出了其他視圖,使用CASCADE級聯(lián)刪除語句,把該視圖和由它導出的所有視圖一起刪除 刪除基表時,由該基表導出的所有視圖定義都必須顯式地使用DROP VIEW語句刪除 刪除視圖DROP VI
30、EW ;例8刪除視圖BT_S: DROP VIEW BT_S; 查詢視圖用戶角度:查詢視圖與查詢基本表相同 RDBMS實現(xiàn)視圖查詢的方法:視圖消解法 進行有效性檢查 轉(zhuǎn)換成等價的對基本表的查詢 執(zhí)行修正后的查詢例8刪除視圖BT_S: DROP VIEW BT_S;查例9 在信息系學生的視圖中找出年齡小于20歲的學生。例10 查詢選修了1號課程的信息系學生。例11在S_G視圖中查詢平均成績在90分以上的學生學號和平均成績 例9 在信息系學生的視圖中找出年齡小于20更新視圖例12 將信息系學生視圖IS_Student中學號200215122的學生姓名改為“劉辰”。例13 向信息系學生視圖IS_S中
31、插入一個新的學生記錄:200215129,趙新,20歲。例14刪除信息系學生視圖IS_Student中學號為200215129的記錄更新視圖例12 將信息系學生視圖IS_Student中更新視圖的限制:一些視圖是不可更新的,因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應基本表的更新。允許對行列子集視圖進行更新對其他類型視圖的更新不同系統(tǒng)有不同限制更新視圖的限制:一些視圖是不可更新的,因為第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 3.2 SQL語言 3.3 視圖 3.4 SQL中的復雜完整性約束 3.5 小結(jié)第3章 結(jié)構(gòu)化查詢語言-SQL 3.1 SQL概述 概念 數(shù)據(jù)的完整性是指
32、數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和一致性,這是數(shù)據(jù)庫理論中的重要概念。正確性是指數(shù)據(jù)的合法性;有效性是指數(shù)據(jù)是否在定義的有效范圍;一致性是指表示同一個事實的兩個數(shù)據(jù)應相同。 數(shù)據(jù)完整性包括實體完整性、參照完整性和用戶自定義的完整性。 概念 數(shù)據(jù)的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效SQL完整性主碼(PRIMARY KEY)約束外碼(FOREIGN KEY )約束非空值(NOT NULL)約束鍵值唯一(UNIQUE)約束檢查(CHECK)約束觸發(fā)器(TRIGGER)約束SQL完整性主碼(PRIMARY KEY)約束主碼(PRIMARY KEY)約束 主碼(也稱主鍵)約束是指關(guān)系表具有一個特定的最小字
33、段集合,通過主碼可以唯一確定每條記錄。能唯一確定每條記錄的關(guān)系的字段集合稱為關(guān)系的主碼(PRIMARY KEY) 外碼(FOREIGN KEY )約束 涉及兩個關(guān)系的最普通的完整性約束是外碼約束。在SQL中外碼約束是通過定義關(guān)系表或者修改表時實現(xiàn)的。 主碼(PRIMARY KEY)約束非空值(NOT NULL)約束 非空值約束用來限制關(guān)系表中某列的值不能為空值。在SQL中非空值約束是在定義表語句中用NOT NULL關(guān)鍵字實現(xiàn)的。 鍵值唯一(UNIQUE)約束 鍵值唯一約束規(guī)定一列中的每個值或者列的組合必須是唯一的,即在一個關(guān)系表中的任何兩行在指定的屬性列或?qū)傩粤械慕M合沒有相同的值。 檢查(CHECK)約束 檢查約束是根據(jù)邏輯表達式來限定值域的,SQL中對檢查約束的實現(xiàn),是在定義表語句中用CHECK短語完成的。 CHECK(條件表達式); 非空值(NOT NULL)約束觸發(fā)器 觸發(fā)器是一系列在表中的數(shù)據(jù)修改時要執(zhí)行的SQL語句的集合。是過程化SQL代碼。當某個數(shù)據(jù)操作事件發(fā)生時,DBMS自動調(diào)用觸發(fā)器。觸發(fā)器中可以包含復雜的Transact-SQL語言,觸發(fā)整體被看作一個事務,可以回滾。 SQL Server 2000中有兩種類型的觸發(fā)器:DML觸發(fā)器和DDL觸發(fā)器。 觸發(fā)器創(chuàng)建觸發(fā)器 CREATE TRIGGER trigger_na
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度職工住房借款與社區(qū)養(yǎng)老配套服務協(xié)議3篇
- 二零二五年度吊裝工程安全評估與監(jiān)督管理合同2篇
- 2025年辦公家具回收利用與環(huán)保處理合同3篇
- 極簡市場營銷(杰瑞20231224)
- 二零二五年度花椒采摘與旅游融合發(fā)展合同3篇
- 2024年陽泉煤業(yè)(集團)有限責任公司總醫(yī)院三礦醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年河南水利與環(huán)境職業(yè)學院高職單招數(shù)學歷年參考題庫含答案解析
- 2024年河北機電職業(yè)技術(shù)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 二零二五年度美食街攤位租賃及廣告投放合同3篇
- 2024年江蘇財經(jīng)職業(yè)技術(shù)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 2024年石家莊正定國際機場改擴建工程合同
- 2025年度愛讀書學長定制化閱讀計劃合同2篇
- 2025年首都機場集團公司招聘筆試參考題庫含答案解析
- 保健品購銷合同2025年
- 2024版光伏發(fā)電項目承包經(jīng)營權(quán)轉(zhuǎn)讓合同范本3篇
- 實習終止及解除協(xié)議書
- 河南省信陽市浉河區(qū)9校聯(lián)考2024-2025學年八年級上學期12月月考地理試題(含答案)
- 中國冠心病康復循證實踐指南(2024版)解讀
- 2024-2030年中國再生水行業(yè)發(fā)展前景預測規(guī)劃分析報告
- 城市公益性公墓建設(shè)項目施工組織設(shè)計
- 2022-2024年江蘇中考語文試題匯編:名著閱讀(教師版)
評論
0/150
提交評論