數據庫基礎知識個人整理版_第1頁
數據庫基礎知識個人整理版_第2頁
數據庫基礎知識個人整理版_第3頁
免費預覽已結束,剩余16頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章關系數據模型1數據模型(靜態)的三要素 1一 關系數據結構1二 關系操作2三關系完整性約束2四關系代數2第二章 關系數據庫的標準語言 SQL4一SQL動詞表4二數據定義4三數據更新8四數據查詢9五授權15六完整性約束命名子句 17七觸發器17第三章關系數據庫理論18一關系模式(回顧) 18二數據依賴18三規范化18第一章關系數據模型數據模型(靜態)的三要素一 關系數據結構(一)基本概念包括:1屬性(Attribute):實體所具有的某一特征。(如學生的特征是學號、姓名、 一) 域(Domain):屬性對應的一組具有相同數據類型的值的集合。每個屬性有一個域。(關系模型限定域必須原子性1NF

2、)2 鍵(key)(1)候選鍵(can didate key)關系的某一屬性或屬性組的值唯一標識一個元組,而其任何真子集無此性質。 候選鍵的諸屬性稱為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性。(2)主鍵(primary key)一個關系至少有一個侯選鍵,可以有幾個侯選鍵。一般從侯選鍵中選擇一個作為主鍵(primary key),其他的稱為侯補鍵(alternate key)每個主鍵的值是不能相同的,(3)外鍵(foreign key)如關系中的屬性或屬性組不是本關系的主鍵,而引用其他關系或本關系的主鍵,則稱 為本關系的外鍵。3 關系(Relation):(1) 關系:定義在事物的所有屬性

3、域上的多元關系,一個關系就是一張二維表。(2)關系模式:關系的描述稱為關系模式,它可以形式化的表示為R( U,D,DOM,F)R為關系名U為組成該關系的屬性名集合D為屬性組U中屬性所來自的域 DOM為屬性向域的映像集合F 為屬性間數據的依賴關系集合, An )關系模式通常簡記為:R (U )或R (A1 , A2 , A3 , 關系的三種基本類型 基本表:是實際存在的表,它是實際存儲數據的邏輯表示。 查詢表:是查詢結果對應的表。 視圖表:是由基本表或其他視圖導出的表,是虛表,不對應實際存儲內容。二 關系操作(一) 兩種關系操作1 查詢( Query )查詢可以分為 選擇(SELECT),投影(

4、Project),連接(Join),交(Intersection),并(Union), 差(Except),除(Divide),笛卡爾乘積。其中選擇,投影,并,差,笛卡爾乘積是 5 種基本操作,其他的操作可用這些基本操作定 義和導出2 插入(Insert),刪除(Delete),修改(Update)(二) 關系操作的特點 集合式的操作方式,即操作的對象和結果都是集合。(三) 關系數據語言可以分為三類1 關系代數語言2 關系演算語言(元組關系演算和域關系演算)3 具有關系代數和關系演算雙重特點的語言( SQL 語言)三 關系完整性約束 關系數據庫的數據必須遵循的約束 實體完整性( Entity

5、Integrity ) 參照完整性( Referential Integrity ) 用戶自定義完整性( User-Defined Integrity ) 實體完整性和參照完整性是關系模型必須滿足的完整性約束條件,被稱為關系的兩個不變 性。(一) 實體完整性 實體完整性規則:關系模式 R 的主屬性值不可為空 指所有主屬性均不可取空值,不僅僅是主鍵不可為空(二) 參照完整性1 外鍵( Foreign Key )定義:設F是基本關系 R的一個或一組屬性,但不是關系R的碼,KS是基本關系S的 主碼。如果F與KS相對應,則稱F是R的外碼( Foreign Key )R 稱為參照關系( Referent

6、ial Relation ), S 稱為被參照關系( Referenced Relation )2 參照完整性規則若屬性(或屬性組) F 是基本關系 R 的外碼,它與基本關系 S 的主碼 KS 相對應(基本 關系到 R 和 S 不一定是不同關系) ,則對于 R 中每個元組在 F 上的值必須為:( 1)等于被參照關系 S 中所參照的候選鍵的某個值(2) 空值(三) 用戶自定義完整性 針對某一具體數據的約束條件,反映某一具體應用所涉及的數據必須滿足的特殊語義 由應用環境決定四 關系代數關系代數按運算符的不同可分為傳統關系運算和專門關系運算(一)傳統關系運算(交,并,差,笛卡爾乘積)關系Ft!R2A

7、1A2A3b2db3 一bc2dd3bMA2A3a3cb2dc2de5fg6fMOo1 U (并)R1 U R2=b2db3bc2dd3ba3ce5fg662 n(交 AND) R1 n R2= b 2 dc 2 d3 (差) R1 R2= b 3 bd 3 b4 X (笛卡爾乘積)R1 X S = b 2 d 2 db 2 d 3 bb 3 b 2 db 3 b 3 bc 2 d 2 dc 2 d 3 bd 3 b 2 d d 3 b 3 b(二)專門關系運算1選擇(SELECT)(選擇符合條件的元組)氷選擇條件 (關系名 )女口:3性別=男(STUDENT )表的水平劃分2投影(Proje

8、ct)(選擇符合條件的屬性) n 屬性表 (關系名 )女口: n學號,姓名 (STUDENT )表的垂直劃分3連接操作(Join) 笛卡爾乘積 R X S = t,g|t? R AND g? S(1)連接分為等值連接和自然連接 連接操作:R| X|S 其中A和B分別為R和S上度數相等且具有可比性的屬性組A B1)等值連接(為=)R1.A1R1.A;2R1.A3 S.A2 S.A3如上例R1 | X | S =b 2d2dR1.A2=S.A2b3b3bc2d2dd3b3b2)自然連接(只有| X | )一般連接是從行的角度出發的,但自然連接還要取消重復的列,是從行和列的角度進 行運算S.A2 S

