毛片在线视频观看,一级日韩免费大片,在线网站黄色,澳门在线高清一级毛片

薈聚奇文、博采眾長、見賢思齊
當(dāng)前位置:公文素材庫 > 計劃總結(jié) > 工作總結(jié) > 數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦

數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦

網(wǎng)站:公文素材庫 | 時間:2019-05-29 07:08:36 | 移動端:數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦

數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦

第一章緒論

1.基本概念

(1)數(shù)據(jù)庫;(2)數(shù)據(jù)庫管理系統(tǒng);(3)數(shù)據(jù)庫系統(tǒng);(4)實體;(5)屬性;(6)碼;(7)域;(8)實體型;(9)實體集;(10)聯(lián)系(1:1)(1:n)(m:n)(11)現(xiàn)實世界、觀念世界(信息世界)、數(shù)據(jù)世界

2.數(shù)據(jù)管理技術(shù)的發(fā)展階段

人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段和高級數(shù)據(jù)庫技術(shù)階段等各階段的特點。3.數(shù)據(jù)庫系統(tǒng)的特點(1)數(shù)據(jù)結(jié)構(gòu)化

(2)共享性高,冗余度低,易擴充(3)獨立性高

(4)由DBMS統(tǒng)一管理和控制4.DBMS的數(shù)據(jù)控制功能(1)數(shù)據(jù)的安全性保護(2)數(shù)據(jù)的完整性檢查(3)并發(fā)控制(4)數(shù)據(jù)庫恢復(fù)5.數(shù)據(jù)模型的組成要素

數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、數(shù)據(jù)的約束條件6.最常用的數(shù)據(jù)模型

層次、網(wǎng)狀、關(guān)系、面向?qū)ο竽P?.關(guān)系模型

關(guān)系:一張表元組:表中的一行屬性:表中的一列

主碼:表中的某個屬性組,它可以唯一確定一個元組域:屬性的取值范圍

分量:元組中的一個屬性值關(guān)系模式:對關(guān)系的描述。

表示為:關(guān)系名(屬性1,屬性2,…屬性n)8.關(guān)系數(shù)據(jù)模型優(yōu)缺點

(1)建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)之上(2)概念單一

(3)存取路徑對用戶透明9.數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)內(nèi)模式、外模式、模式二級映射

10.數(shù)據(jù)庫系統(tǒng)的組成本章重要概念

(1)DB、DBMS和DBS的定義(2)數(shù)據(jù)管理技術(shù)的發(fā)展階段人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段和高級數(shù)據(jù)庫技術(shù)階段等各階段的特點。(3)數(shù)據(jù)描述概念設(shè)計、邏輯設(shè)計和物理設(shè)計等各階段中數(shù)據(jù)描述的術(shù)語,概念設(shè)計中實體間二元聯(lián)系的描述(1:1,1:N,M:N)。(4)數(shù)據(jù)模型數(shù)據(jù)模型的定義,兩類數(shù)據(jù)模型,邏輯模型的形式定義,ER模型,層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P偷臄?shù)據(jù)結(jié)構(gòu)以及聯(lián)系的實現(xiàn)方式。(5)DB的體系結(jié)構(gòu)三級結(jié)構(gòu),兩級映象,兩級數(shù)據(jù)獨立性,體系結(jié)構(gòu)各個層次中記錄的聯(lián)系。(6)DBMS(數(shù)據(jù)庫管理系統(tǒng))DBMS的工作模式、主要功能和模塊組成。

(7)DBS(數(shù)據(jù)庫系統(tǒng))DBS的組成,DBA,DBS的全局結(jié)構(gòu),DBS結(jié)構(gòu)的分類。

第二章關(guān)系數(shù)據(jù)庫

1.基本概念

關(guān)系,候選碼,主碼,主屬性,非主屬性,鍵2.完整性約束

實體完整性、參照完整性、用戶定義完整性3.笛卡兒積4.關(guān)系的性質(zhì)

列是同質(zhì)的

不同的列可出自同一個域,每一列為一個屬性,不同的屬性要有不同的屬性

列的順序無所謂

任意兩個元組不能完全相同行的順序無所謂

