數(shù)據(jù)庫基礎(chǔ)知識個人整理版-強(qiáng)烈推薦_第1頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版-強(qiáng)烈推薦_第2頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版-強(qiáng)烈推薦_第3頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版-強(qiáng)烈推薦_第4頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ù)類型的值的集合。每個屬性有一個域。模型限定域必須原子性1NF )(關(guān)系2 鍵(key)( 1)候選鍵( candidate key)關(guān)系的某一屬性或?qū)傩越M的值唯一標(biāo)識一個元組,而其任何真子集無此性質(zhì)。候選鍵的諸屬性稱為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性。( 2)主鍵( primary key)一個關(guān)系至少有一個侯選鍵,可以有幾個侯選鍵。一般從侯選鍵中

2、選擇一個作為主鍵(primary key), 其他的稱為侯補(bǔ)鍵(alternate key)每個主鍵的值是不能相同的,( 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)系的碼,是基本關(guān)系的主碼。如果與相對應(yīng),則稱是的外碼(Foreign Key )R稱為參照關(guān)系(Referential Relation ), S 稱為被參照關(guān)系(Referenced Relation)2 參照完整性規(guī)則若屬性(或?qū)傩越M)F 是基本關(guān)系R 的外碼,它與基本關(guān)系關(guān)系到 R 和 S 不一定是不同關(guān)系) ,則對于R 中每個元組在S 的主碼 KS 相對應(yīng)(基本F 上的值必須為:( 1)等于被參照關(guān)系 S 中所參照的

6、候選鍵的某個值( 2)空值(三)用戶自定義完整性針對某一具體數(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)算(交,并,差,笛卡爾乘積)1(并) R1 R2=b2db3bc2dd3ba3ce5fg662(交 AND)R1 R2= b 2 dc 2 d3(差)R1 R2= b 3 bd 3 b4 ( 笛卡爾乘積)R1 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 dd 3 b 3 b(二)專門關(guān)系運(yùn)算1

7、 選擇( SELECT)(選擇符合條件的元組)<選擇條件 >(<關(guān)系名 >)如:性別 =男( STUDENT )表的水平劃分2 投影( Project) (選擇符合條件的屬性 ) <屬性表 > (<關(guān)系名 >)如: 學(xué)號,姓名 (STUDENT )表的垂直劃分3 連接操作( Join)笛卡爾乘積R S = <t,g>|t R AND g S( 1)連接分為等值連接和自然連接連接操作:R| |S其中 A 和 B 分別為 R 和 S 上度數(shù)相等且具有可比性的屬性組A B 1)等值連接( 為 =)R1.A1 R1.A2R1.A3 S.A2

8、S.A3如上例 R1| |S =b 2d2dR1.A2=S.A2b3b3bc2d2dd3b3b2) 自然連接(只有| | )一般連接是從行的角度出發(fā)的,但自然連接還要取消重復(fù)的列,是從行和列的角度進(jìn)行運(yùn)算S.A2S.A3R1.A1 R1.A2R1.A3如 R1 | | S=b2dB3b4 除運(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)語言SQL一 SQL 動詞表SQL 功能動詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE ,DR

9、OP ,ALTER數(shù)據(jù)操縱INSERT ,UPDATE , DELETE數(shù)據(jù)控制GRANT ,REVOKE二 數(shù)據(jù)定義操作對象操作方式創(chuàng)建刪除修改模式CREATE SCHEMADROP SCHEMA表CREATE TABLEDROP TABLEALTER TABLE視圖CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEX注意SQL 通常不提供修改模式定義,修改視圖定義,修改索引定義的操作(一)模式的定義和刪除1 模式的定義CREATE SCHEMA < 模式名 >AUTORIZATION<用戶 >例如: CREATE SCHEMA“s

