數(shù)據(jù)庫基礎(chǔ)知識個人整理版強烈推薦.docx_第1頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版強烈推薦.docx_第2頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版強烈推薦.docx_第3頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版強烈推薦.docx_第4頁
數(shù)據(jù)庫基礎(chǔ)知識個人整理版強烈推薦.docx_第5頁
免費預(yù)覽已結(jié)束,剩余27頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章 關(guān)系數(shù)據(jù)模型 .1數(shù)據(jù)模型(靜態(tài))的三要素 .1一關(guān)系數(shù)據(jù)結(jié)構(gòu) .1二關(guān)系操作 .2三關(guān)系完整性約束 .2四關(guān)系代數(shù) .2第二章 關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言 SQL .4一SQL 動詞表 .4二數(shù)據(jù)定義 .4三數(shù)據(jù)更新 .8四數(shù)據(jù)查詢 .9五授權(quán) .15六完整性約束命名子句 .17七觸發(fā)器 .17第三章 關(guān)系數(shù)據(jù)庫理論 .18一關(guān)系模式(回顧) .18二數(shù)據(jù)依賴 .18三規(guī)范化 .18第一章關(guān)系數(shù)據(jù)模型數(shù)據(jù)模型(靜態(tài))的三要素一關(guān)系數(shù)據(jù)結(jié)構(gòu)(一)基本概念包括:1 屬性 (Attribute) :實體所具有的某一特征。(如學(xué)生的特征是學(xué)號、姓名、- )域 (Domain) :屬性對應(yīng)的一組具有

2、相同數(shù)據(jù)類型的值的集合。每個屬性有一個域。模型限定域必須原子性1NF )2 鍵(key)(關(guān)系( 1)候選鍵( candidate key)關(guān)系的某一屬性或?qū)傩越M的值唯一標(biāo)識一個元組,而其任何真子集無此性質(zhì)。候選鍵的諸屬性稱為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性。( 2)主鍵( primary key)一個關(guān)系至少有一個侯選鍵,可以有幾個侯選鍵。一般從侯選鍵中選擇一個作為主鍵(primary key), 其他的稱為侯補鍵(alternate key)每個主鍵的值是不能相同的,( 3)外鍵( foreign key)如關(guān)系中的屬性或?qū)傩越M不是本關(guān)系的主鍵,而引用其他關(guān)系或本關(guān)系的主鍵,

3、則稱為本關(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)系模式通常簡記為:R(U )或 R( A1 , A2 ,A3 , , An )關(guān)系的三種基本類型基本表:是實際存在的表,它是實際存儲數(shù)據(jù)的邏輯表示。查詢表:是查詢結(jié)果對應(yīng)的表。視圖表:是由基本表或其他視圖導(dǎo)出的表,是虛表,不對應(yīng)實際存儲內(nèi)容。

4、二關(guān)系操作(一)兩種關(guān)系操作1 查詢( Query)查詢可以分為選擇 (SELECT) ,投影 (Project) ,連接 (Join) ,交 (Intersection) ,并 (Union) ,差 (Except) ,除 (Divide) ,笛卡爾乘積。其中選擇,投影,并,差,笛卡爾乘積是 5 種基本操作,其他的操作可用這些基本操作定義和導(dǎo)出2 插入 (Insert),刪除 (Delete) ,修改 (Update)(二)關(guān)系操作的特點集合式的操作方式,即操作的對象和結(jié)果都是集合。(三)關(guān)系數(shù)據(jù)語言可以分為三類1 關(guān)系代數(shù)語言2 關(guān)系演算語言(元組關(guān)系演算和域關(guān)系演算)3 具有關(guān)系代數(shù)和關(guān)

5、系演算雙重特點的語言(SQL 語言)三 關(guān)系完整性約束關(guān)系數(shù)據(jù)庫的數(shù)據(jù)必須遵循的約束實體完整性( Entity Integrity)參照完整性( Referential Integrity)用戶自定義完整性(User-Defined Integrity)實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為關(guān)系的兩個不變性。(一)實體完整性實體完整性規(guī)則:關(guān)系模式R 的主屬性值不可為空指所有主屬性均不可取空值,不僅僅是主鍵不可為空(二)參照完整性1 外鍵( Foreign Key )定義:設(shè)F 是基本關(guān)系R 的一個或一組屬性,但不是關(guān)系的碼,是基本關(guān)系的主碼。如果與相對應(yīng),則稱是的外

6、碼(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)空值(三)用戶自定義完整性針對某一具體數(shù)據(jù)的約束條件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的特殊語義由應(yīng)用環(huán)境決定四 關(guān)系代數(shù)關(guān)系代數(shù)按運算符的不同可分為傳統(tǒng)關(guān)系運算和專門關(guān)系運算(一)傳統(tǒng)關(guān)系運算