分量必須取原子值,即每一個分量必須是不可分的數(shù)據(jù)項

5.關(guān)系的完整性

實體完整性、參照完整性、用戶定義的完整性6.關(guān)系代數(shù)

(1)并、交、差、廣義笛卡兒積(2)選擇(3)投影

(4)連接:等值連接、自然連接

超鍵(SuperKey):在關(guān)系中能惟一標(biāo)識元組的屬性集稱為關(guān)系模式的超鍵。

候選鍵(CandidateKey):不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再刪除屬性,就不是鍵了。

主鍵:(PrimaryKey):用戶選作元組標(biāo)識的一個侯選鍵稱為主鍵。一般,如不加說明,則鍵是指主鍵。

外鍵:(ForeignKey):如果關(guān)系R中屬性K是其他模式的主鍵,那么K在模式R中稱為外鍵

例如:學(xué)生(學(xué)號,姓名,性別,駕駛證號)假定學(xué)生不重名超鍵:(學(xué)號,姓名),(學(xué)號,性別),(學(xué)號,姓名,性別),(姓名,性別)等等候選鍵:學(xué)號,姓名

主鍵:你在數(shù)據(jù)庫定義的時候,如果選擇學(xué)號作為鍵,那么學(xué)號就是候選鍵外鍵:駕駛證號本章的重要概念(1)基本概念關(guān)系模型,關(guān)鍵鍵(主鍵和外鍵),關(guān)系的定義和性質(zhì),三類完整性規(guī)則,ER模型到關(guān)系模型的轉(zhuǎn)換規(guī)則。(2)關(guān)系代數(shù)五個基本操作,四個組合操作,七個擴充操作。

第三章SQL語言

1.SQL的特點

綜合統(tǒng)一

高度非過程化

面向集合的操作方式

以同一種語法結(jié)構(gòu)提供兩種使用方式語言簡潔,易學(xué)易用

2.表

(1)創(chuàng)建表createtablecreatetablestudent(Snochar(5)notnull,Snamechar(20)unique,Ssexchar(1),Sageint,

Sdeptchar(15));(2)createtablecustomer(

customer_namechar(20)notnull,customer_streetchar(30),customer_citychar(30),

primarykey(customer_name));(3)createtableaccount(

account_numberchar(10)notnull,branch_namechar(15),balanceint,

primarykey(account_number),

foreignkey(branch_name)referencebranch(branch_name),check(balance>=0));(2)修改表altertable(3)刪除表droptable3.索引

(1)創(chuàng)建索引createindex(2)刪除dropindex4.查詢select(1)格式

(2)單表查詢:選擇列、滿足條件、排序、分組、集函數(shù)(3)連接查詢(4)嵌套查詢IN、比較、(ANY或ALL)、EXISTS(5)集合查詢

5.更新數(shù)據(jù)INSERT、UPDATE、DELETE6.視圖(1)建立視圖Createview(2)視圖的作用7.數(shù)據(jù)控制

(1)授權(quán)Grant

(2)收回權(quán)限Revoke本章的重要概念

(1)SQL數(shù)據(jù)庫的體系結(jié)構(gòu),SQL的組成。

(2)SQL的數(shù)據(jù)定義:SQL模式、基本表和索引的創(chuàng)建和撤銷。

(3)SQL的數(shù)據(jù)查詢;SELECT語句的句法,SELECT語句的三種形式及各種限定,基本表的聯(lián)接操作,SQL中的遞歸查詢。

(4)SQL的數(shù)據(jù)更新:插入、刪除和修改語句。(5)視圖的創(chuàng)建和撤銷,對視圖更新操作的限制。

(6)嵌入式SQL:預(yù)處理方式,使用規(guī)定,使用技術(shù),卷游標(biāo),動態(tài)SQL語句。

第四章關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計

1.函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞依賴2.1NF、2NF、3NF、BCNF模式的分解

關(guān)系模式的分解需要遵循兩個主要原則:

1.滿足無損連接分解的要求。

2.既要滿足無損連接分解的要求,又要滿足保持函數(shù)依賴無損分解的測試方法

算法4.3無損分解的測試的算法:如何判斷是否是無損分解構(gòu)造一張k行n列的表格,每列對應(yīng)一個屬性Aj(1≤j≤n),每行對應(yīng)一個模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列處填上符號aj,否則填上bij。