10、-t”AUTORIZATION wang;( 1)要創(chuàng)建模式, 調(diào)用該命令的用戶必須具有DBA 權(quán)限,或者獲得了DBA 授予的 CREATESCHEMA權(quán)限( 2)如果沒指定 <模式名 >那么 <模式名 >隱含為 <用戶名 >( 3)定義模式,實(shí)際上是定義了一個命名空間,在這個空間中可以進(jìn)一步定義該模式包含的數(shù)據(jù)庫對象,例如基本表,視圖,索引。2 模式的刪除DROP SCHEMA< 模式名 ><CASCADE | RESTRICT>(兩者必選其一)例如: DROP SCHEMA “s-t”CASCADE ;( 1)CASCADE (級

11、聯(lián))表示在刪除模式的同時把該模式中所有的數(shù)據(jù)庫對象全部一起刪除。( 2)RESTRICT(限制) 表示在刪除該模式中已經(jīng)定義了下屬數(shù)據(jù)庫對象(表,視圖索引),則拒絕該刪除語句。(二)表的定義,刪除和修改1 表的定義CREATE TEBLA< 表名 > (< 列名 > <數(shù)據(jù)類型 > 列級完整性約束, <列名 > <數(shù)據(jù)類型 > 列級完整性約束 , <表級完整性約束>)列定義的完整格式:<列名 > < 列類型 > DEFAULT < 默認(rèn)值 > NOT NULL <CREATE TE

12、BLA< 表名 > AS <SELECT查詢 >列約束>若要定義模式式下的表:CREATE TABLE <模式名 >.< 表名 >( 1)數(shù)據(jù)類型字符型數(shù)值型日期型ANSI/ISOChar(n)Character(n)Character Varying(n)Char Varying(n)NumericDecimalIntegerIntFloatDoubleRealDateTimeOracleChar(n)Varchar2(n)NumberDate( 2)完整性約束主鍵約束( Primary Key )外鍵約束( Foreign Key )檢

13、查約束( Check)唯一鍵約束(Unique )非空約束( Null | Not Null默認(rèn)值( Defautl )( 3)例子)實(shí)體完整性參照完整性用戶自定義完整性(CREATE TABLEstudentSno 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)REFERE

14、NCES Course(Cno) ,Ccredit SMALLINT,)CHECK (Ccredit >0)CREATE TABLE sc(Sno CHAR(9) ,Cno CHAR(4) ,Grade SMALLINT,PRIMARY KEY (Sno,Cno), / 注意一定要有括號FOREIGN KEY(Sno)REFERENCES Course(Cno) ,/sno 一定要有括號)( 4)說明1)列約束:在每個列后定義,可以有多個約束子句,不能定義多個列上的約束2)表約束:在全部列定義完成后定義,可以有多個約束子句,多個列上的約束必須使用表約束,單列上的約束可以用列約束,也可用表

15、約束2 表的刪除DROP TABLE < 表名 >CASCADE | RESTRICT( 1)CASCADE (級聯(lián))刪除該表沒有任何限制,刪除表的同時,相關(guān)的依賴對象(如視圖)也一起刪除。( 2)RESTRICT (限制)刪除該表是有限制條件的。欲刪除的表不能被其他表的約束所引用 (如 CHECK,FOREIGN KEY 等約束),不能有視圖,不能有觸發(fā)器( trigger),不能存儲過程或函數(shù)。( 3)缺省情況下是 RESTRICT3 表的修改ALTER TABLE < 表名 >ADD < 列名 ><數(shù)據(jù)類型 > 完整性約束 |MODIFY

16、< 列名 ><數(shù)據(jù)類型 > 完整性約束 |DROP COLUMN <列名 >ADD< 表約束 >|DROP CONSTRAINT <約束名 >例如( 1)ALTER TABLE Student( 2)Alter Table Student DROP COLUMN age ( 3)AlLTER TABLE Student MODIFYage number(3) NOT NULL( 4)ALTER TABLE Student( 5)ALTER TABLE SCDROP CONSTRAINT FK_SC(三)視圖的定義和刪除1 視圖的定義C

17、REATE VIEW < 視圖名 >(列名 1,列名 2, )/ 列名一定要放在括號里 AS <查詢 >WITH CHECK OPTION |WITH READ ONLY例如: CREATE VIEW cs_view (sno, name, age)AS SELECT s#, sname, ageFROM studentWHEREDept = 計(jì)算機(jī)系 WITH READ ONLY;( 1)WITH CHECK OPTION表示對視圖進(jìn)行UPTATE ,INSERT ,DELETE 操作時要保證更新,插入,刪除的行滿足視圖定義中的謂詞條件(即子查詢中的條件表達(dá)式)WIT

