數(shù)據(jù)庫(kù)原理及應(yīng)用-第4章-SQL語(yǔ)言_第1頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用-第4章-SQL語(yǔ)言_第2頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用-第4章-SQL語(yǔ)言_第3頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用-第4章-SQL語(yǔ)言_第4頁(yè)
數(shù)據(jù)庫(kù)原理及應(yīng)用-第4章-SQL語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)原理與應(yīng)數(shù)據(jù)庫(kù)原理與應(yīng)用用第第4 4章章 SQLSQL語(yǔ)言語(yǔ)言SQL( Structured Query Language)結(jié)構(gòu)化查詢語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言 已成為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言支持關(guān)系系統(tǒng)Oracle、Informix、Sybase、MS SQL、DB2、FoxPro、Access等SQL語(yǔ)言概述DDL(Data Definition Language)數(shù)據(jù)定義語(yǔ)言數(shù)據(jù)定義語(yǔ)言 主要定義數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu):基本表、視圖和索引。DML(Data Manipulation Language) 數(shù)據(jù)操縱語(yǔ)言數(shù)據(jù)操縱語(yǔ)言 查詢和更新(插入、刪除和修改) DCL (Data Control La

2、nguage)數(shù)據(jù)庫(kù)控制語(yǔ)言數(shù)據(jù)庫(kù)控制語(yǔ)言 授權(quán)、完整性規(guī)則的描述和事務(wù)控制。嵌入式嵌入式SQL 規(guī)定了SQL語(yǔ)句在宿主語(yǔ)言的程序中使用規(guī)則。SQL語(yǔ)言的組成1. 綜合統(tǒng)一查詢、操縱、定義、控制操作功能一體化語(yǔ)言風(fēng)格統(tǒng)一,數(shù)據(jù)操作符統(tǒng)一性2. 高度非過(guò)程化用戶只需提出“做什么”,而不必指明“怎么做”隱蔽數(shù)據(jù)存取路徑3. 面向集合的操作方式操作的對(duì)象和結(jié)果都是元組的集合(關(guān)系)SQL語(yǔ)言的特點(diǎn)4. 以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式自含式語(yǔ)言,DBMS中獨(dú)立使用,是針對(duì)DB的所有用戶 嵌入式語(yǔ)言,嵌入到宿主語(yǔ)言中使用,針對(duì)應(yīng)用程序員 兩種類型的語(yǔ)法結(jié)構(gòu)基本一致5. 語(yǔ)言簡(jiǎn)潔,易學(xué)易用類似于英語(yǔ)的自

3、然語(yǔ)言操作謂詞少(核心功能只用9個(gè)動(dòng)詞)SQL功能動(dòng)詞 數(shù)據(jù)查詢 數(shù)據(jù)定義 數(shù)據(jù)操縱 數(shù)據(jù)控制SELECTCREATE,DROP,ALTERINSERT,UPDATE,DELETEGRANT,REVOKESQL支持關(guān)系數(shù)據(jù)庫(kù)的三層模式基本表基本表T1視圖視圖V1基本表基本表T3基本表基本表T4存儲(chǔ)文件存儲(chǔ)文件1存儲(chǔ)文件存儲(chǔ)文件2基本表基本表T2視圖視圖V2SQL用戶用戶外模式外模式模式模式內(nèi)模式內(nèi)模式 基本表基本表(base table):數(shù)據(jù)庫(kù)中實(shí)際獨(dú)立存在的表(關(guān)系)存儲(chǔ)在實(shí)際的文件中 存儲(chǔ)文件存儲(chǔ)文件存儲(chǔ)基本表的數(shù)據(jù) 視圖(視圖(view)是一個(gè)虛擬表從基本表或其他視圖中導(dǎo)出的表沒(méi)有實(shí)際

4、的存儲(chǔ)位置數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù),數(shù)據(jù)仍然存放在導(dǎo)出視圖的基本表中Transact-SQL語(yǔ)言 結(jié)構(gòu)化查詢語(yǔ)言結(jié)構(gòu)化查詢語(yǔ)言SQL(Structured Query Language) SQL語(yǔ)言現(xiàn)在已成為關(guān)系型數(shù)據(jù)庫(kù)環(huán)境下的標(biāo)準(zhǔn)查詢語(yǔ)言。 Transact-SQL語(yǔ)言語(yǔ)言微軟公司在SQL標(biāo)準(zhǔn)的基礎(chǔ)上做了大幅度擴(kuò)充,并將SQL Server使用的SQL語(yǔ)言稱為T(mén)ransact-SQL語(yǔ)言語(yǔ)言。 Transact-SQL命令格式的約定在Transact-SQL語(yǔ)言的命令格式中, 括起來(lái)的內(nèi)容表示是可選的;,n表示重復(fù)前面的內(nèi)容;括起來(lái)表示在實(shí)際編寫(xiě)語(yǔ)句時(shí),用相應(yīng)的內(nèi)容替代