9、.A3關系R1關系Ft?關系SR1.A1 R1.A2R1.A3女口 R1 | X | S = b 2 dB 3 b4除運算(十)R1.A1女口 R1- S = b在R1上b印象集合是 (2, d) ,(3 , d)S在(A1, A2) 上的投影為 (2, d) ,(3 , d) 第二章關系數據庫的標準語言SQLSQL動詞表SQL功能動詞數據查詢SELECT數據定義CREATE , DROP , ALTER數據操縱INSERT , UPDATE, DELETE數據控制GRANT , REVOKE數據定義操作對象操作方式創建刪除修改模式CREATE SCHEMADROP SCHEMA表CREATE

10、 TABLEDROP TABLE:ALTER TABLE視圖CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEXSQL通常不提供修改模式定義,修改視圖定義,修改索引定義的操作(一)模式的定義和刪除1模式的定義CREATE SCHEMA AUTORIZATION 例如:CREATE SCHEMA S-t” AUTORIZATION wang;(1) 要創建模式,調用該命令的用戶必須具有 DBA權限,或者獲得了 DBA授予的CREATESCHEMA權限(2)如果沒指定 那么 隱含為 (3) 定義模式,實際上是定義了一個命名空間,在這個空間中可以進一步定義該模式包

11、含 的數據庫對象,例如基本表,視圖,索引。2模式的刪除DROP SCHEMACASCADE | RESTRICT(兩者必選其一)例如:DROP SCHEMA S-t CASCADE ;(1)CASCADE (級聯)表示在刪除模式的同時把該模式中所有的數據庫對象全部一起刪 除。(2)RESTRICT (限制)表示在刪除該模式中已經定義了下屬數據庫對象 (表,視圖索引), 則拒絕該刪除語句。(二)表的定義,刪除和修改1表的定義CREATE TEBLA ( 列級完整性約束, 列級完整性約束 , )列定義的完整格式: DEFAULT NOT NULLCREATE TEBLA AS 若要定義模式式下的表

12、:CREATE TABLE .(1)數據類型ANSI/ISOOracle字符型Char(n)Char(n)Character(n)Character Varying(n)Varchar2(n)Char Varying(n)數值型NumericNumberDecimalIntegerIntFloatDoubleReal日期型DateDateTime(2)完整性約束實體完整性參照完整性用戶自定義完整性主鍵約束(Primary Key ) 外鍵約束(Foreign Key) 檢查約束(Check)唯一鍵約束(Unique) 非空約束(Null | Not Null )默認值(Defautl )(3)