18、H READ ONLY 表示視圖是只讀的( 2)視圖的屬性列名只能是全部缺省或全部指定, 沒有別的選擇。但在下列兩種情況下必須明確指定組成視圖的列名。1)某個目標(biāo)列不是單純的屬性名,而是聚集函數(shù)或列表達(dá)式。2)多表連接時選出幾個同名列作為視圖的字段。( 3)子查詢可以是任意的 SELECT 子句,但通常不允許含有 OREER BY 子句各 DISDINCT 短語。( 4)不是所有視圖都是可更新的1)基于聯(lián)接查詢的視圖不可更新2)使用了函數(shù)的視圖不可更新3)使用了分組操作的視圖不可更新4)只有建立在單個表上而且沒有使用函數(shù)的視圖才是可更新的2 視圖的刪除DROP VIEW < 視圖名 &g

19、t; 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)的順序與表中的物理順序一致的索引組織,一個聚簇索引。( 3)次序可選ASC (升序)或DESC(降序

20、)缺省值為ASC2 索引的刪除在一個表上只能建立DROP INDEX <索引名 >DROP INDEX SCno;三 數(shù)據(jù)更新(一)插入數(shù)據(jù)INSERT 插入數(shù)據(jù)通常有兩種形式,一種是插入一個元組,另一種是插入子查詢結(jié)果。后者可以一次插入多個元組。1 插入一個元組INSERTINTO<表名 > ( < 屬性列 1 >,< 屬性列 2 >)VALUES(<常量 1 > ,< 常量 2 >)例如INSERTINTOStudent (Sno, Sname, Ssex, Sdept, Sage)VALUES ( 20081512,

21、陳冬 , 男 , IS, 18);INTO語句中沒有出現(xiàn)的屬性列,新元組在這些列上將取空值或默認(rèn)值。在 INTO 子句中只指出了表名,沒有指出屬性名,新元組要在所有屬性列上都指定值,屬性列的次序與 CREATE TABLE 中的次序相同。2 插入子查詢結(jié)果INSERTINTO<表名 > ( <屬性列1 >,<屬性列2 >)子查詢;例如INSERTINTO Dept_age( Sdept ,Avg_age)SELECT Sdept ,A VG(Sage)FROM StudentGROUP BY Sdept;(二)修改數(shù)據(jù)UPDATE < 表名 >S

22、ET < 列名 >=< 表達(dá)式 >,< 列名 >=< 表達(dá)式 > WHERE < 條件 >例如: UPDATE StudentSET Sage=22WHERE Sno= 200215021;(三)刪除數(shù)據(jù)DELETEFROM< 表名 >WHERE < 條件 >例如: DELETEFROM StudentWHERE Sno= 20021528;DELETE 語句刪除的是表中的數(shù)據(jù),而不是關(guān)于表的定義。四 數(shù)據(jù)查詢基本數(shù)據(jù)查詢的格式:SELECT ALL | DISTINCT <目標(biāo)列表達(dá)式FROM<名

23、或視圖名 >,< 表名或視圖名 >WHERE< 查詢表達(dá)式 >GROUP BY < 列名 1>HA VING< 條件表達(dá)式ORDER BY < 列名 2>ASC|DESC ;>AS< >別名 >,< 標(biāo)列表達(dá)式>AS< 別名 >(一)單表查詢在一個表中查詢數(shù)據(jù)1* 查詢查詢?nèi)坑涗洠翰樵內(nèi)康膶W(xué)生信息SELECT*FROM Student ;* 表示所有列等同于SELECTs#, sname, age, sexFROM Student2 使用別名( AS 或空格)使用別名:查詢所有學(xué)生的

24、學(xué)號和姓名SELECTs# AS學(xué)號 , sname AS 姓名FROM Student如果別名包含空格,須使用雙引號SELECTs# 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