5、; 括起來(lái)表示是必選的;類似A|B的格式:表示A和B只能選擇一個(gè),不能同時(shí)都選。 系統(tǒng)數(shù)據(jù)類型系統(tǒng)數(shù)據(jù)類型 SQL Server預(yù)先定義好的,可以直接使用。數(shù)據(jù)類型1整型數(shù)據(jù)類型整型數(shù)據(jù)類型 int(integer):):4個(gè)字節(jié)個(gè)字節(jié)系統(tǒng)數(shù)據(jù)類型系統(tǒng)數(shù)據(jù)類型 SQL Server預(yù)先定義好的,可以直接使用。數(shù)據(jù)類型2 2字符數(shù)據(jù)類型字符數(shù)據(jù)類型用來(lái)存儲(chǔ)各種字母、數(shù)字符號(hào)和特殊符號(hào)。在使用時(shí)需要在其前后加上英文單引號(hào)或者雙引號(hào)。 (1)Char:占用1個(gè)字節(jié)。定義:charchar(n n) n的取值為18000。默認(rèn)n的值為1(2)Varchar:可以存儲(chǔ)長(zhǎng)達(dá)8000個(gè)字符的可變長(zhǎng)度字符串,

6、和char類型不同varchar類型根據(jù)輸入數(shù)據(jù)的實(shí)際長(zhǎng)度而變化。其定義形式為:varchar(n) 數(shù)據(jù)數(shù)據(jù)定義語(yǔ)言定義語(yǔ)言 DDLDDL(Data Definition Language)(Data Definition Language)DDL包括定義基本表、視圖和索引對(duì)象定義方式表 tabel create table視圖 viewcreate view索引 indexcreate index學(xué)生-課程數(shù)據(jù)庫(kù)Student(Sno,Sname,Ssex,Sage, Sphone)Course(Cno,Cname)SC(Sno,Cno,Grade)后續(xù)示例用到的數(shù)據(jù)庫(kù)模式語(yǔ)句格式:cre

7、ate tabel ( 列級(jí)完整性約束條件 , 列級(jí)完整性約束條件 , );數(shù)據(jù)數(shù)據(jù)定義語(yǔ)言定義語(yǔ)言 DDLDDL(Data Definition Language)(Data Definition Language)定義基本表:約束是SQL Server提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法 。約束約束 constraintconstraint主鍵約束主鍵約束 primary key主鍵能夠唯一地確定表中的每一條記錄,主鍵不能取空值。主鍵約束可以保證實(shí)體的完整性。 唯一性約束唯一性約束 unique唯一性約束用于指定一個(gè)或多個(gè)列的組合值具有唯一性,以防止在列中輸入重復(fù)的值。使用唯一性約束的字段

8、允許為空值允許為空值;一個(gè)表中可以允許有多個(gè)唯一性約束;可以把唯一性約束定義在多個(gè)字段上;約束是SQL Server提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法 。約束約束 constraintconstraint外鍵約束外鍵約束 references 外鍵約束主要用來(lái)維護(hù)兩個(gè)表之間數(shù)據(jù)的一致性。n外鍵約束提供了字段參照完整性;n外鍵從句中的字段數(shù)目和每個(gè)字段指定的數(shù)據(jù)類型都必須和REFERENCES從句中的字段相匹配;n參考同一表中的字段時(shí),必須只使用REFERENCES子句,不能使用外鍵子句;建立學(xué)生表student,由學(xué)號(hào)、姓名、性別、年齡、系別5個(gè)屬性組成.CREATE TABLE stude