把表格看成模式R的一個關(guān)系,反復(fù)檢查F中每個FD在表格中是否成立,若不成立,則修改表格中的值。修改方法如下:對于F中一個FDX→Y,如果表格中有兩行在X值上相等,在Y值上不相等,那么把這兩行在Y值上也改成相等的值。如果Y值中有一個是aj,那么另一個也改成aj;如果沒有aj,那么用其中一個bij替換另一個值(盡量把下標(biāo)ij改成較小的數(shù))。一直到表格不能修改為止。(這個過程稱為chase過程)

若修改的最后一張表格中有一行是全a,即a1a2…an,那么稱ρ相對于F是無損分解,否則稱損失分解。無損分解的測試方法第一范式(1NF)1NF的定義如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R∈1NF即不能以集合、序列等作為屬性值。第一范式是對關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫但是滿足第一范式的關(guān)系模式并不一定是一個好的關(guān)系模式第二范式(2NF)

(回顧)定義4.14對于FDW→A,如果存在XW有X→A成立,那么稱W→A是局部依賴(A局部依賴于W);否則稱W→A是完全依賴。完全依賴也稱為“左部不可約依賴”。(回顧)定義4.15如果A是關(guān)系模式R的候選鍵中屬性,那么稱A是R的主屬性;否則稱A是R的非主屬性。

定義4.16如果關(guān)系模式R是1NF,且每個非主屬性完全函數(shù)依賴于候選鍵,那么稱R是第二范式(2NF)的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是2NF,則稱數(shù)據(jù)庫模式為2NF的數(shù)據(jù)庫模式。第三范式(3NF)

(回顧)定義4.17如果X→Y,Y→A,且Y→X和A∈Y,那么稱X→A是傳遞依賴(A傳遞依賴于X)。

定義4.18如果關(guān)系模式R是1NF,且每個非主屬性都不傳遞依賴于R的候選鍵,那么稱R是第三范式(3NF)的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是3NF,則稱其為3NF的數(shù)據(jù)庫模式。

將2NF的關(guān)系模式規(guī)范化為3NF的關(guān)系模式,其方法是消除2NF的關(guān)系

模式中非鍵屬性對鍵的傳遞依賴。

本章重要概念

(1)關(guān)系模式的冗余和異常問題。

(2)FD的定義、邏輯蘊涵、閉包、推理規(guī)則、與關(guān)鍵碼的聯(lián)系;平凡的FD;屬性集的閉包;推理規(guī)則的正確性和完備性;FD集的等價。

(3)無損分解的定義、性質(zhì)、測試;保持依賴集的分解。

(4)關(guān)系模式的范式:1NF,2NF,3NF,BCNF。分解成2NF、3NF模式集的算法。

第五章數(shù)據(jù)庫設(shè)計

1.數(shù)據(jù)庫設(shè)計的六個階段

需求分析、概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計物理結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫實施、數(shù)據(jù)庫運行和維護2.需求分析:

數(shù)據(jù)字典:數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和處理過程3.概念結(jié)構(gòu)設(shè)計

(1)是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵,它通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于具體DBMS的概念模型(2)E-R圖:基本表示方法4.邏輯結(jié)構(gòu)設(shè)計

是將概念結(jié)構(gòu)轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型,并對其進行優(yōu)化5.物理設(shè)計

(1)為邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)和存取方法)6.實施階段

設(shè)計人員運用DBMS提供的數(shù)據(jù)語言及其宿主語言,建立數(shù)據(jù)庫,編制與調(diào)試程序,組織數(shù)據(jù)入庫,并進行試運行7.運行和維護階段

數(shù)據(jù)庫應(yīng)用系統(tǒng)經(jīng)過試運行后即可投入正式運行。重構(gòu),重組織本章重要概念

(1)DBS生存期及其7個階段的任務(wù)和工作,DBD過程的輸入和輸出。(2)概念設(shè)計的重要性、主要步驟。邏輯設(shè)計階段的主要步驟。