25、2003 age AS 出生年份FROM Student ;(3)函數(shù)表達(dá)式SELECT sno, to_char(birth, mm-dd-yyyy ) AS birthday FROM Student SELECT Count(sno) As 學(xué)生人數(shù) FROM Student4 條件查詢( 1) WHERE 條件注:1)在 where 子句中使用列名和表達(dá)式,但不能使用別名。2)在 where 子句中使用數(shù)值時,既可以用單引號也可以不用單引號,使用日期值字符值時,都必須使用單引號,并且日期值的格式必須要符合數(shù)據(jù)庫中支持的日期格式,否則必須事先使用to_date 函數(shù)將其轉(zhuǎn)換成為數(shù)據(jù)庫中支

26、持的日期格式。oracle 中日期的默認(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

27、s# IN ( s001,s003,s006,s008)2) IS NOT NULL:查詢?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 LIKE R%S_多個比較式可用NOT 、 AND

28、和 OR 連接SELECT * FROM StudentWHERE age IS NULL and 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)可

29、以使用列的別名,列的位置進(jìn)行排序。3)在大多數(shù)情況下,指定的排序列(order 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)計(jì),

30、否則將所有數(shù)據(jù)行當(dāng)成一個組進(jìn)行統(tǒng)計(jì)。2)聚集函數(shù)只能出現(xiàn)在選擇列表、order by 子句、 having 子句中,而不能出現(xiàn)在和 group by 子句中。where3)除了 count( *)外,其他聚集函數(shù)都會忽略null 行。4)聚集函數(shù)中可以指定all 和 distinct 選項(xiàng)。其中 all 是默認(rèn)選項(xiàng), 表示統(tǒng)計(jì)所有的行(包括重復(fù)行),而 distinct 只統(tǒng)計(jì)不同的行。count( distinct sal )<FuctionName>(DISTINCT | ALL<列名 >)COUNT( 列名 ):對一列中的值計(jì)數(shù)COUNT(*) :計(jì)算記錄個數(shù)SU

31、M( 列名 ):求一列值的總和(數(shù)值)AVG ( 列名 ):求一列值的平均值MIN ( 列名 ):求一列值的最小值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,列名 2having 條件 ORDER by列名查詢男生和女生的平均年齡SELECT sex, AVG

32、(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 By ageHaving COUNT(*) > 5HavingHaving子句中必須聚集函數(shù)的比較式,而且聚集函數(shù)的比較式也只能通過中的聚集函數(shù)可與SELECT 中的不同Having子句給出查詢?nèi)藬?shù)在60 以上的各個班級的學(xué)生平均年齡SELECT

33、 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 emp2 group by rollup(deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)- - - -10 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000102916.66667500020 CLERK9

34、50110020 ANAL YST3000300020 MANAGER29752975202175300030 CLERK95095030 MANAGER2850285030 SALESMAN14001600301566.6666728502073.214295000Cube 用于生成縱向統(tǒng)計(jì)結(jié)果SQL> select deptno,job,avg(sal),max(sal) from emp2group by cube (deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)- - - -2073.214295000CLERK1037.51300ANAL YST3

35、0003000MANAGER2758.333332975SALESMAN14001600PRESIDENT50005000102916.66667500010 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000202175300020 CLERK950110020 ANAL YST3000300020 MANAGER29752975301566.66667285030 CLERK95095030 MANAGER2850285030 SALESMAN14001600(二)連接查詢一個查詢同時涉及兩個以上的表,則稱之為連接查詢。SELECT &l

36、t;表名 .列名 >,< 表名 .列名 >FROM<表名 >,< 表名 >WHERE< 查詢表達(dá)式 >1 等值連接和非等值連接注:在連接查詢中應(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é)號,姓名和所選課程號SEL

37、ECT student.s#, student.sname,sc.c#FROM student,scWHERE student.s# = sc.s# 聯(lián)接條件2)非等值連接SELECT SC.S# , Course.creditFROM SC,CourseWHERE SC.C# I IN Course.C#2 自然連接若在等值連接中把目標(biāo)列中重復(fù)的屬性列去掉則為自然連接3 自身連接給一個表定義兩個或多個不同的別名,就可以像使用這兩個別名進(jìn)行連接查詢。SELECT FIRST.Cno, SECOND.CpnoFROM CourseFIRST , Course SECONDWHERE FIRST.