9、nt (Sno char(8) primary key, Sname char(20) not null , Ssex char(1) default 男, Sage int check(Sage=0 and Sage =120), Sphone char(15) unique ) 語(yǔ)句格式ALTER TABLE ADD 完整性約束 DROP MODIFY 修改內(nèi)容增加新列和新的完整性約束條件(ADD子句) 刪除指定的完整性約束條件(DROP子句) 修改原有的列定義 ( MODIFY子句)修改基本表 ALTER TABLE查詢selectSELECT語(yǔ)句對(duì)基本表(關(guān)系)和視圖(虛表)進(jìn)行數(shù)據(jù)查

10、詢它不改變數(shù)據(jù)本身。查詢主要有:?jiǎn)伪聿樵冞B接查詢嵌套查詢集合查詢SELECT語(yǔ)句一般格式:SELECT ALL|DISTINCT ,FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESCSELECT 指明要檢索的數(shù)據(jù)的列 FROM指明從哪(幾)個(gè)表中進(jìn)行檢索 WHERE指明返回?cái)?shù)據(jù)必須滿足的標(biāo)準(zhǔn) GROUP BY 指明返回的列數(shù)據(jù)通過(guò)某些條件來(lái)形成組 HAVING 指明返回的集合必須滿足的標(biāo)準(zhǔn),它必須與GROUP BY配合使用 ORDER BY 指明返回的行的排序規(guī)則 單表查詢1、選擇表中的若干列(投影)SELECT2、選擇表中的若干行(選?。¦HERE3

11、、對(duì)查詢結(jié)果排序 ORDER BY4、集函數(shù)查詢5、對(duì)查詢結(jié)果分組 GROUP BY選擇表中的若干列1)查詢指定的列1. 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名 SELECT Sno, Sname FROM Student2. 查詢學(xué)生姓名、學(xué)號(hào)和性別 SELECT Sname, Sno, Ssex FROM Student 2)查詢?nèi)苛?. 查詢?nèi)w學(xué)生的詳細(xì)記錄 SELECT * FROM Student 2. 顯示指定字段輸出次序SELECT Sno, Sphone, Sname, Sage, Ssex FROM Student3)查詢經(jīng)過(guò)計(jì)算的值1. 查詢?nèi)w學(xué)生的姓名及其出生年份 SELECT

12、Sname,2012-Sage FROM Student4)列標(biāo)題使用別名1.查詢?nèi)w學(xué)生的姓名、出生年份,并使用別名 SELECT Sname Name, 2012-Sage AS Birthday FROM Student1)消除重復(fù)的行:DISTINCT1. 查詢所有選修過(guò)課的學(xué)生的學(xué)號(hào) SELECT Sno FROM SC 等價(jià)于: SELECT ALL Sno FROM SC結(jié)果中保留了重復(fù)的行 SELECT DISTINCT Sno FROM SC結(jié)果中消除了重復(fù)的行選擇表中的若干行2)查詢滿足條件的元組通過(guò)WHERE子句實(shí)現(xiàn)常用的查詢條件查詢條件謂 詞比較=, , =, =, !

13、=, , !, !, NOT+上述比較符確定范圍BETWEEN AND, NOT BETWEEN AND確定集合IN, NOT IN字符匹配LIKE,NOT LIKE空值IS NULL, IS NOT NULL多重條件AND,OR(1)比較大?。罕容^運(yùn)算符1. 查詢計(jì)算機(jī)系全體學(xué)生的名單SELECT Sname FROM Student WHERE Sdept=CS2. 查詢年齡小于20歲學(xué)生SELECT * FROM Student WHERE Sage=203. 查詢考試成績(jī)不及格學(xué)生的學(xué)號(hào)SELECT DISTINCT Sno FROM SC WHERE Grade=60 AND Gra

