版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 數(shù)據(jù)庫(kù)知識(shí)要點(diǎn)總結(jié)第一章 關(guān)系數(shù)據(jù)模型數(shù)據(jù)模型(靜態(tài))的三要素一關(guān)系數(shù)據(jù)結(jié)構(gòu)(一)基本概念包括:1 屬性(Attribute):實(shí)體所具有的某一特征。(如學(xué)生的特征是學(xué)號(hào)、姓名、-)域(Domain):屬性對(duì)應(yīng)的一組具有相同數(shù)據(jù)類型的值的集合。每個(gè)屬性有一個(gè)域。(關(guān)系模型限定域必須原子性 1NF)2鍵( key)(1)候選鍵(candidate key) 關(guān)系的某一屬性或?qū)傩越M的值唯一標(biāo)識(shí)一個(gè)元組,而其任何真子集無此性質(zhì)。候選鍵的諸屬性稱為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性。(2)主鍵(primary key)一個(gè)關(guān)系至少有一個(gè)侯選鍵,可以有幾個(gè)侯選鍵。
2、一般從侯選鍵中選擇一個(gè)作為主鍵(primary key),其他的稱為侯補(bǔ)鍵(alternate key) 每個(gè)主鍵的值是不能相同的,(3)外鍵(foreign key)如關(guān)系中的屬性或?qū)傩越M不是本關(guān)系的主鍵,而引用其他關(guān)系或本關(guān)系的主鍵,則稱為本關(guān)系的外鍵。3 關(guān)系(Relation):(1)關(guān)系:定義在事物的所有屬性域上的多元關(guān)系 ,一個(gè)關(guān)系就是一張二維表。 (2)關(guān)系模式:關(guān)系的描述稱為關(guān)系模式,它可以形式化的表示為R(U,D,DOM,F(xiàn))R 為關(guān)系名U為組成該關(guān)系的屬性名集合D為屬性組U中屬性所來自的域DOM為屬性向域的映像集合F為屬性間數(shù)據(jù)的依賴關(guān)系集合關(guān)系模式通常簡(jiǎn)記為:R(U)或R
3、(A1,A2,A3,An)關(guān)系的三種基本類型基本表:是實(shí)際存在的表,它是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示。查詢表:是查詢結(jié)果對(duì)應(yīng)的表。視圖表:是由基本表或其他視圖導(dǎo)出的表,是虛表,不對(duì)應(yīng)實(shí)際存儲(chǔ)內(nèi)容。二關(guān)系操作(一)兩種關(guān)系操作1 查詢(Query)查詢可以分為 選擇(SELECT),投影(Project),連接(Join),交(Intersection),并(Union),差(Except),除(Divide),笛卡爾乘積。其中選擇,投影,并,差,笛卡爾乘積是5種基本操作,其他的操作可用這些基本操作定義和導(dǎo)出2 插入(Insert),刪除(Delete),修改(Update)(二)關(guān)系操作的特點(diǎn)集合式
4、的操作方式,即操作的對(duì)象和結(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ù)庫(kù)的數(shù)據(jù)必須遵循的約束實(shí)體完整性(Entity Integrity ) 參照完整性(Referential Integrity ) 用戶自定義完整性(User-Defined Integrity )實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為關(guān)系的兩個(gè)不變性。 (一)實(shí)體完整性實(shí)體完整性規(guī)則:關(guān)系模式R的主屬性值不可為空 指所有主屬性均不可取空值,不僅僅是主鍵不可為空
5、(二)參照完整性1外鍵(Foreign Key)定義:設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系的碼,是基本關(guān)系的主碼。如果與相對(duì)應(yīng),則稱是的外碼(Foreign Key)R稱為參照關(guān)系(Referential Relation),S稱為被參照關(guān)系(Referenced Relation )2參照完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼KS相對(duì)應(yīng)(基本關(guān)系到R和S不一定是不同關(guān)系),則對(duì)于R中每個(gè)元組在F上的值必須為:(1)等于被參照關(guān)系S 中所參照的候選鍵的某個(gè)值(2)空值(三)用戶自定義完整性針對(duì)某一具體數(shù)據(jù)的約束條件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的
6、特殊語義由應(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)算(交,并,差,笛卡爾乘積)1 (并)R1R2=b 2 d b 3 b c 2 d d 3 b a 3 c e 5 f g 6 62 (交 AND) R1R2= b 2 d c 2 d3 (差) R1R2= b 3 b d 3 b4 (笛卡爾乘積) R1 S = b 2 d 2 d b 2 d 3 b b 3 b 2 d b 3 b 3 b c 2 d 2 d c 2 d 3 b d 3 b 2 d d 3 b 3 b(二)專門關(guān)系運(yùn)算1 選擇(SELECT) (選擇符合條件的元組) <
7、;選擇條件>(<關(guān)系名>) 如: 性別=男(STUDENT) 表的水平劃分2 投影(Project)(選擇符合條件的屬性) <屬性表> (<關(guān)系名>) 如: 學(xué)號(hào),姓名 (STUDENT) 表的垂直劃分3 連接操作(Join) 笛卡爾乘積 R S = <t,g>|tR AND gS(1)連接分為等值連接和自然連接AB 連接操作: R|S 其中A和B分別為R和S上度數(shù)相等且具有可比性的屬性組1)等值連接(為=) R1.A1 R1.A2R1.A3 S.A2 S.A3 如上例 R1 | S = b 2 d 2 d R1.A2=S.A2 b 3 b
8、 3 b c 2 d 2 d d 3 b 3 b 2)自然連接(只有|)一般連接是從行的角度出發(fā)的,但自然連接還要取消重復(fù)的列,是從行和列的角度進(jìn)行運(yùn)算 S.A2 S.A3R1.A1 R1.A2R1.A3 如 R1 | 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ù)庫(kù)的標(biāo)準(zhǔn)語言SQL一SQL動(dòng)詞表SQL功能動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRAN
9、T,REVOKE二 數(shù)據(jù)定義操作對(duì)象操作方式創(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) 要?jiǎng)?chuàng)建模式,調(diào)用該命令的用戶必須具有DBA權(quán)
10、限,或者獲得了DBA授予的CREATE SCHEMA權(quán)限(2)如果沒指定<模式名>那么<模式名>隱含為<用戶名>(3)定義模式,實(shí)際上是定義了一個(gè)命名空間,在這個(gè)空間中可以進(jìn)一步定義該模式包含的數(shù)據(jù)庫(kù)對(duì)象,例如基本表,視圖,索引。2模式的刪除 DROP SCHEMA<模式名><CASCADE | RESTRICT> (兩者必選其一) 例如:DROP SCHEMA “s-t” CASCADE;(1)CASCADE(級(jí)聯(lián))表示在刪除模式的同時(shí)把該模式中所有的數(shù)據(jù)庫(kù)對(duì)象全部一起刪除。(2)RESTRICT(限制)表示在刪除該模式中已經(jīng)定義了
11、下屬數(shù)據(jù)庫(kù)對(duì)象(表,視圖索引),則拒絕該刪除語句。(二)表的定義,刪除和修改1表的定義CREATE TEBLA<表名> (<列名> <數(shù)據(jù)類型> 列級(jí)完整性約束,<列名> <數(shù)據(jù)類型> 列級(jí)完整性約束 ,<表級(jí)完整性約束>)列定義的完整格式:<列名> <列類型> DEFAULT <默認(rèn)值> NOT NULL <列約束>CREATE TEBLA<表名> AS <SELECT 查詢> 若要定義模式式下的表:CREATE TABLE <模式名>.
12、<表名> (1)數(shù)據(jù)類型 ANSI/ISOOracle字符型Char(n)Char(n)Character(n)Character Varying(n)Varchar2(n)Char Varying(n)數(shù)值型NumericNumberDecimalIntegerIntFloatDoubleReal日期型DateDateTime(2)完整性約束主鍵約束(Primary Key) 實(shí)體完整性外鍵約束(Foreign Key) 參照完整性檢查約束(Check) 用戶自定義完整性唯一鍵約束(Unique)非空約束(Null | Not Null)默認(rèn)值(Defautl)(3)
13、例子 CREATE TABLE student (Sno CHAR(8) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2) DEFALULT 男, Sage SMALLINT CHECK(Sage>0)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
14、),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno,Cno),/注意一定要有括號(hào)FOREIGN KEY(Sno) REFERENCES Course(Cno),/sno一定要有括號(hào))(4)說明 1)列約束:在每個(gè)列后定義,可以有多個(gè)約束子句,不能定義多個(gè)列上的約束2)表約束:在全部列定義完成后定義,可以有多個(gè)約束子句,多個(gè)列上的約束必須使用表約束,單列上的約束可以用列約束,也可用表約束2表的刪除 DROP TABLE <表名>CASCADE | RESTRICT(1)CASCADE(級(jí)聯(lián))刪除該表沒有任何限制,刪除表的同時(shí),相關(guān)的依賴對(duì)象(如
15、視圖)也一起刪除。(2)RESTRICT(限制)刪除該表是有限制條件的。欲刪除的表不能被其他表的約束所引用 (如CHECK,FOREIGN KEY等約束),不能有視圖,不能有觸發(fā)器(trigger),不能存儲(chǔ)過程或函數(shù)。(3)缺省情況下是RESTRICT3 表的修改 ALTER TABLE <表名> ADD <列名><數(shù)據(jù)類型>完整性約束 | MODIFY <列名><數(shù)據(jù)類型>完整性約束 | DROP COLUMN <列名> | ADD<表約束> | DROP CONSTRAINT <約束名> 例如
16、(1)ALTER TABLE StudentADD Dept Varchar2(10)UNIQUE(2)Alter Table StudentDROP COLUMN age(3)AlLTER TABLE StudentMODIFYage number(3) NOT NULL(4)ALTER TABLE StudentADD CONSTRAINT PK_Student PRIMARY KEY(S#)(5)ALTER TABLE SC DROP CONSTRAINT FK_SC(三)視圖的定義和刪除1視圖的定義 CREATE VIEW <視圖名>(列名1,列名2,)/列名一定要放在括號(hào)
17、里 AS <查詢> WITH CHECK OPTION |WITH READ ONLY例如:CREATE VIEW cs_view (sno, name, age)AS SELECT s#, sname, ageFROM student WHERE Dept = 計(jì)算機(jī)系 WITH READ ONLY;(1)WITH CHECK OPTION表示對(duì)視圖進(jìn)行UPTATE,INSERT,DELETE操作時(shí)要保證更新,插入,刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式) WITH READ ONLY表示視圖是只讀的(2)視圖的屬性列名只能是全部缺省或全部指定,沒有別的選擇。但
18、在下列兩種情況下必須明確指定組成視圖的列名。 1)某個(gè)目標(biāo)列不是單純的屬性名,而是聚集函數(shù)或列表達(dá)式。 2)多表連接時(shí)選出幾個(gè)同名列作為視圖的字段。(3)子查詢可以是任意的SELECT子句,但通常不允許含有OREER BY 子句各DISDINCT短語。(4)不是所有視圖都是可更新的1)基于聯(lián)接查詢的視圖不可更新2)使用了函數(shù)的視圖不可更新3)使用了分組操作的視圖不可更新4)只有建立在單個(gè)表上而且沒有使用函數(shù)的視圖才是可更新的2 視圖的刪除 DROP VIEW <視圖名> CASCADE(四)索引的定義和刪除1索引的定義CREATE UNIQUE | CLUSTER INDEX &l
19、t;索引名> ON <表名> (<列名> <次序> ,<列名> <次序> )例如:CREATE UNIQUE INDEX SCno on SC(Sno ASC,Cno DESC);(1)UNIQUE表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄(2)CLUSTER表示要建立的索引是聚簇索引。聚簇索引是指索引項(xiàng)的順序與表中的物理順序一致的索引組織,在一個(gè)表上只能建立一個(gè)聚簇索引。(3)次序可選ASC(升序)或DESC(降序)缺省值為ASC2索引的刪除DROP INDEX <索引名> DROP INDEX SCno;三 數(shù)
20、據(jù)更新(一)插入數(shù)據(jù)INSERT插入數(shù)據(jù)通常有兩種形式,一種是插入一個(gè)元組,另一種是插入子查詢結(jié)果。后者可以一次插入多個(gè)元組。1 插入一個(gè)元組INSERT INTO <表名> ( < 屬性列1 >,< 屬性列2 >)VALUES(< 常量1 > ,< 常量2 >) 例如 INSERT INTO Student (Sno, Sname, Ssex, Sdept, Sage)VALUES (, 陳冬 , 男 , IS , 18);INTO 語句中沒有出現(xiàn)的屬性列,新元組在這些列上將取空值或默認(rèn)值。在INTO子句中只指出了表名,沒有指出屬性
21、名,新元組要在所有屬性列上都指定值,屬性列的次序與CREATE TABLE 中的次序相同。2 插入子查詢結(jié)果INSERT INTO <表名> ( < 屬性列1 >,< 屬性列2 >)子查詢;例如INSERT INTO Dept_age( Sdept ,Avg_age)SELECT Sdept ,AVG(Sage)FROM StudentGROUP BY Sdept;(二)修改數(shù)據(jù) UPDATE <表名> SET <列名>=<表達(dá)式>,<列名>=<表達(dá)式> WHERE <條件>例如:UPD
22、ATE Student SET Sage=22 WHERE Sno=;(三)刪除數(shù)據(jù)DELETE FROM<表名>WHERE <條件>例如:DELETE FROM Student WHERE Sno=;DELETE語句刪除的是表中的數(shù)據(jù),而不是關(guān)于表的定義。四 數(shù)據(jù)查詢基本數(shù)據(jù)查詢的格式:SELECT ALL | DISTINCT < 目標(biāo)列表達(dá)式 >AS< 別名>,<標(biāo)列表達(dá)式>AS<別名>FROM <名或視圖名>,<表名或視圖名>WHERE<查詢表達(dá)式>GROUP BY <列名
23、1>HAVING<條件表達(dá)式>ORDER BY <列名2>ASC|DESC; (一)單表查詢?cè)谝粋€(gè)表中查詢數(shù)據(jù) 1* 查詢查詢?nèi)坑涗洠翰樵內(nèi)康膶W(xué)生信息SELECT * FROM Student;*表示所有列等同于SELECT s#, sname, age, sex FROM Student2使用別名(AS或空格) 使用別名:查詢所有學(xué)生的學(xué)號(hào)和姓名SELECT s# AS 學(xué)號(hào), sname AS 姓名 FROM Student如果別名包含空格,須使用雙引號(hào)SELECT s# AS “Student Number” FROM Student3表達(dá)式查詢(三種表
24、達(dá)式,字符串表達(dá)式,算術(shù)表達(dá)式,函數(shù)表達(dá)式)(1)字符串表達(dá)式查詢所有學(xué)生的學(xué)號(hào)、姓名和出生年份,返回兩列信息,其中一列是“學(xué)號(hào):姓名”,另一列是出生年份SELECT s# | “:”| sname AS 學(xué)生,2003age AS 出生年份 FROM Student說明連接字符串 | 表示則多個(gè)查詢列連接為一個(gè)列輸出。(2)算術(shù)表達(dá)式查詢學(xué)生的出生年份SELECT 2003age AS 出生年份 FROM Student;(3)函數(shù)表達(dá)式SELECT sno, to_char(birth, mm-dd-yyyy) AS birthday FROM StudentSELECT Count(sn
25、o) As 學(xué)生人數(shù) FROM Student4條件查詢(1)WHERE條件注:1)在where子句中使用列名和表達(dá)式,但不能使用別名。2)在where子句中使用數(shù)值時(shí),既可以用單引號(hào)也可以不用單引號(hào),使用日期值字符值時(shí),都必須使用單引號(hào),并且日期值的格式必須要符合數(shù)據(jù)庫(kù)中支持的日期格式,否則必須事先使用to_date函數(shù)將其轉(zhuǎn)換成為數(shù)據(jù)庫(kù)中支持的日期格式。oracle 中日期的默認(rèn)格式為: 01-1月-82在輸入查詢條件時(shí),可以用to_date(1998-01-01,yyyy-mm-dd) 3)在SQL語句中,命令不區(qū)分大小寫,但字符串區(qū)分大小寫WHERE子句中的關(guān)系運(yùn)算符:比較操作符:&g
26、t;, <, >=, <=, =, <>邏輯操作符: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:查詢?nèi)鄙倌挲g數(shù)據(jù)的學(xué)生SELECT * FROM Student WHERE age IS NULLLIKE:查詢姓名的第一個(gè)字母為R的學(xué)生SELECT * FROM Student WHERE
27、 sname LIKE R%:任意長(zhǎng)度的字符串_:?jiǎn)蝹€(gè)字符(一個(gè)漢字占兩個(gè)字節(jié))注意:LIKE只能用于字符串的匹配,不能用于其他類型。查詢姓名的第一個(gè)字母為R并且倒數(shù)第二個(gè)字母為S的學(xué)生SELECT * FROM Student WHERE sname LIKE R%S_多個(gè)比較式可用NOT、AND和OR連接SELECT * FROM Student WHERE age IS NULL and sname LIKE R%3)若要查詢通配符可以用轉(zhuǎn)義字符 escape character 通常 character 用 (2)去除重復(fù)記錄(DISTINCT)查詢學(xué)生的姓名SELECT Distin
28、ct sname FROM StudentDISTINCTt只對(duì)記錄有效,不針對(duì)某個(gè)特定列SELECT Distinct sname, age FROM Student(3)排序查詢(ORDER BY)注:1)order by只能對(duì)最終查詢結(jié)果進(jìn)行排序,也就是說其只能放在查詢語句的最后一條。2)可以使用列的別名,列的位置進(jìn)行排序。3)在大多數(shù)情況下,指定的排序列(order by 列名)都是選擇列(select 列名),但排序 列也可以不是選擇列。但如果在select 語句中使用了distinct關(guān)鍵字,則排序列必須 是選擇列了。查詢所有學(xué)生信息并將結(jié)果按年齡升序排列SELECT * FROM
29、 Student ORDER By age將結(jié)果按年齡升序排列,按姓名降序排列SELECT * FROM StudentORDER By age ASC,sname DESCASC表示升序,DESC表示降序(4)聚集函數(shù) 注: 1)聚集函數(shù)和group by 子句聯(lián)合使用,表示對(duì)每個(gè)組進(jìn)行統(tǒng)計(jì),否則將所有數(shù)據(jù)行當(dāng) 成一個(gè)組進(jìn)行統(tǒng)計(jì)。 2)聚集函數(shù)只能出現(xiàn)在選擇列表、order by子句、having子句中,而不能出現(xiàn)在where 和group by 子句中。 3)除了count(*)外,其他聚集函數(shù)都會(huì)忽略null行。 4)聚集函數(shù)中可以指定all和distinct選項(xiàng)。其中all是默認(rèn)選項(xiàng),
30、表示統(tǒng)計(jì)所有的行(包 括重復(fù)行),而distinct只統(tǒng)計(jì)不同的行。count(distinct sal) <FuctionName>(DISTINCT | ALL<列名>) COUNT(列名):對(duì)一列中的值計(jì)數(shù)COUNT(*):計(jì)算記錄個(gè)數(shù)SUM(列名):求一列值的總和(數(shù)值)AVG (列名):求一列值的平均值MIN (列名):求一列值的最小值MAX (列名):求一列值的最大值例子:求學(xué)生的總?cè)藬?shù)SELECT count(*) FROM student求選修了課程的學(xué)生人數(shù)SELECT COUNT(DISTINCT s#) FROM SC求學(xué)生的平均年齡SELECT
31、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注意:除聚集函數(shù)外的屬性必須全部出現(xiàn)在Group By子句中 2)返回特定的分組結(jié)果(HAVEING)查詢不同年齡的學(xué)生人數(shù),并返回人數(shù)在5人以上的結(jié)果SELECT age, COUNT(*) as students FROM StudentGroup B
32、y ageHaving COUNT(*) > 5Having子句中必須聚集函數(shù)的比較式,而且聚集函數(shù)的比較式也只能通過Having子句給出Having中的聚集函數(shù)可與SELECT中的不同查詢?nèi)藬?shù)在60以上的各個(gè)班級(jí)的學(xué)生平均年齡SELECT class, AVG(age) FROM StudentGroup By classHaving COUNT(*) > 60(6)使用rollup和cube限定詞 Rollup 用于生成橫向統(tǒng)計(jì)結(jié)果 SQL> select deptno,job,avg(sal),max(sal) from emp 2 group by rollup(de
33、ptno,job); DEPTNO JOB AVG(SAL) MAX(SAL)- - - - 10 CLERK 1300 1300 10 MANAGER 2450 2450 10 PRESIDENT 5000 5000 10 2916.66667 5000 20 CLERK 950 1100 20 ANALYST 3000 3000 20 MANAGER 2975 2975 20 2175 3000 30 CLERK 950 950 30 MANAGER 2850 2850 30 SALESMAN 1400 1600 30 1566.66667 2850 2073.21429 5000 Cub
34、e 用于生成縱向統(tǒng)計(jì)結(jié)果 SQL> select deptno,job,avg(sal),max(sal) from emp 2 group by cube (deptno,job); DEPTNO JOB AVG(SAL) MAX(SAL)- - - - 2073.21429 5000 CLERK 1037.5 1300 ANALYST 3000 3000 MANAGER 2758.33333 2975 SALESMAN 1400 1600 PRESIDENT 5000 5000 10 2916.66667 5000 10 CLERK 1300 1300 10 MANAGER 2450
35、 2450 10 PRESIDENT 5000 5000 20 2175 3000 20 CLERK 950 1100 20 ANALYST 3000 3000 20 MANAGER 2975 2975 30 1566.66667 2850 30 CLERK 950 950 30 MANAGER 2850 2850 30 SALESMAN 1400 1600(二)連接查詢一個(gè)查詢同時(shí)涉及兩個(gè)以上的表,則稱之為連接查詢。SELECT < 表名.列名>,<表名.列名>FROM <表名>,<表名>WHERE<查詢表達(dá)式>1 等值連接和非等值
36、連接注:在連接查詢中應(yīng)在列前加上表作為前綴,但如果列名在不同的表中不同,則可以不加表名限制,否則必須加。當(dāng)指定表的別名時(shí),別名應(yīng)跟在表名后面。例如:SQL> select d.deptno , d.dname, e.ename, e.sal 2 from dept d,emp e 3 where d.deptno=e.deptno 4 and d.deptno=20;1)等值連接查詢學(xué)生的學(xué)號(hào),姓名和所選課程號(hào)SELECT student.s#, student.sname,sc.c#FROM student,scWHERE student.s# = sc.s# 聯(lián)接條件2)非等值連接
37、SELECT SC.S# , Course.credit FROM SC,Course WHERE SC.C# I IN Course.C#2自然連接 若在等值連接中把目標(biāo)列中重復(fù)的屬性列去掉則為自然連接3自身連接 給一個(gè)表定義兩個(gè)或多個(gè)不同的別名,就可以像使用這兩個(gè)別名進(jìn)行連接查詢。 SELECT FIRST.Cno, SECOND.Cpno FROM Course FIRST , Course SECOND WHERE FIRST.Cpno=SECOND.Cno4外連接查詢 外連接分為左外連接和右外連接 左外連接列出左邊關(guān)系中所有的元組 右外連接列出右邊關(guān)系中所有的元組SELECT <
38、; 表名.列名>,<表名.列名>FROM <表名>LEFT|RIGHT OUT JOIN USING<表名> ON (連接條件)USING去掉重復(fù)行5復(fù)合條件查詢 WHERE子句中可以有多個(gè)連接條件,稱為復(fù)合條件連接。(三)嵌套查詢?cè)赟QL語言中,一個(gè)SELECT-FROM-WHERE語句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。1 無關(guān)子查詢父查詢與子查詢相互獨(dú)立,子查詢語句不依賴父查詢中返回的任何記錄,可以獨(dú)立執(zhí)行查詢沒有選修課程的所有學(xué)生的學(xué)號(hào)和姓名SELECT s#,snameF
39、ROM studentWHERE s# NOT IN ( SELECT distinct s# FROM sc)子查詢返回選修了課程的學(xué)生學(xué)號(hào)集合,它與外層的查詢無依賴關(guān)系,可以單獨(dú)執(zhí)行無關(guān)子查詢一般與IN一起使用,用于返回一個(gè)值列表2 相關(guān)子查詢相關(guān)子查詢的結(jié)果依賴于父查詢的返回值查詢選修了課程的學(xué)生學(xué)號(hào)和姓名SELECT s#, snameFROM studentWHERE EXISTS (SELECT * FROM sc WHERE sc.s# = student.s#)相關(guān)子查詢不可單獨(dú)執(zhí)行,依賴于外層查詢EXISTS(子查詢):當(dāng)子查詢返回結(jié)果非空時(shí)為真,否則為假執(zhí)行分析:對(duì)于stu
40、dent的每一行,根據(jù)該行的s#去sc中查找有無匹配記錄3 連接視圖子查詢出現(xiàn)在FROM子句中作為表使用查詢只選修了1門或2門課程的學(xué)生學(xué)號(hào)、姓名和課程數(shù)SELECT s#, count_c#FROM (SELECT s.s# as s#, count(sc.s#) as count_c# FROM student s, sc WHERE s.s#=sc.s# Group by s.s#) SC2, studentWHERE sc2.s# = student.s# and (count_c#=1 OR count_c#=2)聯(lián)機(jī)視圖可以和其它表一樣使用(四)查詢結(jié)果的連接Union和Union
41、 AllMinusIntersect1 Union和Union All查詢課程平均成績(jī)?cè)?0分以上或者年齡小于20的學(xué)生學(xué)號(hào)(SELECT s# FROM student WHERE age<20)UNION(SELECT s# FROM (SELECT s#, AVG(score) FROM SC group by s# having avg(score)>90) SC2)UNION操作自動(dòng)去除重復(fù)記錄UNION All操作不去除重復(fù)記錄2 Minus查詢未選修課程的學(xué)生學(xué)號(hào)(SELECT s# FROM Student)Minus(SELECT distinct s# FROM
42、 SC)3 Intersect返回兩個(gè)查詢結(jié)果的交集查詢課程平均成績(jī)?cè)?0分以上并且年齡小于20的學(xué)生學(xué)號(hào)(SELECT s# FROM student WHERE age<20)Intersect(SELECT s# FROM (SELECT s#, AVG(score) FROM SC group by s# having avg(score)>90) SC2)五 授權(quán) (一)創(chuàng)建數(shù)據(jù)庫(kù)模式的權(quán)限CREATE USER <用戶名> WITH DBA | RESOURCE | CONNECT1 對(duì)數(shù)據(jù)庫(kù)模式的授權(quán)由DBA在創(chuàng)建用戶時(shí)實(shí)現(xiàn)2 新創(chuàng)建的用戶有三種權(quán)限擁有的
43、權(quán)限可否執(zhí)行的操作CREATE USERCREATE SCHEMACREATE TABLE登錄數(shù)據(jù)庫(kù)執(zhí)行查詢和操作DBA可以可以可以可以RESOURCE不可以不可以可以可以CONNECT不可以不可以不可以可以但必須擁有相應(yīng)權(quán)限(二)授權(quán)和回收關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中的存取權(quán)限對(duì)象類型對(duì)象操作類型(權(quán)限)數(shù)據(jù)庫(kù)模式CREATE SCHEMA基本表CREATE TABEL ,ALTER TEBLE模式視圖CREATE VIEW索引CREATE INDEX數(shù)據(jù)基本表和視圖SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALL PRIVILEGES數(shù)據(jù)屬性列SELECT,INSE
44、RT,UPDATE,DELETE,REFERENCES,ALL PRIVILEGES1 授權(quán)GRANT <權(quán)限> ,<權(quán)限>ON <對(duì)象類型> <對(duì)象名> ,<對(duì)象名> <對(duì)象名>TO <用戶> ,<用戶>WITH GRANT OPTION ; 例如:GRANT SELECT ON TABLE StudentTO U1 WITH GRANT OPTION(1)WITH GRANT OPTION表示獲得某種權(quán)限后的用戶,還可以把這種權(quán)限授予其他用戶。如果沒有此句,則不能傳播該權(quán)限(2)用戶可以是PUB
45、LIC即全體用戶2 回收REVOKE <權(quán)限> , <權(quán)限>ON <對(duì)象類型> <對(duì)象名>,<對(duì)象名><對(duì)象名>FROM <用戶> , <用戶> CASCADE | RESTRICT;例如:REVOKE SELECT ON TABLE Student FROM U1 CASCADE;(三)數(shù)據(jù)庫(kù)角色1 創(chuàng)建角色CREATE ROLE <角色名>例如:CREATE ROLE R1;數(shù)據(jù)庫(kù)角色是被命名的一組與數(shù)據(jù)庫(kù)操作相關(guān)的權(quán)限,角色是權(quán)限集合2 給角色授權(quán) GRANT <權(quán)限>
46、 ,<權(quán)限> ON <對(duì)象類型> <對(duì)象名> ,<對(duì)象名> <對(duì)象名> TO <角色> ,<角色>; 例如:GRANT SELECT,UPDATE,INSERT ON TABLE Student TO R1;3 將一個(gè)角色授予其他角色或用戶GRANT <角色1> ,<角色2>TO <角色> ,<用戶> WITH ADMIN OPTIONWITH ADMIN OPTION 表示獲得某權(quán)限的角色或用戶還可以把這種權(quán)限再授予其他角色或用戶例如:GRANT R1 TO w
47、ang;4 角色權(quán)限回收REVOKE <權(quán)限> , <權(quán)限>ON <對(duì)象類型> <對(duì)象名>,<對(duì)象名><對(duì)象名>FROM <角色> , <角色>例如:REVOKE R1 FROM wang;六 完整性約束命名子句完整性約束條件可以在CREATE TABLE語句中定義。SQL還在CREATE TABLE語句中提供了完整性約束命名子句CONSTRAINT,用來對(duì)完整性約束條件命名。1 創(chuàng)建完整性約束CONSTRAINT<完整性約束條件名>PRIMARY KEY 短語 | FOREIGN KE
48、Y短語| CHECK短語例如:CREATE TEBLE Student (Sno NUMERIC(6)CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND )Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3)CONSTRAINT C3 CHECK(Sage<30), Ssex CHAR(2)CONSTRAINT C4 CHECK (Ssex IN(男 , 女), CONSTRAINT StudentKey PRIMARY KEY (Sno));2 修改完整性約束 例如:ALTER TABLE Stud
49、ent DROP CONSTRAINT C4;ALTER TABLE StudentADD CONSTRAINT C5 CHECK (Sage<40);七 觸發(fā)器CREATE TRIGGER<觸發(fā)器名>BEFORE | AFTER <觸發(fā)事件>ON<表名> FOR EACH ROW| STATEMENTWHEN<觸發(fā)條件><觸發(fā)動(dòng)作體>第三章 關(guān)系數(shù)據(jù)庫(kù)理論一 關(guān)系模式(回顧)一個(gè)關(guān)系模式應(yīng)當(dāng)是一個(gè)五元組。 R(U,D,DOM,F(xiàn))R 為關(guān)系名U為組成該關(guān)系的屬性名集合D為屬性組U中屬性所來自的域DOM為屬性向域的映像集合F為屬
50、性間數(shù)據(jù)的依賴關(guān)系集合由于D和DOM對(duì)模式設(shè)計(jì)關(guān)系不大,因此我們?cè)诒菊轮邪殃P(guān)系模式看作是一個(gè)三元組:R<U,F> 當(dāng)且僅當(dāng)U上的一個(gè)關(guān)系r滿足F時(shí),稱r為關(guān)系模式R<U,F>的一個(gè)關(guān)系。 二 數(shù)據(jù)依賴數(shù)據(jù)依賴是一個(gè)關(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)是屬性集U上的關(guān)系模式。X,Y是U的子集。若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴于X,記作XY。下面介紹一些術(shù)語和記號(hào):XY,但YÍX,則稱XY為平凡的函數(shù)依賴。否則,稱XY為非平凡的函數(shù)依賴。今后,若不特別聲明,我們總是討論非平凡的函數(shù)依賴。若XY
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 繆含2025年度離婚協(xié)議書及房產(chǎn)分割細(xì)則4篇
- 全新2025年度教育信息化建設(shè)合同
- 2025版信托投資公司外匯資產(chǎn)托管服務(wù)合同3篇
- 二零二五年度中美教育機(jī)構(gòu)合作項(xiàng)目風(fēng)險(xiǎn)評(píng)估與管理合同3篇
- 二零二五版美縫施工與環(huán)保驗(yàn)收合同4篇
- 水庫(kù)工程質(zhì)量檢測(cè)與監(jiān)控2025年度承包合同2篇
- 2025新生入學(xué)法律協(xié)議書(教育保障與未來規(guī)劃)3篇
- 二零二五年度定制門窗品牌代理銷售合同規(guī)范4篇
- 2025版農(nóng)田挖掘機(jī)操作工勞動(dòng)合同模板6篇
- 個(gè)人出租車承包合同(2024版)
- 2024年高純氮化鋁粉體項(xiàng)目可行性分析報(bào)告
- 安檢人員培訓(xùn)
- 危險(xiǎn)性較大分部分項(xiàng)工程及施工現(xiàn)場(chǎng)易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會(huì)四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識(shí)》備考題庫(kù)(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測(cè)卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營(yíng)銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國(guó)蛋糕行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
- 護(hù)理組長(zhǎng)年底述職報(bào)告
評(píng)論
0/150
提交評(píng)論