13、例子CREATE TABLE stude nt( Sno CHAR(8) PRIMARY KEY , Sname CHAR(20) UNIQUE , Ssex CHAR(2) DEFALULT ,男?, Sage SMALLINT CHECK(Sage0) Sdept CHAR(20)CREATE TABLE Course( Cno CHAR(4) PRIMARY KEY ,Cname CHAR(40),Cpno CHAR(4) REFERENCES Course(Cno),Ccredit SMALLINT ,CHECK (Ccredit 0)CREATE TABLE sc( Sno CHAR

14、(9), Cno CHAR(4), Grade SMALLINT , PRIMARY KEY (Sno,Cno) , /注意一定要有括號 FOREIGN KEY(Sno)REFERENCES Course(Cno) , /sno 定要有括號)(4)說明1)列約束:在每個列后定義,可以有多個約束子句,不能定義多個列上的約束2)表約束:在全部列定義完成后定義,可以有多個約束子句,多個列上的約束必須使用 表約束,單列上的約束可以用列約束,也可用表約束2表的刪除DROP TABLE CASCADE | RESTRICT(1)CASCADE (級聯)刪除該表沒有任何限制,刪除表的同時,相關的依賴對象(如

15、視 圖)也一起刪除。(2)RESTRICT (限制)刪除該表是有限制條件的。欲刪除的表不能被其他表的約束所引用(如CHECK,FOREIGN KEY 等約束),不能有視圖,不能有觸發器(trigger),不 能存儲過程或函數。(3)缺省情況下是 RESTRICT3表的修改ALTER TABLE ADD 完整性約束|MODIFY 完整性約束|DROP COLUMN |ADD|DROP CONSTRAINT 例如(1) ALTER TABLE StudentADD Dept Varchar2 (10) UNIQUE(2) Alter Table StudentDROP COLUMN age(3)

16、AlLTER TABLE StudentMODIFYage number(3) NOT NULL(4) ALTER TABLE StudentADD CONSTRAINT PK_Stude nt PRIMARY KEY(S#)(5) ALTER TABLE SCDROP CONSTRAINT FK_SC(三) 視圖的定義和刪除1視圖的定義CREATE VIEW (列名1,列名2,)列名一定要放在括號里AS WITH CHECK OPTION |WITH READ ONL Y例如:CREATE VIEW cs_view (sn o, name, age)AS SELECT s#, sn ame,

17、 ageFROM stude ntWHERE Dept =,計算機系, WITH READ ONL Y;(1) WITH CHECK OPTION 表示對視圖進行 UPTATE , INSERT , DELETE操作時要保證 更新,插入,刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達式)WITH READ ONL Y表示視圖是只讀的(2) 視圖的屬性列名只能是全部缺省或全部指定,沒有別的選擇。但在下列兩種情況下必 須明確指定組成視圖的列名。1) 某個目標列不是單純的屬性名,而是聚集函數或列表達式。2) 多表連接時選出幾個同名列作為視圖的字段。(3) 子查詢可以是任意的 SELECT子句

18、,但通常不允許含有 OREER BY 子句各 DISDINCT 短語。(4) 不是所有視圖都是可更新的1) 基于聯接查詢的視圖不可更新2) 使用了函數的視圖不可更新3) 使用了分組操作的視圖不可更新4) 只有建立在單個表上而且沒有使用函數的視圖才是可更新的2視圖的刪除DROP VIEW CASCADE(四)索引的定義和刪除1 索引的定義CREATE UNIQUE | CLUSTER INDEX ON ( , )例如: CREATE UNIQUE INDEX SCno on SC(Sno ASC , Cno DESC);( 1)UNIQUE 表明此索引的每一個索引值只對應唯一的數據記錄( 2)C

19、LUSTER 表示要建立的索引是聚簇索引。 聚簇索引是指索引項的順序與表中的物理順序一致的索引組織,在一個表上只能建立一個聚簇索引。(3)次序可選 ASC (升序)或 DESC (降序)缺省值為 ASC2 索引的刪除DROP INDEX DROP INDEX SCno;三 數據更新(一)插入數據 INSERT 插入數據通常有兩種形式,一種是插入一個元組,另一種是插入子查詢結果。 后者可以一次插入多個元組。1 插入一個元組INSERTINTO ( ,) VALUES( ,) 例如 INSERTINTO Student (Sno, Sname, Ssex, Sdept, Sage) VALUES