14、de=752. 查詢成績(jī)不在60至75之間的學(xué)生SELECT * FROM SC WHERE Grade NOT BETWEEN 60 AND 75(3)確定集合(NOT)IN1. 查詢選修了課程C1或C2或C3的學(xué)號(hào)SELECT DISTINCT Sno FROM SC WHERE Cno IN (C1,C2,C3)或:SELECT DISTINCT Sno FROM Sc WHERE Cno=C1 OR Cno=C2 OR Cno=C32. 查詢既不是計(jì)算機(jī)系,也不是數(shù)學(xué)系的學(xué)生SELECT * FROM Student WHERE Sdept NOT IN (CS,MA)(4)字符匹配(

15、模糊查詢)(NOT)LIKE語(yǔ)法格式: NOT LIKE ESCAPE含義:查詢指定的屬性列值與相匹配的元組。 通配符 :%(百分號(hào)):代表任意長(zhǎng)度的字符串 _(下劃線):代表任意單個(gè)字符ESCAPE短語(yǔ),對(duì)通配符進(jìn)行轉(zhuǎn)義1. 查詢計(jì)算機(jī)系(CS)的學(xué)生SELECT * FROM Student WHERE Sdept LIKE CS或:SELECT * FROM Student WHERE Sdept = CS2. 查詢姓趙的學(xué)生姓名、學(xué)號(hào)和性別SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 趙%3. 查詢第二個(gè)字符為o的課程SELEC

16、T * FROM Course WHERE Cname LIKE _o%4. 查詢以DB_開(kāi)頭,且倒數(shù)第2個(gè)字符為i的課程SELECT * FROM Course WHERE Cname LIKE DB_%i_ ESCAPE (5)涉及空值的查詢:IS (NOT)NULL1. 查詢?nèi)鄙俪煽?jī)的學(xué)生學(xué)號(hào)和相應(yīng)課程號(hào) SELECT Sno, Cno FROM SC WHERE Grade IS NULL2. 查詢有成績(jī)的學(xué)生學(xué)號(hào)和相應(yīng)課程號(hào) SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL(6)多重條件查詢:AND/OR1. 查詢課程號(hào)為C2且成績(jī)高于8

17、5分以上的學(xué)生SELECT * FROM SC WHERE Cno=C2 ANDGrade852. 查詢選修C1或C2且不低于70分的學(xué)生 SELECT * FROM SC WHERE (Cno=C1 OR Cno=C2) ANDGrade=70AND優(yōu)先級(jí)高于OR指定按照一個(gè)或多個(gè)屬性列的升序(ASC)或降序(DESC)重新排列查詢結(jié)果。1.查詢選修了C1的學(xué)生,成績(jī)按降序排列 SELECT * FROM SC WHERE Cno=C1 ORDER BY Grade DESC降序排列,成績(jī)?yōu)榭盏脑M最先顯示升序排列,成績(jī)?yōu)榭盏脑M最后顯示2. 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系升序排列,對(duì)同

18、一系中的學(xué)生按年齡降序排列 SELECT * FROM Student ORDER BY Sdept, Sage DESC對(duì)查詢結(jié)果排序 ORDER BYCOUNT (DISTINCT|ALL *)統(tǒng)計(jì)元組個(gè)數(shù),用DISTINCT消除重復(fù)行COUNT (DISTINCT|ALL ) 統(tǒng)計(jì)列值計(jì)個(gè)數(shù),用DISTINCT消除重復(fù)行SUM (DISTINCT|ALL ) 按列計(jì)算值的總和,對(duì)數(shù)值有效AVG (DISTINCT|ALL ) 按列計(jì)算平均值,對(duì)數(shù)值有效 MAX (DISTINCT|ALL )求一列值中最大值MIN (DISTINCT|ALL )求一列值中最小值 集函數(shù)查詢1. 求計(jì)算機(jī)系(CS)學(xué)生的平均年齡 SELECT AVG(Sage) FROM Student WHERE Sdept=CS2. 求95003學(xué)生的總分和平均分SELECT SUM(Grade), AVG(Grade)FROM SC WHERE Sno=950033. 求計(jì)算機(jī)系的學(xué)生總數(shù)SELECT COUNT(*) FROM Student WHERE Sdept=CS 或: SELECT COUNT(Sno) FROM Student WHERE Sdept=CS4. 查詢共有幾個(gè)系SELE

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論