(3)ER模型的基本元素,屬性的分類,聯(lián)系的元數(shù)、連通詞、基數(shù)。采用ER方法的概念設(shè)計步驟。

(4)ER模型到關(guān)系模型的轉(zhuǎn)換規(guī)則。采用ER方法的邏輯設(shè)計步驟。(5)ER模型的擴充:弱實體,超類和子類。

第七章系統(tǒng)實現(xiàn)技術(shù)

1.事務(wù)(1)概念

(2)特性:原子性、一致性、隔離性、持續(xù)性2.故障種類事務(wù)

內(nèi)部的故障、系統(tǒng)故障、介質(zhì)故障3.恢復(fù)的實現(xiàn)技術(shù)

(1)數(shù)據(jù)轉(zhuǎn)儲:轉(zhuǎn)儲狀態(tài)、轉(zhuǎn)儲方式

(2)日志:基本格式和內(nèi)容、日志的作用、登記日志文件并發(fā)控制

1.問題:丟失修改、不可重復(fù)讀、讀“臟”數(shù)據(jù)2.封鎖共享鎖、排它鎖3.一級封鎖協(xié)議

(1)事務(wù)T在修改數(shù)據(jù)R之前必須先對其加X鎖,直到事務(wù)結(jié)束才釋放(2)解決的問題:防止丟失修改4.二級封鎖協(xié)議

(1)一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R前必須先對其加S鎖,讀完后即可釋放S鎖(2)解決的問題:防止丟失修改、防止讀“臟”數(shù)據(jù)5.三級封鎖協(xié)議

(1)一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R前必須先對其加S鎖,直到事務(wù)結(jié)束才釋放。(2)解決的問題:防止丟失修改、防止讀“臟”數(shù)據(jù)、防止不可重復(fù)讀6.活鎖和死鎖

(1)死鎖的預(yù)防:一次封鎖法,順序封鎖法(2)死鎖的診斷:超時法,等待圖法(3)死鎖的解除:選擇一個處理死鎖代價最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有鎖,使其它事務(wù)得以繼續(xù)進行下去。本章重要概念

事務(wù)的定義,COMMIT和ROLLBACK的語義,事務(wù)的ACID性質(zhì)

恢復(fù)的定義、基本原則和實現(xiàn)方法,故障的類型,檢查點技術(shù),REDO和UNDO操作,運行記錄優(yōu)先原則。

并發(fā)操作帶來的三個問題,X鎖、S鎖、活鎖、餓死和死鎖

完整性的定義,完整性子系統(tǒng)的功能,完整性規(guī)則的組成。SQL中的三大類完整性約束,SQL3中的觸發(fā)器技術(shù)。

安全性的定義、級別,權(quán)限,SQL中的安全性機制,幾種常用的安全性措施,自然環(huán)境的安全性。

擴展閱讀:數(shù)據(jù)庫中SQL查詢語句習(xí)題含的答案

查詢問題:設(shè)教學(xué)數(shù)據(jù)庫Education有三個關(guān)系:學(xué)生關(guān)系S(SNO,SNAME,AGE,SEX,SDEPT);

(3)檢索選修課程名為“DS”的學(xué)生學(xué)號與姓名學(xué)習(xí)關(guān)系SC(SNO,CNO,GRADE);課程關(guān)系C(CNO,CNAME,CDEPT,TNAME)

(1)檢索計算機系的全體學(xué)生的學(xué)號,姓名和性別;(2)檢索學(xué)習(xí)課程號為C2的學(xué)生學(xué)號與姓名;(3)檢索選修課程名為“DS”的學(xué)生學(xué)號與姓名;(4)檢索選修課程號為C2或C4的學(xué)生學(xué)號;(5)檢索至少選修課程號為C2和C4的學(xué)生學(xué)號;(6)檢索不學(xué)C2課的學(xué)生姓名和年齡;(7)檢索學(xué)習(xí)全部課程的學(xué)生姓名;

(8)查詢所學(xué)課程包含學(xué)生S3所學(xué)課程的學(xué)生學(xué)號。

(1)檢索計算機系的全體學(xué)生的學(xué)號,姓名和性別;SELECTSno,Sname,SexFROMS

WHERESdept=’CS’;