7、(交,并,差,笛卡爾乘積)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)系運算1 選擇( SELECT)(選擇符合條件的元組)()如:性別 =男( STUDENT )表的水平劃分2 投影( Project) (選擇符合條件的屬性 ) ()如:學(xué)號,姓名(STUDENT表的垂直劃分)3 連接操作( J

8、oin)笛卡爾乘積R S = |t R AND g S( 1)連接分為等值連接和自然連接連接操作:R| |S其中 A 和 B 分別為 R 和 S 上度數(shù)相等且具有可比性的屬性組A B 1)等值連接(為 =)R1.A1 R1.A2R1.A3 S.A2 S.A3如上例 R1| |S =b 2d2dR1.A2=S.A2b3b3bc2d2dd3b3b2) 自然連接(只有 | | )一般連接是從行的角度出發(fā)的,但自然連接還要取消重復(fù)的列,是從行和列的角度進行運算S.A2S.A3R1.A1 R1.A2R1.A3如 R1 | | S=b2dB3b4 除運算()R1.A1如 R1 S = b在 R1 上 b

9、印象集合是 ( 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ù)定義數(shù)據(jù)操縱數(shù)據(jù)控制CREATE ,DROP ,ALTERINSERT ,UPDATE , DELETEGRANT ,REVOKE二 數(shù)據(jù)定義操作對象操作方式創(chuàng)建刪除修改模式CREATE SCHEMADROP SCHEMA表CREATE TABLEDROP TABLEALTER TABLE視圖CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEX注意SQL 通

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

11、;( 1)CASCADE (級聯(lián))表示在刪除模式的同時把該模式中所有的數(shù)據(jù)庫對象全部一起刪除。( 2)RESTRICT(限制) 表示在刪除該模式中已經(jīng)定義了下屬數(shù)據(jù)庫對象 (表,視圖索引),則拒絕該刪除語句。(二)表的定義,刪除和修改1 表的定義CREATE TEBLA ( 列級完整性約束, 列級完整性約束 , )列定義的完整格式: DEFAULT NOT NULL CREATE TEBLA AS 列約束若要定義模式式下的表:CREATE TABLE .( 1)數(shù)據(jù)類型ANSI/ISOOracle字符型Char(n)Char(n)Character(n)Character Varying(n)

12、Varchar2(n)Char Varying(n)數(shù)值型NumericNumberDecimalIntegerIntFloatDoubleReal日期型DateDateTime( 2)完整性約束主鍵約束( Primary Key )實體完整性外鍵約束( Foreign Key )參照完整性檢查約束( Check)用戶自定義完整性唯一鍵約束( Unique )非空約束( Null | Not Null )默認(rèn)值( Defautl )( 3)例子CREATE TABLEstudent(Sno CHAR(8)PRIMARY KEY,Sname CHAR(20) UNIQUE ,Ssex CHAR(

13、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(9) ,Cno CHAR(4) ,Grade SMALLINT,PRIMARY KEY (Sno,Cno), / 注意一定要有括號FOREIGN KEY(Sno)REFERENCE

14、S Course(Cno) ,/sno 一定要有括號)( 4)說明1)列約束:在每個列后定義,可以有多個約束子句,不能定義多個列上的約束2)表約束:在全部列定義完成后定義,可以有多個約束子句,多個列上的約束必須使用表約束,單列上的約束可以用列約束,也可用表約束2 表的刪除DROP TABLE CASCADE | RESTRICT( 1)CASCADE (級聯(lián))刪除該表沒有任何限制,刪除表的同時,相關(guān)的依賴對象(如視圖)也一起刪除。( 2)RESTRICT (限制)刪除該表是有限制條件的。欲刪除的表不能被其他表的約束所引用 (如 CHECK,FOREIGN KEY等約束),不能有視圖,不能有觸發(fā)

15、器(trigger),不能存儲過程或函數(shù)。( 3)缺省情況下是RESTRICT3 表的修改ALTER TABLE ADD 完整性約束 |MODIFY 完整性約束 |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(三)視圖的

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

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

18、的定義CREATE UNIQUE | CLUSTER INDEXON(, )例如: CREATE UNIQUE INDEX SCno on SC(Sno ASC, Cno DESC);( 1)UNIQUE表明此索引的每一個索引值只對應(yīng)唯一的數(shù)據(jù)記錄( 2)CLUSTER 表示要建立的索引是聚簇索引。聚簇索引是指索引項的順序與表中的物理順序一致的索引組織,一個聚簇索引。( 3)次序可選ASC (升序)或DESC(降序)缺省值為ASC2 索引的刪除在一個表上只能建立DROP INDEX DROP INDEX SCno;三 數(shù)據(jù)更新(一)插入數(shù)據(jù)INSERT 插入數(shù)據(jù)通常有兩種形式,一種是插入一個元

