SQL基本語句介紹課件_第1頁
SQL基本語句介紹課件_第2頁
SQL基本語句介紹課件_第3頁
SQL基本語句介紹課件_第4頁
SQL基本語句介紹課件_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

用戶從鍵盤上輸入一個(gè)大于10的偶數(shù),程序?qū)⑵浞纸鉃閮蓚€(gè)質(zhì)數(shù)之和,并顯示出分解的結(jié)果。關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL32022/12/17第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL3.1SQL概述3.2數(shù)據(jù)定義3.3查詢3.4數(shù)據(jù)更新3.5視圖3.6數(shù)據(jù)控制52022/12/17§3.1.1

SQL的特點(diǎn)綜合統(tǒng)一SQL語言集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL的功能于一體,可以完成數(shù)據(jù)庫生命周期中的全部活動。關(guān)系模型中實(shí)體和實(shí)體間的聯(lián)系都用關(guān)系來表示,使得操作符單一,每種操作只使用一個(gè)操作符。高度非過程化使用SQL語言,只需要提出“做什么”,而無需指明“怎么做”,無需了解存取路徑,提高了數(shù)據(jù)的獨(dú)立性面向集合的操作方式SQL語言采用集合操作方式,查詢、插入、刪除、修改操作的對象都是結(jié)合。62022/12/17§3.1.1

SQL的特點(diǎn)以同一種語法結(jié)構(gòu)提供兩種使用方式作為自含式語言提供聯(lián)機(jī)交互工具,在終端鍵盤上直接鍵入SQL命令對數(shù)據(jù)庫進(jìn)行操作,由DBMS來進(jìn)行解釋作為嵌入式語言,SQL語句能嵌入到高級語言程序中使應(yīng)用程序充分利用SQL訪問數(shù)據(jù)庫的能力、宿主語言的過程處理能力一般需要預(yù)編譯,將嵌入的SQL語句轉(zhuǎn)化為宿主語言編譯器能處理的語句72022/12/17§3.1.1

SQL的特點(diǎn)語言簡潔,易學(xué)易用,核心功能9個(gè)動詞82022/12/17§3.1.2

SQL語言的基本概念SQL語言支持關(guān)系數(shù)據(jù)庫三級模式102022/12/173.2數(shù)據(jù)定義3.2.1定義、刪除與修改基本表3.2.2建立與刪除索引122022/12/171.定義基本表[例1]建立一個(gè)“學(xué)生”表Student,它由學(xué)號Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成。其中學(xué)號不能為空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,

SnameCHAR(20)UNIQUE,

SsexCHAR(1),

SageINT,

SdeptCHAR(15));142022/12/171.定義基本表PRIMARYKEY通過主鍵可強(qiáng)制表的實(shí)體完整性;PRIMARYKEY約束中的列不能接受空值。當(dāng)為表指定PRIMARYKEY約束時(shí),SQLServer2000通過為主鍵列創(chuàng)建唯一索引強(qiáng)制數(shù)據(jù)的唯一性。當(dāng)在查詢中使用主鍵時(shí),該索引還可用來對數(shù)據(jù)進(jìn)行快速訪問UNIQUE可使用UNIQUE約束確保在非主鍵列中不輸入重復(fù)值。盡管UNIQUE約束和PRIMARYKEY約束都強(qiáng)制唯一性,但在強(qiáng)制下面的唯一性時(shí)應(yīng)使用UNIQUE約束:非主鍵的一列或列組合:一個(gè)表可以定義多個(gè)UNIQUE約束,而只能定義一個(gè)PRIMARYKEY約束。允許空值的列:允許空值的列上可以定義UNIQUE約束,而不能定義PRIMARYKEY約束。152022/12/171.定義基本表[例]建立一個(gè)“學(xué)生選課”表SC,它由學(xué)號Sno、課程號Cno,修課成績Grade組成,其中(Sno,Cno)為主碼CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,