(2)檢索學(xué)習(xí)課程號為C2的學(xué)生學(xué)號與姓名;1.SELECTSno,SnameFROMS2.SELECTS.Sno,SnameWHERESnoINFROMS,SCWHERES.Sno=SC.Sno(SELECTSnoFROMSCANDSC.Cno=‘C2’;WHERECno=‘C2’)

本查詢涉及到學(xué)號、姓名和課程名三個屬性,分別

存放在S和C表中,但S和C表沒有直接聯(lián)系,必須通過SC表建立它們二者的聯(lián)系。C→SC→S基本思路:

(1)首先在C表中找出“DS”課程的課程號Cno;

(2)然后在SC表中找出Cno等于第一步給出的Cno集合中的某個元素Cno;

(3)最后在S關(guān)系中選出Sno等于第二步中Sno集合中某個元素的元組,取出Sno和Sname送入結(jié)果表列。

SELECTSno,SnameFROMS

WHERESnoIN(SELECTSnoFROMSC

WHERECnoIN(SELECTCnoFROMC

WHERECname=‘DS’));

(4)檢索選修課程號為C2或C4的學(xué)生學(xué)號;SELECTSnoFROMSC

WHERECno=‘C2’ORCno=‘C4’;

(5)檢索至少選修課程號為C2和C4的學(xué)生學(xué)號;SELECTSno

FROMSCX,SCY

WHEREX.Sno=Y.SnoANDX.Cno=‘C2’ANDY.Cno=‘C4’;

(6)檢索不學(xué)C2課的學(xué)生姓名和年齡;

1.SELECTSname2.SELECTSnameFROMSFROMSWHERESnoNOTINWHERENOTEXISTS(SELECTSno(SELECT*FROMSCFROMSCWHERECno=‘C2’);WHERESC.Sno=S.SnoANDCno=‘C2’);

(7)檢索學(xué)習(xí)全部課程的學(xué)生姓名;

在表S中找學(xué)生,要求這個學(xué)生學(xué)了全部課程。換言之,在S表中找學(xué)生,在C中不存在一門課程,這個學(xué)生沒有學(xué)。

SELECTSnameFROMS

WHERENOTEXISTS(SELECT*FROMC

WHERENOTEXISTS(SELECT*FROMSCWHERESC.Sno=S.SnoAND

SC.Cno=C.Cno));

(8)查詢所學(xué)課程包含學(xué)生S3所學(xué)課程的學(xué)生學(xué)號。分析:不存在這樣的課程Y,學(xué)生S3選了Y,而其他學(xué)生沒有選。

SELECTDISTINCTSnoFROMSCASXWHERENOTEXISTS(SELECT*

FROMSCASY

WHEREY.Sno=‘S3’ANDNOTEXISTS(SELECT*

FROMSCASZWHEREZ.Sno=X.SnoANDZ.Cno=Y.Cno));

設(shè)教學(xué)數(shù)據(jù)庫Education有三個關(guān)系:

學(xué)生關(guān)系S(SNO,SNAME,AGE,SEX,SDEPT);學(xué)習(xí)關(guān)系SC(SNO,CNO,GRADE);

課程關(guān)系C(CNO,CNAME,CDEPT,TNAME)

查詢問題:

1:查所有年齡在20歲以下的學(xué)生姓名及年齡。2:查考試成績有不及格的學(xué)生的學(xué)號

3:查所年齡在20至23歲之間的學(xué)生姓名、系別及年齡。

4:查計算機系、數(shù)學(xué)系、信息系的學(xué)生姓名、性別。5:查既不是計算機系、數(shù)學(xué)系、又不是信息系的學(xué)生姓名、性別

6:查所有姓“劉”的學(xué)生的姓名、學(xué)號和性別。7:查姓“上官”且全名為3個漢字的學(xué)生姓名。8:查所有不姓“張”的學(xué)生的姓名。9:查DB_Design課程的課程號。10:查缺考的學(xué)生的學(xué)號和課程號。11:查年齡為空值的學(xué)生的學(xué)號和姓名。12:查計算機系20歲以下的學(xué)生的學(xué)號和姓名。13:查計算機系、數(shù)學(xué)系、信息系的學(xué)生姓名、性別。14:查詢選修了C3課程的學(xué)生的學(xué)號和成績,其結(jié)果按分?jǐn)?shù)的降序排列。