20、( ,20081512?, ,陳冬?, ,男?, ,IS?, 18);INTO 語句中沒有出現的屬性列,新元組在這些列上將取空值或默認值。在 INTO 子句中只指出了表名,沒有指出屬性名,新元組要在所有屬性列上都指定值,屬性列 的次序與 CREATE TABLE 中的次序相同。2 插入子查詢結果INSERTINTO ( ,)子查詢;例如 INSERTINTO Dept_age( Sdept ,Avg_age)SELECT Sdept ,A VG(Sage)FROM Student GROUP BY Sdept;(二)修改數據UPDATE SET =,= WHERE ;例如: UPDATE St

21、udentSET Sage=22WHERE Sno= ?200215021?;(三)刪除數據DELETEFROMWHERE ;例如:DELETEFROM Stude ntWHERE Sno= ?20021528?DELETE語句刪除的是表中的數據,而不是關于表的定義。四數據查詢基本數據查詢的格式:SELECT ALL | DISTINCT AS,ASFROM ,WHEREGROUP BY HAVINGORDER BY ASC|DESC;(一)單表查詢在一個表中查詢數據1*查詢查詢全部記錄:查詢全部的學生信息SELECT * FROM Student;*表示所有列等同于SELECT s#, sn

22、ame, age, sex FROM Student2使用別名(AS或空格)使用別名:查詢所有學生的學號和姓名SELECT s# AS 學號,sname AS 姓名 FROM Student如果別名包含空格,須使用雙引號SELECT s# AS “Stude nt Number ” FROM Stude nt3表達式查詢(三種表達式,字符串表達式,算術表達式,函數表達式) (1)字符串表達式學號:姓名”,另一列是查詢所有學生的學號、姓名和出生年份,返回兩列信息,其中一列是 出生年份SELECT s# | :sname AS 學生,2003 age AS 出生年份 FROM Student 說明

23、連接字符串|表示則多個查詢列連接為一個列輸出。(2)算術表達式查詢學生的出生年份SELECT 2003 age AS 出生年份 FROM Student ;(3) 函數表達式SELECT sno, to_char(birth, mm-dd-yyyy ) AS birthday FROM Student SELECT Count(sno) As 學生人數 FROM Student4 條件查詢(1) WHERE 條件 注:1) 在 where 子句中使用列名和表達式,但不能使用別名。2) 在 where 子句中使用數值時,既可以用單引號也可以不用單引號,使用日期值 字符值時,都必須使用單引號,并且

24、日期值的格式必須要符合數據庫中支持的日 期格式,否則必須事先使用 to_date 函數將其轉換成為數據庫中支持的日期格式。 oracle 中日期的默認格式為:01-1 月 -82在輸入查詢條件時,可以用 to_date(, 1998?-01-01,?yyyy-mm-dd ?)3) 在 SQL 語句中,命令不區分大小寫,但字符串區分大小寫 WHERE 子句中的關系運算符: 比較操作符: , =, =, =, 邏輯操作符: AND OR NO 其他操作符: INBETWEEN AND IS NULL 和 IS NOT NULLLIKE EXISTS例如:1) IN :查詢 芒001?003?500

25、6?和008?四學生的信息SELECT * FROM StudentWHERE s# IN ( ,s001?,?s003?,?s006?,?s008?)2) IS NOT NULL :查詢缺少年齡數據的學生 SELECT * FROM Student WHERE age IS NULLLIKE :查詢姓名的第一個字母為,R?的學生SELECT * FROM Student WHERE sname LIKE ,R%?%:任意長度的字符串:單個字符(一個漢字占兩個字節) 注意: LIKE 只能用于字符串的匹配,不能用于其他類型。查詢姓名的第一個字母為,R?并且倒數第二個字母為,S?勺學生 SELE