38、Cpno=SECOND.Cno4 外連接查詢外連接分為左外連接和右外連接左外連接列出左邊關(guān)系中所有的元組右外連接列出右邊關(guān)系中所有的元組SELECT <表名 .列名 >,< 表名 .列名 >FROM<表名 >LEFT|RIGHT OUT JOIN USING<表名 > ON ( 連接條件)USING 去掉重復(fù)行5 復(fù)合條件查詢WHERE 子句中可以有多個連接條件,稱為復(fù)合條件連接。(三)嵌套查詢在 SQL 語言中, 一個 SELECT-FROM-WHERE 語句稱為一個查詢塊。 將一個查詢塊嵌套在另一個查詢塊的 WHERE 子句或 HA VING

39、 短語的條件中的查詢稱為嵌套查詢。1 無關(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 EXISTS (SE

40、LECT * 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#)

41、 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 age<20 )UNION( SELECT s#FROM (SELECT s#, A VG(score)FROM SCgroup by s#having avg(score)>90)

42、 SC2)UNION 操作自動去除重復(fù)記錄UNION All操作不去除重復(fù)記錄2 Minus查詢未選修課程的學(xué)生學(xué)號(SELECT s# FROM Student ) Minus(SELECT distinct s# FROM SC )3 Intersect返回兩個查詢結(jié)果的交集查詢課程平均成績在 90 分以上并且年齡小于 20 的學(xué)生學(xué)號( SELECT s# FROM student WHERE age<20 )Intersect( SELECT s#FROM (SELECT s#, A VG(score)FROM SCgroup by s#having avg(score)>

43、90) 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不可以不可以可以可以CONNECT不可以不可以不可以可以但必須擁有相應(yīng)權(quán)限(二)授權(quán)和回收關(guān)系數(shù)據(jù)庫系統(tǒng)中的存取權(quán)限對 象 類對象操作類型(權(quán)限)型數(shù)據(jù)庫模式CREATE SCHEMA基本表CREATE TA

44、BEL ,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)限 > ,< 權(quán)限 >ON < 對象類型 > < 對象名 > ,< 對象名 > <對象名 >TO <用戶 > ,< 用戶 >

45、;WITH GRANT OPTION ;例如: GRANT SELECTON TABLE StudentTO U1WITH GRANT OPTION( 1) WITH GRANT OPTION 表示獲得某種權(quán)限后的用戶,還可以把這種權(quán)限授予其他用戶。如果沒有此句,則不能傳播該權(quán)限( 2)用戶可以是 PUBLIC 即全體用戶2 回收REVOKE < 權(quán)限 > , < 權(quán)限 >ON < 對象類型 > <對象名 >,< 對象名 ><對象名 >FROM < 用戶 > , <用戶> CASCADE | RES

46、TRICT;例如: REVOKE SELECTON TABLE StudentFROM U1CASCADE ;(三)數(shù)據(jù)庫角色1 創(chuàng)建角色CREATE ROLE < 角色名 >例如: CREATE ROLE R1 ;數(shù)據(jù)庫角色是被命名的一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限,角色是權(quán)限集合2 給角色授權(quán)GRANT < 權(quán)限 > ,< 權(quán)限 >ON < 對象類型 > <對象名 > ,< 對象名 > <對象名 >TO <角色 > ,< 角色 >;例如: GRANT SELECT ,UPDA TE , I

47、NSERTON TABLE StudentTO R1;3 將一個角色授予其他角色或用戶GRANT < 角色 1> ,< 角色 2>TO <角色> ,<用戶> WITHADMIN OPTIONWITH ADMIN OPTION 表示獲得某權(quán)限的角色或用戶還可以把這種權(quán)限再授予其他角色或用戶例如: GRANT R1TO wang;4 角色權(quán)限回收REVOKE < 權(quán)限 > , < 權(quán)限 >ON < 對象類型 > <對象名 >,< 對象名 ><對象名 >FROM < 角色 > , < 角色 >例如: REVOKE R1FROM wang;六 完整性約束命名子句完整性約束條件可以在 CREATE TABLE 語句中定義。 SQL 還在 CREATE TABLE 語句中提供了完整性約束命名

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論