




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫知識要點(diǎn)總結(jié)第一章 關(guān)系數(shù)據(jù)模型數(shù)據(jù)模型(靜態(tài))的三要素一 關(guān)系數(shù)據(jù)結(jié)構(gòu)(一)基本概念包括:1 屬性 (Attribute) :實(shí)體所具有的某一特征。 (如學(xué)生的特征是學(xué)號、姓名、 )域(Domain):屬性對應(yīng)的一組具有相同數(shù)據(jù)類型的值的集合。每個屬性有一個域。(關(guān)系模型限定域必須原子性1NF )2 鍵( key)3 1)候選鍵(candidate key)關(guān)系的某一屬性或?qū)傩越M的值唯一標(biāo)識一個元組,而其任何真子集無此性質(zhì)。候選鍵的諸屬性稱為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性。4 2)主鍵(primary key)一個關(guān)系至少有一個侯選鍵,可以有幾個侯選鍵。一般從侯選鍵中選
2、擇一個作為主鍵( primary key), 其他的稱為侯補(bǔ)鍵( alternate key)每個主鍵的值是不能相同的,5 3)外鍵(foreign key)如關(guān)系中的屬性或?qū)傩越M不是本關(guān)系的主鍵,而引用其他關(guān)系或本關(guān)系的主鍵,則稱為本關(guān)系的外鍵。3 關(guān)系( Relation ) :( 1)關(guān)系:定義在事物的所有屬性域上的多元關(guān)系 ,一個關(guān)系就是一張二維表。( 2)關(guān)系模式:關(guān)系的描述稱為關(guān)系模式,它可以形式化的表示為R( U , D, DOM , F)R 為關(guān)系名U 為組成該關(guān)系的屬性名集合D 為屬性組 U 中屬性所來自的域DOM 為屬性向域的映像集合F 為屬性間數(shù)據(jù)的依賴關(guān)系集合關(guān)系模式通
3、常簡記為:R (U)或R (A1 , A2, A3,,An)關(guān)系的三種基本類型基本表:是實(shí)際存在的表,它是實(shí)際存儲數(shù)據(jù)的邏輯表示。查詢表:是查詢結(jié)果對應(yīng)的表。視圖表:是由基本表或其他視圖導(dǎo)出的表,是虛表,不對應(yīng)實(shí)際存儲內(nèi)容。關(guān)系操作(一)兩種關(guān)系操作1 查詢( Query )查詢可以分為 選擇 (SELECT) ,投影 (Project) ,連接 (Join) ,交 (Intersection) ,并 (Union) ,差(Except),除(Divide),笛卡爾乘積。其中選擇,投影,并,差,笛卡爾乘積是5 種基本操作,其他的操作可用這些基本操作定義和導(dǎo)出2 插入 (Insert) ,刪除
4、(Delete) ,修改 (Update)(二)關(guān)系操作的特點(diǎn)集合式的操作方式,即操作的對象和結(jié)果都是集合。(三)關(guān)系數(shù)據(jù)語言可以分為三類1關(guān)系代數(shù)語言2關(guān)系演算語言(元組關(guān)系演算和域關(guān)系演算)3具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語言( SQL語言) 三關(guān)系完整性約束關(guān)系數(shù)據(jù)庫的數(shù)據(jù)必須遵循的約束實(shí)體完整性(Entity Integrity )參照完整性(Referential Integrity )用戶自定義完整性(User-Defined Integrity )實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為關(guān)系的兩個不變(一)實(shí)體完整性實(shí)體完整性規(guī)則:關(guān)系模式R的主屬性值不
5、可為空指所有主屬性均不可取空值,不僅僅是主鍵不可為空(二)參照完整性1 夕卜鍵(Foreign Key )定義:設(shè)F是基本關(guān)系 R的一個或一組屬性,但不是關(guān)系R的碼,KS是基本關(guān)系S的主碼。如果F與KS相對應(yīng),則稱F是R的外碼( Foreign Key)R 稱為參照關(guān)系(Referential Relation ), S 稱為被參艮關(guān)系(Referenced Relation )2參照完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼KS相對應(yīng)(基本關(guān)系到R和S不一定是不同關(guān)系),則對于R中每個元組在F上的值必須為:(1)等于被參照關(guān)系S中所參照的候選鍵的某個值(2)空值(
6、三)用戶自定義完整性針對某一具體數(shù)據(jù)的約束條件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的特殊語義 由應(yīng)用環(huán)境決定四關(guān)系代數(shù)關(guān)系代數(shù)按運(yùn)算符的不同可分為傳統(tǒng)關(guān)系運(yùn)算和專門關(guān)系運(yùn)算(一)傳統(tǒng)關(guān)系運(yùn)算(交,并,差,笛卡爾乘積)關(guān)系R1關(guān)系R21 U (并)R1U R2=b 2 d b 3 b c 2 d2 n (交 AND) R1 c 2 d3 一(差) R1 d 3 b4 X (笛卡爾乘積)d 3 ba 3 ce 5 fg 6 6n R2= b 2 dR2= b3 bR1 X S = b 2 d 2 db 3 b 2 db 3 b 3 bc 2 d 2 dc 2 d 3 bd 3 b 2 dd 3
7、b 3 b(二)專門關(guān)系運(yùn)算1選擇(SELECT)(選擇符合條件的元組)次選擇條件 (關(guān)系名 ) 如:勝別=男(STUDENT )表的水平劃分2投影(Project)(選擇符合條件的屬性)口屬性表(關(guān)系名) 如: 口學(xué)號,姓名 (STUDENT)表的垂直劃分3連接操作(Join)笛卡爾乘積 R X S = |t R AND g C S(1)連接分為等值連接和自然連接連接操作:R| X|S 其中A和B分別為R和S上度數(shù)相等且具有可比性的屬性組A 6 B如上例 R1 | X | S = b 2 d 2 d R1.A2=S.A2b 3 b 3 bc 2 d 2 dd 3 b 3 b2)自然連接(只有
8、| X| )一般連接是從行的角度出發(fā)的,但自然連接還要取消重復(fù)的列,是從行和列的角度進(jìn) 行運(yùn)算S.A2 S.A3R1.A1 R1.A2R1.A3如 R1 | X | S = b 2 dB 3 b4除運(yùn)算(+ )R1.A1如 R1+S = b在R1上b印象集合是 (2, d) ,(3 , d)S 在(A1, A2)上的投影為 (2, d) ,(3 , d) 第二章 關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQLSQL動詞表SQL功能動詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE , DROP , ALTER:數(shù)據(jù)操縱INSERT , UPDATE, DELETE數(shù)據(jù)控制GRANT , REVOKE數(shù)據(jù)定義操作對象操作
9、方式創(chuàng)建刪除修改模式CREATE SCHEMADROP SCHEMA表CREATE TABLEDROP TABLEALTER TABLE視圖CREATE VIEWDROP VIEW索弓CREATE INDEXDROP INDEX注思SQL通常不提供修改模式定義,修改視圖定義,修改索引定義的操作(一)模式的定義和刪除1模式的定義CREATE SCHEMA AUTORIZATION 用戶例如:CREATE SCHEMA S-t” AUTORIZATION wang;(1)要創(chuàng)建模式,調(diào)用該命令的用戶必須具有 DBA權(quán)限,或者獲得了 DBA授予的CREATE SCHEMA權(quán)限(2)如果沒指定 那么
10、隱含為用戶名(3)定義模式,實(shí)際上是定義了一個命名空間,在這個空間中可以進(jìn)一步定義該模式包含的數(shù)據(jù)庫對象,例如基本表,視圖,索引。2模式的刪除DROP SCHEMA0)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(9) ,Cno CHAR(4) ,Grade SMALLINT ,PRIMARY
11、KEY (Sno,Cno) , /注意一定要有括號FOREIGN KEY(Sno) REFERENCES Course(Cno) , /sno 一定要有括號)( 4)說明1)列約束:在每個列后定義,可以有多個約束子句,不能定義多個列上的約束2)表約束:在全部列定義完成后定義,可以有多個約束子句,多個列上的約束必須使用表約束,單列上的約束可以用列約束,也可用表約束2 表的刪除DROP TABLE CASCADE | RESTRICT( 1) CASCADE (級聯(lián))刪除該表沒有任何限制,刪除表的同時,相關(guān)的依賴對象(如視圖)也一起刪除。( 2) RESTRICT (限制)刪除該表是有限制條件的。
12、欲刪除的表不能被其他表的約束所引用 (如 CHECK,FOREIGN KEY 等約束) ,不能有視圖,不能有觸發(fā)器(trigger) ,不能存儲過程或函數(shù)。( 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) AlLTER TABLE StudentMODIFYag
13、e number(3) NOT NULL( 4) ALTER TABLE StudentADD CONSTRAINT PK_Student 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 (sno, name, age)AS SELECT s#, sname, ageFROM studentWHERE Dept =
14、計算機(jī)系 WITH READ ONL Y;(1) WITH CHECK OPTION 表示對視圖進(jìn)行 UPTATE , INSERT , DELETE操作時要保證 更新,插入,刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式)WITH READ ONL Y表示視圖是只讀的(2)視圖的屬性列名只能是全部缺省或全部指定,沒有別的選擇。但在下列兩種情況下必須明確指定組成視圖的列名。1)某個目標(biāo)列不是單純的屬性名,而是聚集函數(shù)或列表達(dá)式。2)多表連接時選出幾個同名列作為視圖的字段。(3)子查詢可以是任意的 SELECT子句,但通常不允許含有 OREER BY 子句各 DISDINCT 短語。(
15、4)不是所有視圖都是可更新的1)基于聯(lián)接查詢的視圖不可更新2)使用了函數(shù)的視圖不可更新3)使用了分組操作的視圖不可更新4)只有建立在單個表上而且沒有使用函數(shù)的視圖才是可更新的2視圖的刪除DROP VIEW CASCADE(四)索引的定義和刪除1索引的定義CREATE UNIQUE | CLUSTER INDEX 索引名ON 表名(列名,卜次序刁)例如:CREATE UNIQUE INDEX SCno on SC(Sno ASC , Cno DESC);(1) UNIQUE表明此索引的每一個索引值只對應(yīng)唯一的數(shù)據(jù)記錄(2) CLUSTER表示要建立的索引是聚簇索引。聚簇索引是指索引項(xiàng)的順序與表中
16、的物理順序一致的索引組織,在一個表上只能建立一個聚簇索引。(3)次序可選 ASC (升序)或 DESC (降序)缺省值為 ASC2索引的刪除DROP INDEX DROP INDEX SCno;三數(shù)據(jù)更新(一)插入數(shù)據(jù)INSERT插入數(shù)據(jù)通常有兩種形式,一種是插入一個元組,另一種是插入子查詢結(jié)果。后者可以一次插入多個元組。1插入一個元組INSERTINTO 表名 ( ,)VALUES( ,)例如 INSERTINTO Student (Sno, Sname, Ssex, Sdept, Sage)VALUES ( 20081512,陳冬,男,,IS, 18);INTO語句中沒有出現(xiàn)的屬性列,新元
17、組在這些列上將取空值或默認(rèn)值。在INTO子句中只指出了表名,沒有指出屬性名,新元組要在所有屬性列上都指定值,屬性列 的次序與 CREATE TABLE 中的次序相同。2插入子查詢結(jié)果INSERTINTO 表名 ( ,)子查詢;例如 INSERTINTO Dept_age( Sdept ,Avg_age)SELECT Sdept ,A VG(Sage)FROM StudentGROUP BY Sdept;(二)修改數(shù)據(jù)UPDATE SET=,= WHERE ;例如:UPDATE StudentSET Sage=22WHERE Sno= 200215021;(三)刪除數(shù)據(jù)DELETEFROMWHE
18、RE ;例如:DELETEFROM StudentWHERE Sno= 20021528;DELETE語句刪除的是表中的數(shù)據(jù),而不是關(guān)于表的定義。四數(shù)據(jù)查詢基本數(shù)據(jù)查詢的格式:SELECT ALL | DISTINCT AS別名卜標(biāo)列表達(dá)式AS,表名或視圖名 WHEREGROUP BY HAVINGORDER BY ASC|DESC;(一)單表查詢在一個表中查詢數(shù)據(jù)1*查詢查詢?nèi)坑涗洠翰樵內(nèi)康膶W(xué)生信息SELECT * FROM Student ;*表示所有列等同于SELECT s#, sname, age, sex FROM Student2使用別名(AS或空格)使用別名:查詢所有學(xué)生的學(xué)
19、號和姓名SELECT s# AS 學(xué)號,sname AS 姓名 FROM Student如果別名包含空格,須使用雙引號SELECT s# AS “ Student Number” FROM Student3表達(dá)式查詢(三種表達(dá)式,字符串表達(dá)式,算術(shù)表達(dá)式,函數(shù)表達(dá)式)(1)字符串表達(dá)式查詢所有學(xué)生的學(xué)號、姓名和出生年份,返回兩列信息,其中一列是學(xué)號:姓名”,另一列是出生年份SELECT s# | 門| sname AS 學(xué)生,2003 age AS 出生年份 FROM Student說明連接字符串|表示則多個查詢列連接為一個列輸出。(2)算術(shù)表達(dá)式查詢學(xué)生的出生年份SELECT 2003 ag
20、e AS 出生年份 FROM Student ;(3)函數(shù)表達(dá)式SELECT sno, to_char(birth, mm-dd-yyyy ) AS birthday FROM StudentSELECT Count(sno) As 學(xué)生人數(shù) FROM Student4條件查詢(1) WHERE 條件注:1)在where子句中使用列名和表達(dá)式,但不能使用別名。2)在where子句中使用數(shù)值時,既可以用單引號也可以不用單引號,使用日期值字符值時,都必須使用單引號,并且日期值的格式必須要符合數(shù)據(jù)庫中支持的日期格式,否則必須事先使用to_date函數(shù)將其轉(zhuǎn)換成為數(shù)據(jù)庫中支持的日期格式。oracle中
21、日期的默認(rèn)格式為:01-1月-82在輸入查詢條件時,可以用 to_date( 1998-01-01,yyyy-mm-dd )3 )在SQL 語句中,命令不區(qū)分大小寫,但字符串區(qū)分大小寫WHERE 子句中的關(guān)系運(yùn)算符:比較操作符:, =, =, =, 邏輯操作符:AND OR NO其他操作符:INBETWEEN ANDIS NULL 和 IS NOT NULLLIKEEXISTS例如:1) IN:查詢 S001,s003,s006和s008四學(xué)生的信息SELECT * FROM StudentWHERE s# IN ( s001, s003, s006, s008)2) IS NOT NULL
22、:查詢?nèi)鄙倌挲g數(shù)據(jù)的學(xué)生SELECT * FROM Student WHERE age IS NULLLIKE :查詢姓名的第一個字母為R的學(xué)生SELECT * FROM Student WHERE sname LIKER%:任意長度的字符串_:單個字符(一個漢字占兩個字節(jié))注意: LIKE 只能用于字符串的匹配,不能用于其他類型。查詢姓名的第一個字母為R并且倒數(shù)第二個字母為S的學(xué)生SELECT * FROM Student WHERE sname LIKER%S_多個比較式可用 NOT 、 AND 和 OR 連接SELECT * FROM StudentWHERE age IS NULL a
23、nd sname LIKER%3)若要查詢通配符可以用轉(zhuǎn)義字符escape character 通常 character 用 ( 2 )去除重復(fù)記錄(DISTINCT )查詢學(xué)生的姓名SELECT Distinct sname FROM StudentDISTINCTt 只對記錄有效,不針對某個特定列SELECT Distinct sname, age FROM Student( 3 )排序查詢(ORDER BY )注:1) order by 只能對最終查詢結(jié)果進(jìn)行排序,也就是說其只能放在查詢語句的最后一條。2)可以使用列的別名,列的位置進(jìn)行排序。3)在大多數(shù)情況下,指定的排序列(order
24、by 列名)都是選擇列( select 列名) ,但排序列也可以不是選擇列。但如果在select 語句中使用了 distinct 關(guān)鍵字,則排序列必須是選擇列了。查詢所有學(xué)生信息并將結(jié)果按年齡升序排列SELECT * FROM Student ORDER By age將結(jié)果按年齡升序排列 ,按姓名降序排列SELECT * FROM StudentORDER By age ASC , sname DESCASC 表示升序, DESC 表示降序( 4)聚集函數(shù)注:1)聚集函數(shù)和 group by 子句聯(lián)合使用,表示對每個組進(jìn)行統(tǒng)計,否則將所有數(shù)據(jù)行當(dāng)成一個組進(jìn)行統(tǒng)計。2)聚集函數(shù)只能出現(xiàn)在選擇列表
25、、 order by 子句、 having 子句中,而不能出現(xiàn)在where和 group by 子句中。3)除了 count ( * )外,其他聚集函數(shù)都會忽略 null 行。4) 聚集函數(shù)中可以指定all 和 distinct 選項(xiàng)。 其中 all 是默認(rèn)選項(xiàng), 表示統(tǒng)計所有的行 (包括重復(fù)行) ,而 distinct 只統(tǒng)計不同的行。 count ( distinct sal )(DISTINCT | ALL)COUNT( 列名 ) :對一列中的值計數(shù)COUNT(*) :計算記錄個數(shù)SUM( 列名 ) :求一列值的總和(數(shù)值)AVG ( 列名 ) :求一列值的平均值MIN ( 列名 ) :
26、求一列值的最小值MAX ( 列名 ):求一列值的最大值例子:求學(xué)生的總?cè)藬?shù)SELECT count(*) FROM student求選修了課程的學(xué)生人數(shù)SELECT COUNT(DISTINCT s#) FROM SC求學(xué)生的平均年齡SELECT avg(age) as average_age FROM student( 5)分組查詢(GROUP BY )1)基本格式group by 列名 1,列名 2 having 條件 ORDER by 列名查詢男生和女生的平均年齡SELECT sex, AVG(age) as Average_age FROM StudentGroup By sex注意:
27、除聚集函數(shù)外的屬性必須全部出現(xiàn)在Group By 子句中2)返回特定的分組結(jié)果( HAVEING )查詢不同年齡的學(xué)生人數(shù),并返回人數(shù)在5 人以上的結(jié)果SELECT age, COUNT(*) as students FROM StudentGroup By ageHaving COUNT(*) 5Having 子句中必須聚集函數(shù)的比較式,而且聚集函數(shù)的比較式也只能通過Having 子句給出Having 中的聚集函數(shù)可與SELECT 中的不同查詢?nèi)藬?shù)在60 以上的各個班級的學(xué)生平均年齡SELECT class, AVG(age) FROM StudentGroup By classHaving
28、 COUNT(*) 60( 6)使用 rollup 和 cube 限定詞Rollup 用于生成橫向統(tǒng)計結(jié)果SQL select deptno,job,avg(sal),max(sal) from emp 2 group by rollup(deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)10 CLERK130010 MANAGER245010 PRESIDENT5000102916.6666720 CLERK95020 ANAL YST300020 MANAGER297520217530 CLERK95030 MANAGER285030 SALESMAN140013
29、00245050005000110030002975300095028501600301566.666672073.21429Cube 用于生成縱向統(tǒng)計結(jié)果28505000SQL select deptno,job,avg(sal),max(sal) from emp 2 group by cube (deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)2073.21429CLERK1037.5ANAL YST3000MANAGER2758.33333SALESMAN1400PRESIDENT5000102916.6666710 CLERK130010 MANAGER2
30、45010 PRESIDENT50002021755000130030002975160050005000130024505000300020 CLERK95020 ANAL YST300020 MANAGER2975301566.6666730 CLERK95030 MANAGER285030 SALESMAN1400110030002975285095028501600(二)連接查詢 一個查詢同時涉及兩個以上的表,則稱之為連接查詢。Stucten底 SC表(s#是外鍵,c一是明鍵)S#WrwisAge01Sa2002孰2103sc21S#C#Scorepl1ClSOpl1C2S502C1S
31、9c#creditC1Ca3C2效4C3Cc3.5SELECT ,表名.列名村FROM 表名 , WHERE1等值連接和非等值連接在連接查詢中應(yīng)在列前加上表作為前綴,但如果列名在不同的表中不同,則可以不加表名限制,否則必須加。當(dāng)指定表的別名時,別名應(yīng)跟在表名后面。例如:SQL select d.deptno , d.dname, e.ename, e.sal2 from dept d,emp e3 where d.deptno=e.deptno4 and d.deptno=20;1)等值連接查詢學(xué)生的學(xué)號,姓名和所選課程號SELECT student.s#, student.sname,sc.
32、c#FROM student,scWHERE student.s# = sc.s#聯(lián)接條件2)非等值連接SELECT SC.S# , Course.credit FROM SC,Course WHERE SC.C# I IN Course.C#2自然連接若在等值連接中把目標(biāo)列中重復(fù)的屬性列去掉則為自然連接3自身連接給一個表定義兩個或多個不同的別名,就可以像使用這兩個別名進(jìn)行連接查詢。SELECT FIRST.Cno, SECOND.CpnoFROM Course FIRST , Course SECONDWHERE FIRST.Cpno=SECOND.Cno4外連接查詢外連接分為左外連接和右外
33、連接左外連接列出左邊關(guān)系中所有的元組右外連接列出右邊關(guān)系中所有的元組SELECT ,表名.列名村FROM 表名 LEFT|RIGHT OUT JOIN USING ON (連接條件)USING去掉重復(fù)行5復(fù)合條件查詢WHERE子句中可以有多個連接條件,稱為復(fù)合條件連接。(三)嵌套查詢在SQL語言中,一個SELECT-FROM-WHERE 語句稱為一個查詢塊。 將一個查詢塊嵌套在另 個查詢塊的 WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。S#SrwipAge01Sa20022103C215#C#Score01C1SO01C2502C1S9Shicten俅 SC表畫#是外照c#是外
34、圖c#creditC1Ca3C2砂4C3Cc3.51無關(guān)子查詢父查詢與子查詢相互獨(dú)立,子查詢語句不依賴父查詢中返回的任何記錄,可以獨(dú)立執(zhí)行 查詢沒有選修課程的所有學(xué)生的學(xué)號和姓名SELECT s#,snameFROM studentWHERE s# NOT IN ( SELECT distinct s# FROM sc)子查詢返回選修了課程的學(xué)生學(xué)號集合,它與外層的查詢無依賴關(guān)系,可以單獨(dú)執(zhí)行無關(guān)子查詢一般與IN一起使用,用于返回一個值列表2相關(guān)子查詢相關(guān)子查詢的結(jié)果依賴于父查詢的返回值查詢選修了課程的學(xué)生學(xué)號和姓名SELECT s#, snameFROM studentWHERE EXIST
35、S (SELECT * FROM sc WHERE sc.s# = student.s#)相關(guān)子查詢不可單獨(dú)執(zhí)行,依賴于外層查詢EXISTS (子查詢):當(dāng)子查詢返回結(jié)果非空時為真,否則為假執(zhí)行分析:對于 student的每一行,根據(jù)該行的 s#去sc中查找有無匹配記錄3連接視圖子查詢出現(xiàn)在FROM子句中作為表使用查詢只選修了 1門或2門課程的學(xué)生學(xué)號、姓名和課程數(shù)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#)
36、 SC2, studentWHERE sc2.s# = student.s# and (count_c#=1 OR count_c#=2) 聯(lián)機(jī)視圖可以和其它表一樣使用一一(四)查詢結(jié)果的連接Union 和 Union AllMinusIntersect1 Union 和 Union All查詢課程平均成績在 90分以上或者年齡小于20的學(xué)生學(xué)號(SELECT s# FROM student WHERE age90) SC2 )UNION操作自動去除重復(fù)記錄UNION All操作不去除重復(fù)記錄2 Minus查詢未選修課程的學(xué)生學(xué)號(SELECT s# FROM Student )Minus(S
37、ELECT distinct s# FROM SC )3 Intersect返回兩個查詢結(jié)果的交集查詢課程平均成績在 90分以上并且年齡小于20的學(xué)生學(xué)號(SELECT s# FROM student WHERE age90) SC2)五授權(quán)(一)創(chuàng)建數(shù)據(jù)庫模式的權(quán)限CREATE USER WITH DBA | RESOURCE | CONNECT1對數(shù)據(jù)庫模式的授權(quán)由 DBA在創(chuàng)建用戶時實(shí)現(xiàn)2新創(chuàng)建的用戶有二種權(quán)限擁有的權(quán)限可否執(zhí)行的操作CREATE USERCREATE SCHEMACREATE TABLE登錄數(shù)據(jù)庫執(zhí)行查詢和操作DBA可以可以可以可以RESOURCE不可以不可以可以可以C
38、ONNECT不可以不可以不可以可以但必須擁有相應(yīng)權(quán)限(二)授權(quán)和回收關(guān)系數(shù)據(jù)庫系統(tǒng)中的存取權(quán)限對象類 型對象操作類型(權(quán)限)數(shù)據(jù)庫模式CREATE SCHEMA基本表CREATE TABEL , ALTER TEBLE模式:視圖CREATE VIEW索引CREATE INDEX數(shù)據(jù)基本表和視圖SELECT, INSERT, UPDATE , DELETE , REFERENCES , ALL PRIVILEGES數(shù)據(jù)屬性列SELECT, INSERT, UPDATE , DELETE , REFERENCES , ALL PRIVILEGES1授權(quán)GRANT , 權(quán)限刁ON , /用戶WITH
39、 GRANT OPTION ;例如:GRANT SELECT ON TABLE Student TO U1WITH GRANT OPTION(1) WITH GRANT OPTION 表示獲得某種權(quán)限后的用戶,還可以把這種權(quán)限授予其他用戶。 如果沒有此句,則不能傳播該權(quán)限(2)用戶可以是PUBLIC即全體用戶2回收REVOKE , ON ,用戶 CASCADE | RESTRICT; 例如:REVOKE SELECT ON TABLE Student FROM U1 CASCADE ;(三)數(shù)據(jù)庫角色1創(chuàng)建角色CREATE ROLE ;例如:CREATE ROLE R1 ;數(shù)據(jù)庫角色是被命名的
40、一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限,角色是權(quán)限集合2給角色授權(quán)GRANT , 權(quán)限刁ON , ,;例如:GRANT SELECT , UPDATE, INSERT ON TABLE Student TO R1;3將一個角色授予其他角色或用戶GRANT ,TO , WITHADMIN OPTIONWITH ADMIN OPTION 表示獲得某權(quán)限的角色或用戶還可以把這種權(quán)限再授予其他角色或用戶例如: GRANT R1TO wang;4 角色權(quán)限回收REVOKE , ON ,FROM , ; 例如: REVOKE R1FROM wang;六 完整性約束命名子句完整性約束條件可以在CREATE TABLE
41、語句中定義。 SQL 還在 CREATE TABLE 語句中提供了完整性約束命名子句 CONSTRAINT, 用來對完整性約束條件命名。1 創(chuàng)建完整性約束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),S
42、sex CHAR(2)CONSTRAINT C4 CHECK (Ssex IN( 男 , 女),CONSTRAINT StudentKey PRIMARY KEY (Sno);2 修改完整性約束例如: ALTER TABLE StudentDROP CONSTRAINT C4;ALTER TABLE StudentADD CONSTRAINT C5 CHECK (Sage40);七 觸發(fā)器CREATE TRIGGERBEFORE | AFTER ONFOR EACH ROW| STA TEMENTWHEN第三章 關(guān)系數(shù)據(jù)庫理論一 關(guān)系模式(回顧)一個關(guān)系模式應(yīng)當(dāng)是一個五元組。R( U , D
43、, DOM , F)R為關(guān)系名U為組成該關(guān)系的屬性名集合D為屬性組U中屬性所來自的域DOM為屬性向域的映像集合F為屬性間數(shù)據(jù)的依賴關(guān)系集合由于D和DOM對模式設(shè)計關(guān)系不大,因此我們在本章中把關(guān)系模式看作是一個三元組:R當(dāng)且僅當(dāng)U上的一個關(guān)系r滿足F時,稱r為關(guān)系模式R的一個關(guān)系。二數(shù)據(jù)依賴數(shù)據(jù)依賴是一個關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系。這種關(guān)系是通過學(xué)習(xí)屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間相關(guān)聯(lián)系。最重要的數(shù)據(jù)依賴其中最重要的是函數(shù)依賴和多值依賴。三規(guī)范化(一)函數(shù)依賴?yán)碚?函數(shù)依賴定義10.1:設(shè)R(U)是屬T集U上的關(guān)系模式。X,Y是U的子集。若對于 R(U)的任意一個可能 的關(guān)系r, r中不可能存在兩個元組在X上的屬性值相等,而在 Y上的屬性值不等,則稱 X函數(shù)確定Y或Y函數(shù)依賴于X,記作X-Y。下面介紹一些術(shù)語和記號:X f Y,但Y X,則稱X-Y為平凡的函數(shù)依賴。否則,稱X-Y為非平凡的函數(shù)依賴。今后,若不特別聲明,我們總是討論非平凡的函數(shù)依賴。若X 一Y ,則稱X為決定因素(Determinant)。若 X-Y, Y - X,則記作 XYo若Y不函數(shù)依賴于X ,則記作X不Y。2完全函數(shù)依賴和部分函數(shù)依賴定義10.2:在R(U)中,如果X - Y,并且對于X的任何一個真子集 X,都有X 4 丫,則稱丫對X完全函數(shù)依賴,記彳:X-* Y 。
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 管理服務(wù)合同協(xié)議書范本
- 供貨商月結(jié)協(xié)議合同書
- 勞動合同五險合一協(xié)議
- 維修廠合伙人協(xié)議合同書
- 離職合同協(xié)議格式
- 烏蘭察布合同協(xié)議翻譯
- 拆遷合同空白協(xié)議
- 直放站合同協(xié)議
- 合同專賣協(xié)議
- 藥房托管合同協(xié)議
- 安全帶檢測報告(共8頁)
- 逆流開式冷卻塔計算(精品ZTQ版)
- 公司erp項(xiàng)目激勵制度
- 出廠檢驗(yàn)報告B
- Excel函數(shù)和公式練習(xí)
- 六年級下冊數(shù)學(xué)試題-半期學(xué)情檢測西師大版含答案
- 國際石油合同講座1018
- 某核電項(xiàng)目機(jī)械貫穿件安裝施工管理技術(shù)研究
- JGJ_T231-2021建筑施工承插型盤扣式鋼管腳手架安全技術(shù)標(biāo)準(zhǔn)(高清-最新版)
- 基于單片機(jī)的接觸器控制器設(shè)計
- 建筑幕墻設(shè)計說明(最新規(guī)范)
評論
0/150
提交評論