26、CT * FROM Student WHERE sname LIKE ,R%S_? 多個比較式可用 NOT 、AND 和 OR 連接 SELECT * FROM StudentWHERE age IS NULL and sname LIKE ,R%?3) 若要查詢通配符可以用轉義字符escape character 通常 character 用 (2)去除重復記錄( DISTINCT )查詢學生的姓名SELECT Distinct sname FROM Student DISTINCTt 只對記錄有效,不針對某個特定列SELECT Distinct sname, age FROM Studen

27、t(3)排序查詢( ORDER BY ) 注:1)order by 只能對最終查詢結果進行排序,也就是說其只能放在查詢語句的最后一條。 2)可以使用列的別名,列的位置進行排序。3)在大多數情況下,指定的排序列(order by 列名)都是選擇列( select 列名),但排序列也可以不是選擇列。但如果在 select 語句中使用了 distinct 關鍵字,則排序列必須 是選擇列了。查詢所有學生信息并將結果按年齡升序排列SELECT * FROM Student ORDER By age 將結果按年齡升序排列 ,按姓名降序排列SELECT * FROM StudentORDER By age

28、ASC , sname DESCASC 表示升序, DESC 表示降序( 4)聚集函數 注:1)聚集函數和 group by 子句聯合使用,表示對每個組進行統計,否則將所有數據行當 成一個組進行統計。2)聚集函數只能出現在選擇列表、order by 子句、 having 子句中,而不能出現在 where和 group by 子句中。3)除了 count( *)外,其他聚集函數都會忽略null 行。4)聚集函數中可以指定 all 和 distinct 選項。 其中 all 是默認選項, 表示統計所有的行 (包 括重復行) ,而 distinct 只統計不同的行。 count ( distinct

29、 sal )(DISTINCT | ALL) COUNT( 列名 ):對一列中的值計數COUNT(*) :計算記錄個數SUM(列名):求一列值的總和(數值)AVG (列名):求一列值的平均值MIN (列名):求一列值的最小值MAX ( 列名):求一列值的最大值例子:求學生的總人數SELECT count(*) FROM student求選修了課程的學生人數SELECT COUNT(DISTINCT s#) FROM SC求學生的平均年齡SELECT avg(age) as average_age FROM student(5)分組查詢( GROUP BY )1)基本格式 group by 列名

30、 1,列名 2 having 條件 ORDER by 列名查詢男生和女生的平均年齡SELECT sex, AVG(age) as Average_age FROM StudentGroup By sex注意:除聚集函數外的屬性必須全部出現在 Group By 子句中 2)返回特定的分組結果( HAVEING ) 查詢不同年齡的學生人數,并返回人數在 5 人以上的結果 SELECT age, COUNT(*) as students FROM Student Group By ageHaving COUNT(*) 5Having 子句給出Having 子句中必須聚集函數的比較式,而且聚集函數的比

31、較式也只能通過Having 中的聚集函數可與 SELECT 中的不同查詢人數在 60 以上的各個班級的學生平均年齡SELECT class, AVG(age) FROM StudentGroup By classHaving COUNT(*) 60( 6)使用 rollup 和 cube 限定詞Rollup 用于生成橫向統計結果SQL select deptno,job,avg(sal),max(sal) from emp2 group by rollup(deptno,job);TNO JOBAVG(SAL)MAX(SAL)10 CLERK1300130010 MANAGER24502450

32、10 PRESIDENT50005000102916.66667500020 CLERK950110020 ANAL YST3000300020 MANAGER29752975202175300030 CLERK95095030 MANAGER2850285030 SALESMAN14001600301566.666672073.2142928505000Cube 用于生成縱向統計結果SQL select deptno,job,avg(sal),max(sal) from emp 2 group by cube (deptno,job);DEPTNO JOB AVG(SAL) MAX(SAL)

33、2073.21429 5000CLERK1037.51300ANAL YST30003000MANAGER2758.333332975SALESMAN14001600PRESIDENT5000500010 2916.66667500010 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000202175300020 CLERK950110020 ANAL YST3000300020 MANAGER29752975301566.66667285030 CLERK95095030 MANAGER2850285030 SALESMAN14001600