Primarykey(Sno,Cno));162022/12/172.修改基本表ALTERTABLE<表名>[ADD<新列名><數(shù)據(jù)類型>[完整性約束]][DROP<完整性約束名>][MODIFY<列名><數(shù)據(jù)類型>];<表名>:要修改的基本表ADD子句:增加新列和新的完整性約束條件DROP子句:刪除指定的完整性約束條件MODIFY子句:用于修改列名和數(shù)據(jù)類型172022/12/172.修改基本表[例2]向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。

ALTERTABLEStudentADDScomeDATE;不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。

刪除屬性列:間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中刪除原表再將新表重命名為原表名直接刪除屬性列:(新)例:ALTERTABLEStudentDropScome;182022/12/172.修改基本表[例3]將年齡的數(shù)據(jù)類型改為半字長整數(shù)。

ALTERTABLEStudentMODIFYSageSMALLINT注:修改原有的列定義有可能會破壞已有數(shù)據(jù)[例4]刪除學(xué)生姓名必須取唯一值的約束。

ALTERTABLEStudentDROPUNIQUE(Sname)202022/12/173.1查詢數(shù)據(jù)庫查詢是數(shù)據(jù)庫的核心操作,select具有靈活的使用方式和豐富的功能3.1.1單表查詢3.1.2連接查詢3.1.3嵌套查詢3.1.4集合查詢3.1.5select語句的一般格式212022/12/173.3查詢語句格式SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM

<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]];SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對象(基本表或視圖)WHERE子句:指定查詢條件

GROUPBY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會在每組中作用集函數(shù)。HAVING短語:篩選出只有滿足指定條件的組ORDERBY子句:對查詢結(jié)果表按指定列值的升序或降序排序232022/12/173.3查詢SELECT…FROM常用語句執(zhí)行過程

SELECT…⑤投影

FROM…①TABLE→內(nèi)存

WHERE…②選取元組

GROUP…③分組

HAVING…④選擇分組

[{UNION|…}⑥查徇結(jié)果的集合運(yùn)算

SELECT…]①~⑤ORDERBY……⑦排序輸出242022/12/17示例數(shù)據(jù)庫學(xué)生-課程數(shù)據(jù)庫學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept)課程表:Course(Cno,Cname,Cpno,Ccredit)

學(xué)生選課表:SC(Sno,Cno,Grade)262022/12/17一、選擇表中的若干列1.查詢指定列[例1]查詢?nèi)w學(xué)生的學(xué)號與姓名。SELECTSno,SnameFROMStudent;

[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。

SELECTSname,Sno,SdeptFROMStudent;2.查詢?nèi)苛衃例3]查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或

SELECT*FROMStudent;272022/12/17二、選擇表中的若干元組1.消除取值重復(fù)的行2.查詢滿足條件的元組282022/12/171.消除取值重復(fù)的行在SELECT子句中使用DISTINCT短語假設(shè)SC表中有下列數(shù)據(jù)

SnoCnoGrade---------------------9500119295001285950013889500229095002380[例6]查詢選修了課程的學(xué)生學(xué)號(1)SELECTSnoFROMSC;

或(默認(rèn)ALL)

SELECTALLSnoFROMSC;

結(jié)果:Sno-------9500195001950019500295002(2)SELECTDISTINCTSnoFROMSC;

結(jié)果:

Sno-------9500195002302022/12/172.查詢滿足條件的元組WHERE子句常用的查詢條件312022/12/17(1)比較大小在WHERE子句的<比較條件>中使用比較運(yùn)算符=,>,<,>=,<=,!=或<>,!>,!<,邏輯運(yùn)算符NOT+比較運(yùn)算符[例8]查詢所有年齡在20歲以下的學(xué)生姓名及其年齡

SELECTSname,SageFROMStudentWHERESage<20;

或SELECTSname,SageFROMStudentWHERENOTSage>=20;

322022/12/17(2)確定范圍使用謂詞BETWEEN…AND…NOTBETWEEN…AND…[例10]查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。

SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;

(WHERESage>=20ANDSage<=23)[例11]查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡

SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;332022/12/17(4)字符串匹配