15:查詢?nèi)w學(xué)生的情況,查詢結(jié)果按所在系升序排列,對同一系中的學(xué)生按年齡降序排列。16:查詢學(xué)生總?cè)藬?shù)。

17:查詢選修了課程的學(xué)生人數(shù)。18:計算選修了C1課程的學(xué)生平均成績。19:查詢學(xué)習(xí)C3課程的學(xué)生最高分?jǐn)?shù)。20:查詢各個課程號與相應(yīng)的選課人數(shù)。

21:查詢計算機系選修了3門以上課程的學(xué)生的學(xué)號。22:求基本表S中男同學(xué)的每一年齡組(超過50人)有多少人?要求查詢結(jié)果按人數(shù)升序排列,人數(shù)相同按年齡降序排列。

23:查詢每個學(xué)生及其選修課程的情況。

24:查詢選修了C2課程且成績在90分以上的所有學(xué)生。

25:查詢每個學(xué)生選修的課程名及其成績。26:統(tǒng)計每一年齡選修課程的學(xué)生人數(shù)。27:查詢選修了C2課程的學(xué)生姓名。

28:查詢與“張三”在同一個系學(xué)習(xí)的學(xué)生學(xué)號、姓名和系別。

29:查詢選修課程名為“數(shù)據(jù)庫”的學(xué)生學(xué)號和姓名。30:查詢與“張三”在同一個系學(xué)習(xí)的學(xué)生學(xué)號、姓名和系別。

31:查詢選修課程名為“數(shù)據(jù)庫”的學(xué)生學(xué)號和姓名。32:查詢選修了C2課程的學(xué)生姓名。33:查詢所有未選修C2課程的學(xué)生姓名。

34:查詢與“張三”在同一個系學(xué)習(xí)的學(xué)生學(xué)號、姓名和系別。

35:查詢選修了全部課程的學(xué)生姓名。

36:查詢所學(xué)課程包含學(xué)生S3所學(xué)課程的學(xué)生學(xué)號(1)比較

例1:查所有年齡在20歲以下的學(xué)生姓名及年齡。SELECTSname,Sage

FROMS

WHERESage=20)

例2:查考試成績有不及格的學(xué)生的學(xué)號SELECTDISTINCTSnoFROMSC

WHEREgradeFROMS

WHERESageBETWEEN20AND23;

(3)確定集合

例4:查計算機系、數(shù)學(xué)系、信息系的學(xué)生姓名、性別。SELECTSname,SsexFROMS

WHERESdeptIN(’CS’,‘IS’,‘MATH’);

例5:查既不是計算機系、數(shù)學(xué)系、又不是信息系的學(xué)生姓名、性別

SELECTSname,SsexFROMS

WHERESdeptNOTIN(’CS’,‘IS’,‘MATH’);

(4)字符匹配

例6:查所有姓“劉”的學(xué)生的姓名、學(xué)號和性別。SELECTSname,Sno,SsexFROMS

WHERESnameLIKE‘劉%’;

例7:查姓“上官”且全名為3個漢字的學(xué)生姓名。SELECTSnameFROMS

WHERESnameLIKE‘上官__’;

例8:查所有不姓“張”的學(xué)生的姓名。SELECTSname,Sno,SsexFROMS

WHERESnameNOTLIKE‘張%’;例9:查DB_Design課程的課程號。

SELECTCnoFROMC

WHERECnameLIKE‘DB\\_Design’ESCAPE‘\\’;

(5)涉及空值的查詢

例10:查缺考的學(xué)生的學(xué)號和課程號。

SELECTSno,Cno

FROMSC

WHEREGradeISNULL;(不能用=代替){有成績的WHEREGradeISNOTNULLL;}

例11:查年齡為空值的學(xué)生的學(xué)號和姓名。SELECTSno,SnameFROMS

WHERESageISNULL;(6)多重條件查詢

例12:查計算機系20歲以下的學(xué)生的學(xué)號和姓名。SELECTSno,SnameFROMS