34、(二)連接查詢一個查詢同時涉及兩個以上的表,則稱之為連接查詢。SELECT ,FROM ,WHERE1等值連接和非等值連接注:在連接查詢中應在列前加上表作為前綴,但如果列名在不同的表中不同,則可以不加表名限制,否則必須加。當指定表的別名時,別名應跟在表名后面。例如:SQL select d.dept no , d.d name, e.e name, e.sal2 from dept d,emp e3 where d.dept no=e.dept no4 and d.dept no=20;1)等值連接查詢學生的學號,姓名和所選課程號SELECT stude nt.s#, stude nt.s n

35、ame,sc.c#FROM stude nt,scWHERE student.s# = sc.s# 聯接條件2)非等值連接SELECT SC.S# , Course.creditFROM SC,CourseWHERE SC.C# I IN Course.C#2自然連接若在等值連接中把目標列中重復的屬性列去掉則為自然連接3自身連接給一個表定義兩個或多個不同的別名,就可以像使用這兩個別名進行連接查詢。SELECT FIRST.C no, SECOND.Cp noFROM Course FIRST , Course SECONDWHERE FIRST.Cp no=SECOND.C no4外連接查詢外

36、連接分為左外連接和右外連接左外連接列出左邊關系中所有的元組右外連接列出右邊關系中所有的元組SELECT ,FROM LEFT|RIGHT OUT JOIN USING ON (連接條件)USING去掉重復行5復合條件查詢WHERE子句中可以有多個連接條件,稱為復合條件連接。(三)嵌套查詢在SQL語言中,一個SELECT-FROM-WHERE 語句稱為一個查詢塊。 將一個查詢塊嵌套在另 個查詢塊的 WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。1無關子查詢父查詢與子查詢相互獨立,子查詢語句不依賴父查詢中返回的任何記錄,可以獨立執行 查詢沒有選修課程的所有學生的學號和姓名SELECT

37、 s#,s nameFROM stude ntWHERE s# NOT IN ( SELECT disti net s# FROM sc)子查詢返回選修了課程的學生學號集合,它與外層的查詢無依賴關系,可以單獨執行 無關子查詢一般與IN 一起使用,用于返回一個值列表2相關子查詢相關子查詢的結果依賴于父查詢的返回值查詢選修了課程的學生學號和姓名SELECT s#, sn ameFROM stude ntWHERE EXISTS (SELECT * FROM se WHERE se.s# = stude nt.s#)相關子查詢不可單獨執行,依賴于外層查詢EXISTS (子查詢):當子查詢返回結果非空

38、時為真,否則為假執行分析:對于 student的每一行,根據該行的s#去sc中查找有無匹配記錄3 連接視圖子查詢出現在 FROM 子句中作為表使用查詢只選修了 1 門或 2 門課程的學生學號、姓名和課程數SELECT s#, count_c#FROM (SELECT s.s# as s#, count(sc.s#) as count_c#FROM student s, scWHERE s.s#=sc.s#Group by s.s#) SC2, studentWHERE sc2.s# = student.s# and (count_c#=1 OR count_c#=2) 聯機視圖可以和其它表一樣