19、組,另一種是插入子查詢結(jié)果。后者可以一次插入多個元組。1 插入一個元組INSERTINTOVALUES(常量(,)屬性列2 )例如INSERTINTOStudent (Sno, Sname, Ssex, Sdept, Sage)VALUES ( ,陳冬 , 男 , IS, 18);INTO語句中沒有出現(xiàn)的屬性列,新元組在這些列上將取空值或默認(rèn)值。在 INTO 子句中只指出了表名,沒有指出屬性名,新元組要在所有屬性列上都指定值,屬性列的次序與 CREATE TABLE 中的次序相同。2 插入子查詢結(jié)果INSERTINTO ( ,)子查詢;例如INSERTINTO Dept_age( Sdept

20、,Avg_age)SELECT Sdept ,A VG(Sage)FROM StudentGROUP BY Sdept;(二)修改數(shù)據(jù)UPDATE SET =,= WHERE ;例如: UPDATE StudentSET Sage=22WHERE Sno= 200215021;(三)刪除數(shù)據(jù)DELETEFROMWHERE ;例如: DELETEFROM StudentWHERE Sno= ;DELETE 語句刪除的是表中的數(shù)據(jù),而不是關(guān)于表的定義。四 數(shù)據(jù)查詢基本數(shù)據(jù)查詢的格式:SELECT ALL | DISTINCT 目標(biāo)列表達式FROM,WHEREGROUP BY HA VING 條件表

21、達式ORDER BY ASC|DESC ;AS別名 ,AS(一)單表查詢在一個表中查詢數(shù)據(jù)1* 查詢查詢?nèi)坑涗洠翰樵內(nèi)康膶W(xué)生信息SELECT*FROM Student ;* 表示所有列等同于SELECTs#, sname, age, sexFROM Student2 使用別名( AS 或空格)使用別名:查詢所有學(xué)生的學(xué)號和姓名SELECTs# AS 學(xué)號 , sname AS 姓名FROM Student如果別名包含空格,須使用雙引號SELECTs# AS “ Student Number ”FROM Student3 表達式查詢(三種表達式,字符串表達式,算術(shù)表達式,函數(shù)表達式)(1)字

22、符串表達式查詢所有學(xué)生的學(xué)號、姓名和出生年份,返回兩列信息,其中一列是 “學(xué)號:姓名 ”,另一列是出生年份SELECT s# | “:”| sname AS 學(xué)生 ,2003 age AS 出生年份 FROM Student 說明連接字符串| 表示則多個查詢列連接為一個列輸出。(2)算術(shù)表達式查詢學(xué)生的出生年份SELECT 2003 age AS 出生年份FROM Student ;(3)函數(shù)表達式SELECT sno, to_char(birth, mm-dd-yyyy ) AS birthday FROM Student SELECT Count(sno) As 學(xué)生人數(shù) FROM Stu

23、dent4 條件查詢( 1) WHERE 條件注:1)在 where 子句中使用列名和表達式,但不能使用別名。2)在 where 子句中使用數(shù)值時,既可以用單引號也可以不用單引號,使用日期值字符值時,都必須使用單引號,并且日期值的格式必須要符合數(shù)據(jù)庫中支持的日期格式,否則必須事先使用to_date 函數(shù)將其轉(zhuǎn)換成為數(shù)據(jù)庫中支持的日期格式。oracle 中日期的默認(rèn)格式為:01-1 月 -82在輸入查詢條件時,可以用to_date(1998-01-01,yyyy-mm-dd )3)在 SQL 語句中,命令不區(qū)分大小寫,但字符串區(qū)分大小寫WHERE 子句中的關(guān)系運算符:比較操作符: , =, =,

24、 =, 邏輯操作符: 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 :查詢姓名的第一個字母為R的學(xué)生SELECT * FROM Student WHERE sname LIKER% %:任意長度的字

25、符串_:單個字符(一個漢字占兩個字節(jié))注意: LIKE 只能用于字符串的匹配,不能用于其他類型。查詢姓名的第一個字母為R并且倒數(shù)第二個字母為S的學(xué)生SELECT * FROM Student WHERE sname LIKER%S_多個比較式可用NOT 、 AND 和 OR 連接SELECT * FROM StudentWHERE age IS NULL and sname LIKER%3)若要查詢通配符可以用轉(zhuǎn)義字符escape character 通常character用(2)去除重復(fù)記錄(DISTINCT)查詢學(xué)生的姓名SELECT Distinct sname FROM Student