WHERESdept=‘CS’ANDSage例16:查詢學(xué)生總?cè)藬?shù)。SELECTCOUNT(*)FROMS

例17:查詢選修了課程的學(xué)生人數(shù)。SELECTCOUNT(DISTINCTSno)FROMSC

例18:計算選修了C1課程的學(xué)生平均成績。SELECTAVG(Grade)FROMSC

WHERECno=‘C1’;

例19:查詢學(xué)習(xí)C3課程的學(xué)生最高分?jǐn)?shù)。SELECTMAX(Grade)FROMSC

WHERECno=‘C3’;

5、對查詢結(jié)果分組

例20:查詢各個課程號與相應(yīng)的選課人數(shù)。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;

該SELECT語句對SC表按Cno的取值進行分組,

所有具有相同Cno值的元組為一組,然后對每一組作用

聚合函數(shù)COUNT以求得該組的學(xué)生人數(shù)。

如果分組后還要求按一定的條件對這些組進行篩選,最終只輸出滿足指定條件組,則可以使用HAVING短

語指定篩選條件。

例21:查詢計算機系選修了3門以上課程的學(xué)生的學(xué)號。

SELECTSno

FROMSC

WHERESdept=‘CS’GROUPBYSno

HAVINGCOUNT(*)>3;

WHERE子句與HAVING短語的根本區(qū)別在于作用對象不同。WHERE子句作用于基本表或視圖,從中選擇滿足條件的元組。HAVING短語作用于組,從中選擇滿足條件的組。

例22:求基本表S中男同學(xué)的每一年齡組(超過50人)有多少人?要求查詢結(jié)果按人數(shù)升序排列,人數(shù)相同按年齡降序排列。

SELECTSage,COUNT(Sno)FROMSWHERESsex="M"GROUPBYSageHAVINGCOUNT(*)>50ORDERBY2,SageDESC;

二、多表查詢

1、聯(lián)接查詢

例23:查詢每個學(xué)生及其選修課程的情況。

SELECT

S.Sno,Sname,Sage,Ssex,Sdept,Cno,GradeFROMS,SC

WHERES.Sno=SC.Sno;例24:查詢選修了C2課程且成績在90分以上的所有學(xué)生。

SELECTS.Sno,SnameFROMS,SC

WHERES.Sno=SC.SnoANDSC.Cno=‘C2’ANDSC.Grade>90;

例25:查詢每個學(xué)生選修的課程名及其成績。SELECTS.Sno,Sname,Cname,SC.GradeFROMS,SC,C

WHERES.Sno=SC.SnoANDSC.Cno=C.Cno

例26:統(tǒng)計每一年齡選修課程的學(xué)生人數(shù)。SELECTSage,COUNT(DISTINCTS.Sno)FROMS,SC

WHERES.Sno=SC.SnoGROUPBYS;

由于要統(tǒng)計每一個年齡的學(xué)生人數(shù),因此要把滿足WHERE子句中條件的查詢結(jié)果按年齡分組,在每一組中的學(xué)生年齡相同。此時的SELECT子句應(yīng)對每一組分開進行操作,在每一組中,年齡只有一個值,統(tǒng)計的人數(shù)是這一組中的學(xué)生人數(shù)。1、嵌套查詢

(1)帶有IN謂詞的子查詢

指父查詢與子查詢之間用IN進行聯(lián)接,判斷某個屬性列值是否在子查詢的結(jié)果中。例27:查詢選修了C2課程的學(xué)生姓名。SELECTSnameFROMS

WHERESnoIN(SELECTSnoFROMSC

WHERECno=‘C2’);

例28:查詢與“張三”在同一個系學(xué)習(xí)的學(xué)生學(xué)號、姓名和系別。分析:

(1)確定“張三”所在的系;(2)查找所有在X系學(xué)習(xí)的學(xué)生。SELECTSdeptFROMS

WHERESname=‘張三’;

SELECTSno,Sname,SdeptFROMS

WHERESdept=‘X’

把第一步查詢嵌入到第二步查詢中,用以構(gòu)造第二步FROMSASS1,SASS2查詢的條件。

WHERES1.Sdept=S2.SdeptANDS2.Sname=‘張三’SELECTSno,Sname,SdeptFROMS