39、使用(四)查詢結果的連接Union 和 Union AllMinusIntersect1 Union 和 Union All查詢課程平均成績在 90 分以上或者年齡小于 20 的學生學號 (SELECT s# FROM student WHERE age90) SC2 )UNION 操作自動去除重復記錄UNION All 操作不去除重復記錄2Minus 查詢未選修課程的學生學號 (SELECT s# FROM Student )Minus(SELECT distinct s# FROM SC )3 Intersect 返回兩個查詢結果的交集查詢課程平均成績在 90 分以上并且年齡小于 20 的

40、學生學號 (SELECT s# FROM student WHERE age90) SC2)五 授權(一) 創建數據庫模式的權限CREATE USER WITH DBA | RESOURCE | CONNECT1對數據庫模式的授權由 DBA在創建用戶時實現2新創建的用戶有三種權限擁有的權限可否執行的操作CREATE USERCREATE SCHEMACREATE TABLE登錄數據庫執行查詢和操作DBA可以:可以:可以:可以RESOURCE不可以不可以可以可以CONNECT不可以不可以不可以可以但必須擁有相應權限(二)授權和回收關系數據庫系統中的存取權限對象類 型對象操作類型(權限)數據庫模式

41、CREATE SCHEMA基本表CREATE TABEL , ALTER TEBLE模式:視圖CREATE VIEW索弓CREATE INDEX數據基本表和視圖SELECT, INSERT , UPDATE , DELETE , REFERENCES , ALL PRIVILEGES數據屬性列SELECT, INSERT , UPDATE , DELETE , REFERENCES , ALL PRIVILEGES1授權GRANT ,ON , TO ,WITH GRANT OPTION ;例如:GRANT SELECT ON TABLE Stude ntTO U1WITH GRANT OPTI

42、ON(1)WITH GRANT OPTION 表示獲得某種權限后的用戶,還可以把這種權限授予其他用戶。 如果沒有此句,則不能傳播該權限(2)用戶可以是PUBLIC即全體用戶2回收REVOKE , ON ,FROM , CASCADE | RESTRICT;例如:REVOKE SELECTON TABLE Stude ntFROM U1 CASCADE ;(三)數據庫角色 1創建角色CREATE ROLE ;例如:CREATE ROLE R1 ;數據庫角色是被命名的一組與數據庫操作相關的權限,角色是權限集合2 給角色授權GRANT ,ON , TO ,;例如: GRANT SELECT ,UPD

43、ATE,INSERT ON TABLE Student TO R1;3 將一個角色授予其他角色或用戶GRANT ,TO , WITH ADMIN OPTIONWITH ADMIN OPTION 表示獲得某權限的角色或用戶還可以把這種權限再授予 其他角色或用戶例如: GRANT R1 TO wang;4 角色權限回收REVOKE , ON , FROM , ;例如: REVOKE R1FROM wang;六 完整性約束命名子句完整性約束條件可以在 CREATE TABLE 語句中定義。 SQL 還在 CREATE TABLE 語句中提供了 完整性約束命名子句 CONSTRAINT, 用來對完整性

44、約束條件命名。1 創建完整性約束CONSTRAINTPRIMARY KEY 短語| FOREIGN KEY短語| CHECK短語 例如: CREATE TEBLE Student(Sno NUMERIC(6)CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 999999)Sname CHAR(20)CONSTRAINT C2 NOT NULL,Sage NUMERIC(3) CONSTRAINT C3 CHECK(Sage30),Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN( ,男?, ?女?),CONSTRAINT St

45、udentKey PRIMARY KEY (Sno) );2 修改完整性約束 例如: ALTER TABLE StudentDROP CONSTRAINT C4;ALTER TABLE StudentADD CONSTRAINT C5 CHECK (Sage40);七 觸發器CREATE TRIGGERBEFORE | AFTER ONFOR EACH ROW| STA TEMENT WHEN第三章關系數據庫理論一關系模式(回顧) 一個關系模式應當是一個五元組。R ( U,D,DOM,F)R為關系名U為組成該關系的屬性名集合D為屬性組U中屬性所來自的域DOM為屬性向域的映像集合F為屬性間數據的

46、依賴關系集合由于D和DOM對模式設計關系不大,因此我們在本章中把關系模式看作是一個三元組:R當且僅當U上的一個關系r滿足F時,稱r為關系模式R的一個關系。二數據依賴數據依賴是一個關系內部屬性與屬性之間的一種約束關系。這種關系是通過學習屬性間值的相 等與否體現出來的數據間相關聯系。最重要的數據依賴其中最重要的是函數依賴和多值依賴。三規范化(一)函數依賴理論1函數依賴定義10.1 :設R(U)是屬性集U上的關系模式。X,Y是U的子集。若對于 R(U)的任意一個可能 的關系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱 X函數確定Y或Y函數依賴于X,記作X t Y。下面介紹一些術語和記號:Xt Y,但Y5X,則稱Xt Y為平凡的函數依賴。否則,稱Xt Y為非平凡的函數依賴。今后,若不特別聲明,我們總是討論非平凡的函數依賴。若X ty,則稱X為決定因素(Determinant)。若 X ty , Y t x,則記作 X Y。若Y不函數依賴于X,則記作X Y。2完全函數依賴和部分函數依賴定義10.2 :在R

溫馨提示

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

評論

0/150

提交評論