數(shù)據(jù)庫(kù)應(yīng)用技術(shù)教程 課件 第4章 數(shù)據(jù)查詢1_第1頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù)教程 課件 第4章 數(shù)據(jù)查詢1_第2頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù)教程 課件 第4章 數(shù)據(jù)查詢1_第3頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù)教程 課件 第4章 數(shù)據(jù)查詢1_第4頁(yè)
數(shù)據(jù)庫(kù)應(yīng)用技術(shù)教程 課件 第4章 數(shù)據(jù)查詢1_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

上節(jié)回顧1、什么是實(shí)體完整性?如何保證實(shí)體完整性?2、什么是參照完整性?如何保證參照完整性?任務(wù)1、設(shè)置姓名為唯一。2、使用altertable命令,為選課表添加外鍵約束。第四章數(shù)據(jù)查詢學(xué)習(xí)目標(biāo)掌握SELECT語(yǔ)句語(yǔ)法;熟練進(jìn)行簡(jiǎn)單查詢;掌握排序、分組聚合和分組篩選;掌握集合查詢和連接查詢的方法;掌握嵌套查詢和窗口函數(shù)的應(yīng)用;學(xué)會(huì)在數(shù)據(jù)更新中使用查詢語(yǔ)句。任務(wù)在學(xué)生選課系統(tǒng)數(shù)據(jù)庫(kù)中能根據(jù)按照指定的要求靈活、快速地查詢相關(guān)信息。如:1、查詢所有學(xué)生的學(xué)號(hào),姓名和年齡。2、查詢信息系學(xué)生的學(xué)號(hào),姓名和出生年份。3、查詢所有學(xué)生中年齡最大、最小的學(xué)生學(xué)號(hào)和姓名。4、查詢女生人數(shù),平均年齡。。。。4數(shù)據(jù)查詢4.1SELECT語(yǔ)句4.2簡(jiǎn)單查詢4.3集合查詢4.4連接查詢4.5嵌套查詢4.6在數(shù)據(jù)更新中使用查詢語(yǔ)句4.7窗口函數(shù)4.1SELECT語(yǔ)句SELECT<目標(biāo)列名序列>--需要哪些列

FROM<數(shù)據(jù)源>--來(lái)自于哪些表

[WHERE<檢索條件>]--根據(jù)什么條件

[GROUPBY<分組依據(jù)列>][HAVING<分組篩選條件>][ORDERBY<排序依據(jù)列>]INTO子句用于將查詢結(jié)果插入新表中,其語(yǔ)法格式如下。SELECT[ALL︱DISTINCT][TOPN[PERCENT]列名1[,列名2,…列名N]INTO新表名

FROM表名或視圖名INTO子句例:使用INTO子句創(chuàng)建一個(gè)包含學(xué)生學(xué)號(hào)、姓名和性別,并命名為new_Student的新表。在查詢編輯器中執(zhí)行如下Transact-SQL語(yǔ)句。USE學(xué)生選課GOSELECTSno,Sname,SsexINTOnew_StudentFROMStudentGO4.2簡(jiǎn)單查詢選擇表中若干列

1.查詢指定的列查詢表中部分屬性列。例1:查詢?nèi)繉W(xué)生的學(xué)號(hào)與姓名。SELECTSno,SnameFROMStudent例2.查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系SELECTSname,Sno,Sdept FROMStudent2.查詢?nèi)苛欣?.查詢?nèi)w學(xué)生的記錄SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent等價(jià)于:

SELECT*FROMStudent

3.查詢經(jīng)過(guò)計(jì)算的列例4.查詢?nèi)w學(xué)生的姓名及其出生年份。

SELECTSname,2023-Sage

FROMStudent4.常量列例5.查詢?nèi)w學(xué)生的姓名,出生年份,所在系,并在出生年份列前加入一個(gè)列,此列每行數(shù)據(jù)均為“出生年份”常量值。SELECTSname,'出生年份',2023-Sage,sdeptFROMStudent5.顯示列標(biāo)題

語(yǔ)法:列名|表達(dá)式[AS]列標(biāo)題或:列標(biāo)題=列名|表達(dá)式例:

SELECTSname姓名,2023-Sage出生年份,所在系=sdeptFROMStudent

查詢結(jié)果:4.2簡(jiǎn)單查詢選擇表中若干元組

1.消除重復(fù)的行例6.查詢選修了課程的學(xué)生的學(xué)號(hào)SELECTSnoFROMSC有重復(fù)行!用DISTINCT去掉結(jié)果集中的重復(fù)行SELECTDISTINCTSnoFROMSC2.查詢滿足條件的元組(where)查詢條件謂詞比較運(yùn)算符=,>,>=,<,<=,<>(或!=)NOT+比較運(yùn)算符確定范圍BETWEEN…AND,NOTBETWEEN…AND確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL邏輯謂詞AND,OR(1)比較大小例7.查詢信息系全體學(xué)生的姓名。

SELECTSnameFROMStudentWHERESdept=‘信息系'例8.查詢年齡在20歲以下的學(xué)生的姓名及年齡。

SELECTSname,SageFROMStudentWHERESage<20例9.查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)

SELECTDISTINCTSnoFROMSCWHEREGrade<60(2)確定范圍用BETWEEN…AND和NOTBETWEEN…ANDBETWEEN…AND…的格式為:

列名|表達(dá)式[NOT]BETWEEN下限值A(chǔ)ND上限值如果列或表達(dá)式的值在[不在]下限值和上限值范圍內(nèi),則結(jié)果為True,表明此記錄符合查詢條件。示例例10.查詢年齡在21~23歲之間的學(xué)生的姓名、所在系和年齡。SELECTSname,Sdept,SageFROMStudent WHERESageBETWEEN21AND23例11.查詢年齡不在21~23之間的學(xué)生姓名、所在系和年齡。SELECTSname,Sdept,SageFROMStudent WHERESageNOTBETWEEN21AND23關(guān)于日期類型查詢例12.查詢2020年8月份出版的全部圖書(shū)的詳細(xì)信息。SELECT*FROM圖書(shū)表

WHERE出版日期BETWEEN'2019/8/1'AND'2019/8/31'注意:日期類型的常量要用單引號(hào)括起來(lái),而且年、月、日之間通常用分隔符隔開(kāi),常用的分隔符有“/”和“-”(3)確定集合使用IN運(yùn)算符。用來(lái)查找屬性值屬于指定集合的元組。格式為:

列名[NOT]IN(常量1,常量2,…常量n)示例例13.查詢信息系、數(shù)學(xué)系和計(jì)算機(jī)系學(xué)生的姓名和性別。

SELECTSname,SsexFROMStudent WHERESdeptIN('信息系','數(shù)學(xué)系','計(jì)算機(jī)系')例14.查詢數(shù)學(xué)系和計(jì)算機(jī)系之外的其他系的學(xué)生姓名、性別和所在系。

SELECTSname,SsexFROMStudent WHERESdeptNOTIN(‘?dāng)?shù)學(xué)系','計(jì)算機(jī)系')(4)字符串匹配使用LIKE運(yùn)算符一般形式為:

列名[NOT]LIKE<匹配串>匹配串中可包含如下四種通配符:_:匹配任意一個(gè)字符;%:匹配0個(gè)或多個(gè)字符;[]:匹配[]中的任意一個(gè)字符;對(duì)于連續(xù)字母的匹配,例如匹配[abcd],可簡(jiǎn)寫(xiě)為[a-d],

[^]:不匹配[]中的任意一個(gè)字符。

示例例15.查詢姓‘張’的學(xué)生的詳細(xì)信息。

SELECT*FROMStudentWHERESnameLIKE

'張%'例16.查詢學(xué)生表中姓‘張’、‘王’和‘李’的學(xué)生的情況。

SELECT*FROMStudentWHERESnameLIKE

'[張王李]%'例17.查詢名字中第2個(gè)字為‘小’或‘曉’的學(xué)生的姓名和學(xué)號(hào)。

SELECTSname,SnoFROMStudentWHERESnameLIKE

'_[小曉]%'示例例18.查詢所有不姓“王”也不姓“李”的學(xué)生姓名

SELECTSnameFROMStudentWHERESnameNOTLIKE

'[王李]%'或者:

SELECTSnameFROMStudentWHERESnameLIKE'[^王李]%'或者:SELECTSnameFROMStudentWHERESnameNOTLIKE'王%'

ANDSnameNOTLIKE'李%'

示例例19.查詢姓“劉”且名字是2個(gè)字的學(xué)生姓名。

SELECTSnameFROMStudentWHERESnameLIKE'劉_'

示例例20.查詢姓劉且名字是3個(gè)字的學(xué)生姓名SELECTSnameFROMStudentWHERESnameLIKE'劉__'

注意:尾隨空格需采用如下方法:

SELECTSnameFROMStudentWHERErtrim(Sname)LIKE'劉__'例21.在Student表中查詢學(xué)號(hào)的最后一位不是1、3、5的學(xué)生信息。

SELECT*FROMStudentWHERESnoLIKE'%[^135]'轉(zhuǎn)義字符如果要查找的字符串正好含有通配符,比如下劃線或百分號(hào),就需要使用一個(gè)特殊子句來(lái)告訴數(shù)據(jù)庫(kù)管理系統(tǒng)這里的下劃線或百分號(hào)是作為一個(gè)普通的字符,而不表示通配符,這個(gè)特殊的子句就是ESCAPE。ESCAPE的語(yǔ)法格式為:ESCAPE轉(zhuǎn)義字符“轉(zhuǎn)義字符”是任何一個(gè)有效的字符。在匹配串中包含轉(zhuǎn)義字符,表明位于該字符后面的第一個(gè)字符是普通字符,而不是通配符。示例例如,查找“比例”字段中包含字符串“30%”的記錄:

WHERE比例LIKE'%30!%%'ESCAPE'!'

查找“比例”字段中包含下劃線(_)的記錄:

WHERE比例LIKE'%!_%'ESCAPE'!'(5)有空值的查詢空值(NULL)在數(shù)據(jù)庫(kù)中表示不確定的值。例如,學(xué)生選修課程后還沒(méi)有考試時(shí),這些學(xué)生有選課記錄,但沒(méi)有考試成績(jī),因此考試成績(jī)?yōu)榭罩怠E袛嗄硞€(gè)值是否為NULL值,

溫馨提示

  • 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)論