[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]<匹配串>:指定匹配模板匹配模板:固定字符串或含通配符的字符串當(dāng)匹配模板為固定字符串時(shí),可以用=運(yùn)算符取代LIKE謂詞,用!=或<>運(yùn)算符取代NOTLIKE謂詞通配符%代表任意長度(長度可以為0)的字符串例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab等都滿足該匹配串_(下橫線)代表任意單個(gè)字符例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串342022/12/17(4)字符串匹配1)匹配模板為固定字符串[例14]查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。

SELECT*FROMStudentWHERESnoLIKE'95001';等價(jià)于:

SELECT*FROMStudentWHERESno='95001';352022/12/17(4)字符串匹配2)匹配模板為含通配符的字符串[例15]查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。

SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘劉%’;[例16]查詢姓"歐陽"且全名為三個(gè)漢字的學(xué)生的姓名。

SELECTSnameFROMStudentWHERESnameLIKE‘歐陽__’;362022/12/17(4)字符串匹配2)匹配模板為含通配符的字符串[例17]查詢名字中第2個(gè)字為"陽"字的學(xué)生的姓名和學(xué)號

SELECTSname,SnoFROMStudentWHERESnameLIKE‘__陽%’;[例18]查詢所有不姓劉的學(xué)生姓名。

SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'劉%';372022/12/17(5)涉及空值的查詢使用謂詞ISNULL或ISNOTNULL“ISNULL”不能用“=NULL”代替[例21]某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。

SELECTSno,CnoFROMSCWHEREGradeISNULL;[例22]查所有有成績的學(xué)生學(xué)號和課程號。

SELECTSno,CnoFROMSCWHEREGradeISNOTNULL382022/12/17空值SQL允許屬性有一個(gè)特殊值NULL稱作空值。未知值:有值但是不知道是什么,例如未知生日不適用的值:例如配偶的名字保留的值:無權(quán)知道的值,例未公布的電話號碼空值的運(yùn)算空值不同于空白或零值。沒有兩個(gè)相等的空值??罩岛腿魏沃颠M(jìn)行算術(shù)運(yùn)算,結(jié)果仍為空值。執(zhí)行計(jì)算時(shí)消除空值很重要,因?yàn)槿绻罩盗?,某些?jì)算(如平均值)會不準(zhǔn)確。當(dāng)使用邏輯運(yùn)算符和比較運(yùn)算符,有可能返回TRUE或FALSE以外的第三種結(jié)果UNKNOWN,UNKNOWN是與TRUE和FALSE相同的布爾值392022/12/17空串與NULL空(NULL)值表示數(shù)值未知??罩挡煌诳瞻谆蛄阒?。沒有兩個(gè)相等的空值??沾傅氖橇汩L度字符串,空字符串文字(‘’)將作為空字符串解釋當(dāng)m=0時(shí),RIGHT('123',m)返回空字符串。當(dāng)m是負(fù)數(shù)時(shí),RIGHT('123',m)返回空字符串。RTRIM('')返回空字符串。402022/12/17(6)多重條件查詢用邏輯運(yùn)算符AND和OR來聯(lián)結(jié)多個(gè)查詢條件

AND的優(yōu)先級高于OR

可以用括號改變優(yōu)先級可用來實(shí)現(xiàn)多種其他謂詞

[NOT]IN[NOT]BETWEEN…AND…[例23]查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。

SELECTSnameFROMStudentWHERESdept='CS'ANDSage<20;412022/12/17三、對查詢結(jié)果排序使用ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序空值將作為最大值排序ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示[例25]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。

SELECT*FROMStudentORDERBYSdept,SageDESC;422022/12/17三、對查詢結(jié)果排序[例24]查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。

SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;查詢結(jié)果

SnoGrade--------------9501095024950079295003829501082950097595014619500255432022/12/173.3查詢3.3.1單表查詢3.3.2連接查詢3.3.3嵌套查詢3.3.5select語句的一般格式

442022/12/173.3.4SELECT語句的一般格式SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[別名][,<目標(biāo)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論