WHERESdeptIN(SELECTSdeptFROMS

WHERESname=‘張三’);

例29:查詢選修課程名為“數(shù)據(jù)庫”的學(xué)生學(xué)號和姓名。本查詢涉及到學(xué)號、姓名和課程名三個屬性,分別存放在S和C表中,但S和C表沒有直接聯(lián)系,必須通過SC表建立它們二者的聯(lián)系。C→SC→S基本思路:

(1)首先在C表中找出“DB”課程的課程號Cno;(2)然后在SC表中找出Cno等于第一步給出的Cno

集合中的某個元素Cno;

(3)最后在S關(guān)系中選出Sno等于第二步中Sno集合中某個元素的元組,取出Sno和Sname送入結(jié)果表列。

SELECTSno,SnameFROMS

WHERESnoIN

(SELECTSnoFROMSC

WHERECnoIN(SELECTCnoFROMCWHERECname=

‘DB’));聯(lián)接查詢方式

(2)帶有比較運算符的子查詢

例30:查詢與“張三”在同一個系學(xué)習(xí)的學(xué)生學(xué)號、姓名和系別。

SELECTSno,Sname,SdeptFROMS

WHERESdept=

(SELECTSdeptFROMS

WHERESname=‘張三’);

例31:查詢選修課程名為“數(shù)據(jù)庫”的學(xué)生學(xué)號和姓名。SELECTSno,SnameFROMS

WHERESnoIN

(SELECTSnoFROMSC

WHERECno=

(SELECTCnoFROMCWHERECname=

‘DB’));

(3)帶有EXISTS謂詞的子查詢

(1)帶有EXISTS謂詞的子查詢不返回任何實際數(shù)據(jù),它只產(chǎn)生邏輯值。

例32:查詢選修了C2課程的學(xué)生姓名。

1.SELECTSnameFROMS

WHERESnoIN(SELECTSnoFROMSC

WHERECno=‘C2’);2.SELECTSnameFROMS

WHEREEXISTS(SELECT*FROMSC

WHERESC.Sno=S.SnoANDCno=‘C2’);

例33:查詢所有未選修C2課程的學(xué)生姓名。SELECTSnameFROMS

WHERENOTEXISTS(SELECT*FROMSC

WHERESC.Sno=S.SnoANDCno=‘C2’);[NOT]EXISTS實際上是一種內(nèi)、外層互相關(guān)的嵌套查詢,只有當(dāng)內(nèi)層引用了外層的值,這種查詢才有意義。

例34:查詢與“張三”在同一個系學(xué)習(xí)的學(xué)生學(xué)號、姓名和系別。

SELECTSno,Sname,SdeptFROMSASS1WHEREEXISTS(SELECT*

FROMSASS2

WHERE

S2.Sdept=S1.

Sdept

ANDS2.Sname=‘張三’);相關(guān)子查詢

例35:查詢選修了全部課程的學(xué)生姓名。

在表S中找學(xué)生,要求這個學(xué)生學(xué)了全部課程。換言之,在S表中找學(xué)生,在C中不存在一門課程,這個學(xué)生沒有學(xué)。

SELECTSnameFROMS

WHERENOTEXISTS(SELECT*FROMC

WHERENOTEXISTS

(SELECT*FROMSCWHERESC.Sno=S.Sno

AND

SC.Cno=C.Cno));

例36:查詢所學(xué)課程包含學(xué)生S3所學(xué)課程的學(xué)生學(xué)號

分析:不存在這樣的課程Y,學(xué)生S3選了Y,而其他學(xué)生沒有選。

SELECTDISTINCTSnoFROMSCASXWHERENOTEXISTS(SELECT*FROMSCASY

WHEREY.Sno=‘S3’ANDNOTEXISTS

(SELECT*

FROMSCASZWHEREZ.Sno=X.Sno

AND

Z.Cno=Y.Cno));

友情提示:本文中關(guān)于《數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦》給出的范例僅供您參考拓展思維使用,數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦:該篇文章建議您自主創(chuàng)作。

來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


數(shù)據(jù)庫中SQL知識點重點章節(jié)總結(jié)與歸納很全的哦》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.seogis.com/gongwen/672245.html