26、DISTINCTt只對記錄有效,不針對某個特定列SELECT Distinct sname, age FROM Student( 3)排序查詢( ORDER BY )注:1) order by 只能對最終查詢結(jié)果進行排序,也就是說其只能放在查詢語句的最后一條。2)可以使用列的別名,列的位置進行排序。3)在大多數(shù)情況下,指定的排序列(order by 列名)都是選擇列(select 列名),但排序列也可以不是選擇列。但如果在 select 語句中使用了 distinct 關(guān)鍵字,則排序列必須是選擇列了。查詢所有學(xué)生信息并將結(jié)果按年齡升序排列SELECT * FROM Student ORDER

27、By age將結(jié)果按年齡升序排列,按姓名降序排列SELECT * FROM StudentORDER By age ASC , sname DESCASC 表示升序, DESC 表示降序( 4)聚集函數(shù)注:1)聚集函數(shù)和group by子句聯(lián)合使用,表示對每個組進行統(tǒng)計,否則將所有數(shù)據(jù)行當(dāng)成一個組進行統(tǒng)計。2)聚集函數(shù)只能出現(xiàn)在選擇列表、order by 子句、 having 子句中,而不能出現(xiàn)在where和 group by 子句中。3)除了 count( *)外,其他聚集函數(shù)都會忽略null 行。4)聚集函數(shù)中可以指定all 和 distinct 選項。其中 all 是默認(rèn)選項, 表示統(tǒng)計

28、所有的行(包括重復(fù)行),而 distinct 只統(tǒng)計不同的行。count( distinct sal )(DISTINCT | ALL)COUNT( 列名 ):對一列中的值計數(shù)COUNT(*) :計算記錄個數(shù)SUM( 列名 ):求一列值的總和(數(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_a

29、ge FROM student( 5)分組查詢( GROUP BY )1)基本格式group by 列名 1,列名 2having 條件 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 By ageHaving COUNT(*)

30、 5Having 子句中必須聚集函數(shù)的比較式,而且聚集函數(shù)的比較式也只能通過Having 子句給出Having 中的聚集函數(shù)可與SELECT 中的不同查詢?nèi)藬?shù)在 60 以上的各個班級的學(xué)生平均年齡SELECT class, AVG(age) FROM StudentGroup By classHaving COUNT(*) 60( 6)使用 rollup 和 cube 限定詞Rollup 用于生成橫向統(tǒng)計結(jié)果SQL select deptno,job,avg(sal),max(sal) from emp2 group by rollup(deptno,job);DEPTNO JOBAVG(SA

31、L)MAX(SAL)- - - -10 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000102916.66667500020 CLERK950110020 ANAL YST3000300020 MANAGER29752975202175300030 CLERK95095030 MANAGER2850285030 SALESMAN14001600301566.6666728502073.214295000Cube 用于生成縱向統(tǒng)計結(jié)果SQL select deptno,job,avg(sal),max(sal) from emp2group

32、by cube (deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)- - - -2073.214295000CLERK1037.51300ANAL YST30003000MANAGER2758.333332975SALESMAN14001600PRESIDENT50005000102916.66667500010 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000202175300020 CLERK950110020 ANAL YST3000300020 MANAGER29752975301566.66667285

33、030 CLERK95095030 MANAGER2850285030 SALESMAN14001600(二)連接查詢一個查詢同時涉及兩個以上的表,則稱之為連接查詢。SELECT ,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)等值連接

34、查詢學(xué)生的學(xué)號,姓名和所選課程號SELECT 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 自身連接給一個表定義兩個或多個不同的別名,就可以像使用這兩個別名進行連接查詢。SELECT FIRST.Cno, SECOND.CpnoFROM CourseFIRST , Course

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

36、立,子查詢語句不依賴父查詢中返回的任何記錄,可以獨立執(zhí)行查詢沒有選修課程的所有學(xué)生的學(xué)號和姓名SELECT s#,snameFROM studentWHERE s# NOT IN ( SELECT distinct s# FROM sc)子查詢返回選修了課程的學(xué)生學(xué)號集合,它與外層的查詢無依賴關(guān)系,可以單獨執(zhí)行無關(guān)子查詢一般與 IN 一起使用,用于返回一個值列表2 相關(guān)子查詢相關(guān)子查詢的結(jié)果依賴于父查詢的返回值查詢選修了課程的學(xué)生學(xué)號和姓名SELECT s#, snameFROM studentWHERE EXISTS (SELECT * FROM sc WHERE sc.s# = student.s#)相關(guān)子查詢不可單獨執(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#, coun

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論