WindowsServer數(shù)據(jù)庫(kù)課件--第03章SQL語(yǔ)言.ppt_第1頁(yè)
WindowsServer數(shù)據(jù)庫(kù)課件--第03章SQL語(yǔ)言.ppt_第2頁(yè)
WindowsServer數(shù)據(jù)庫(kù)課件--第03章SQL語(yǔ)言.ppt_第3頁(yè)
WindowsServer數(shù)據(jù)庫(kù)課件--第03章SQL語(yǔ)言.ppt_第4頁(yè)
WindowsServer數(shù)據(jù)庫(kù)課件--第03章SQL語(yǔ)言.ppt_第5頁(yè)
已閱讀5頁(yè),還剩106頁(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)介

數(shù)據(jù)庫(kù)系統(tǒng)概論AnIntroductiontoDatabaseSystem第三章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL 4 復(fù)習(xí) 1 統(tǒng)計(jì)每人不及格的門數(shù) 2 查詢顯示開(kāi)設(shè)課程的名稱 及格人數(shù)及最高分 3 查詢顯示所有計(jì)算機(jī)系學(xué)生的姓名 以及他們所選課程和相應(yīng)的成績(jī) 復(fù)習(xí) 單表查詢 SELECTSno count cno FROMSCWHEREgrade 60groupbysno 1 統(tǒng)計(jì)每人不及格的門數(shù) 復(fù)習(xí) 單表查詢 SELECTcno課程號(hào) Count sno 及格人數(shù) Max grade 最高分FROMSC CourseWHERESC cno Coandgrade 60groupbycno 2 查詢顯示開(kāi)設(shè)課程的名稱 及格人數(shù)及最高分 3 顯示全部計(jì)算機(jī)系學(xué)生的姓名 以及他們所選課程名和相應(yīng)的成績(jī) 復(fù)習(xí) 連接查詢 SELECTFROMWHERE sname cname gradestudent sc o oandstudent sno sc snoandsdept CS 復(fù)習(xí) 連接查詢 SELECT FROMStudent SC 4 描述下列語(yǔ)句的含義 WHEREStudent Sno SC Sno Student Sno Sname Ssex Sage Sdept Cno Grade SELECTC1 Cno C2 CpnoFROMCourseC1 CourseC2WHEREC1 Cpno C2 Cno 學(xué)習(xí)目標(biāo) 了解外連接以及查詢實(shí)現(xiàn)掌握不相關(guān)子查詢 IN 比較運(yùn)算符 ANY ALL 掌握相關(guān)子查詢 Exists謂詞 3 4查詢 3 4 1單表查詢3 4 2連接查詢3 4 3嵌套查詢3 4 4集合查詢 廣義笛卡爾積查詢等值連接 含自然連接 查詢非等值連接查詢自身連接查詢外連接查詢復(fù)合條件連接查詢 SQL中連接查詢的主要類型 4 外連接 1 外連接與普通連接的區(qū)別普通連接操作只輸出滿足連接條件的元組 外連接操作以指定表為連接主體 將主體表中的全部記錄輸出顯示 例 將每個(gè)學(xué)生的基本信息與其所選課程信息對(duì)應(yīng)顯示 結(jié)果 Student SnoSnameSsexSageSdeptCnoGrade0215121李勇男20CS1920215121李勇男20CS2850215121李勇男20CS3880215122劉晨女19IS2900215122劉晨女19IS3800215123王敏女18MA0215125張立男19IS 示例 外連接 SELECT FROM 連接類型 JOIN JOIN ON ON ONWHERE INNER LEFT RIGHT FULL CROSS 提示 JOIN的順序和ON連接條件的順序相反 外連接只能對(duì)兩個(gè)表進(jìn)行 2 語(yǔ)法格式 4 外連接 Student Sc SELECTstudent sc FROMstudentLEFTJOINscONstudent sno sc sno RIGHT FULL 例 查詢所有學(xué)生的個(gè)人信息及選課信息 4 外連接 4 外連接 SELECTsname gradeFROMstudentJOINscJOINcourseONo oONstudent sno sc snoWHEREcname 數(shù)學(xué) 例 查詢選修 數(shù)學(xué) 課程的學(xué)生的姓名和該課程成績(jī) 查詢顯示全部計(jì)算機(jī)系學(xué)生的姓名 以及他們所選課程的門數(shù) 練習(xí) SELECTsname count cno 課程門數(shù)FROMstudentleftjoinscONstudent sno sc snoWHEREsdept CS GROUPBYSname 特點(diǎn) WHERE子句中含多個(gè)條件 例35 查詢選修2號(hào)課程且成績(jī)?cè)?0分以上所有學(xué)生的學(xué)號(hào) 姓名 SELECTStudent Sno student SnameFROMStudent SCWHEREStudent Sno SC SnoANDSC Cno 2 ANDSC Grade 90 5 復(fù)合條件連接 特點(diǎn) 連接操作在兩個(gè)以上的表之間進(jìn)行 例36 查詢每個(gè)學(xué)生的學(xué)號(hào) 姓名 選修的課程名及成績(jī) SELECTStudent Sno Sname Cname GradeFROMStudent SC CourseWHEREStudent Sno SC SnoandSC Cno Course Cno 6 多表連接 3 4查詢 3 4 1單表查詢3 4 2連接查詢3 4 3嵌套查詢3 4 4集合查詢 3 4 3嵌套查詢 嵌套查詢概述嵌套查詢分類及求解方法引出子查詢的謂詞 1 一個(gè)SELECT FROM WHERE語(yǔ)句稱為一個(gè)查詢塊 2 將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語(yǔ)條件中的查詢稱為嵌套查詢 1 嵌套查詢概述 例 SELECTSname外層查詢 父查詢FROMStudentWHERESnoIN SELECTSno內(nèi)層查詢 子查詢FROMSCWHERECno 2 嵌套查詢概述 3 說(shuō)明 子查詢的限制注意 子查詢不能使用ORDERBY子句ORDERBY只對(duì)查詢最終結(jié)果的排序?qū)訉忧短追绞椒从沉薙QL語(yǔ)言的結(jié)構(gòu)化不同的DBMS允許的最大嵌套層數(shù)不同有些嵌套查詢可以用連接查詢替代 3 4 3嵌套查詢 嵌套查詢概述嵌套查詢分類及求解方法引出子查詢的謂詞 1 不相關(guān)子查詢 子查詢的查詢條件不依賴于父查詢查詢過(guò)程 由里向外逐層處理每個(gè)子查詢?cè)谏弦患?jí)查詢處理之前先求解 子查詢的結(jié)果用于建立父查詢的查找條件 2 嵌套查詢的分類 1 不相關(guān)子查詢 2 嵌套查詢的分類 例 SELECTSname外層查詢 父查詢FROMStudentWHERESnoIN SELECTSno內(nèi)層查詢 子查詢FROMSCWHERECno 2 2 相關(guān)子查詢 子查詢的查詢條件依賴于父查詢查詢過(guò)程 首先取外層查詢表的第一個(gè)元組 根據(jù)它與內(nèi)層查詢相關(guān)的屬性值處理內(nèi)層查詢 若WHERE子句返回值為真 則取此元組放入結(jié)果表 然后再取外層表的下一個(gè)元組 重復(fù)這一過(guò)程 直至外層表全部檢查完為止 嵌套查詢的分類 3 4 3嵌套查詢 嵌套查詢概述嵌套查詢分類及求解方法引出子查詢的謂詞 3 引出子查詢的謂詞 帶有IN謂詞的子查詢帶有比較運(yùn)算符的子查詢帶有ANY或ALL謂詞的子查詢帶有EXISTS謂詞的子查詢 例39 查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生 可以分步實(shí)現(xiàn) 確定 劉晨 所在系名SELECTSdeptFROMStudentWHERESname 劉晨 1 帶有IN謂詞的子查詢 結(jié)果為 deptIS 例39 查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生 查找所有在IS系學(xué)習(xí)的學(xué)生SELECTSno Sname SdeptFROMStudentWHERESdept IS 結(jié)果為 SnoSnameSdept0215122劉晨IS0215125張立IS 1 帶有IN謂詞的子查詢 續(xù) 1 帶有IN謂詞的子查詢 續(xù) 方法1 將第一步查詢嵌入到第二步查詢的條件中SELECTSno Sname SdeptFROMStudentWHERESdeptIN SELECTSdeptFROMStudentWHERESname 劉晨 構(gòu)造嵌套查詢 說(shuō)明 此查詢?yōu)椴幌嚓P(guān)子查詢 DBMS求解該查詢時(shí)也是分步去做的 方法2 也可用自身連接完成本查詢要求S1S2SELECTS1 Sno S1 Sname S1 SdeptFROMStudentS1 StudentS2WHERES1 Sdept S2 SdeptANDS2 Sname 劉晨 1 帶有IN謂詞的子查詢 續(xù) 例38 查詢選修了課程名為 信息系統(tǒng) 的學(xué)生學(xué)號(hào)和姓名 1 帶有IN謂詞的子查詢 續(xù) 最后在Student關(guān)系中取出Sno和SnameSELECTSno SnameFROMStudentWHERESnoIN SELECTCnoFROMCourseWHERECname 信息系統(tǒng) 首先在Course關(guān)系中找出 信息系統(tǒng) 的課程號(hào) 結(jié)果 3 然后在SC關(guān)系中找出選修了3號(hào)課程的學(xué)生學(xué)號(hào)SELECTSnoFROMSCWHERECnoIN 組合以后的代碼 SELECTSno SnameFROMStudentWHERESnoIN SELECTSnoFROMSCWHERECnoIN SELECTCnoFROMCourseWHERECname 信息系統(tǒng) 1 帶有IN謂詞的子查詢 續(xù) 結(jié)果 SnoSname0215121李勇0215122劉晨 1 帶有IN謂詞的子查詢 續(xù) 另 本例也可用連接查詢SELECTSno SnameFROMStudent SC CourseWHEREStudent Sno SC SnoANDSC Cno Course CnoANDCourse Cname 信息系統(tǒng) 是指父查詢和子查詢之間用比較運(yùn)算符連接的查詢適用范圍 當(dāng)能確切知道內(nèi)層查詢返回單值時(shí) 內(nèi)層查詢返回值是集合 要與ANY或ALL謂詞配合使用后 2 帶有比較運(yùn)算符的子查詢 2 帶有比較運(yùn)算符的子查詢 續(xù) 例 假設(shè)一個(gè)學(xué)生只可能在一個(gè)系學(xué)習(xí) 并且必須屬于一個(gè)系 則在例37可以改寫(xiě)為 SELECTSno Sname SdeptFROMStudentWHERESdept SELECTSdeptFROMStudentWHERESname 劉晨 注意 1 子查詢一定要用括號(hào)括起來(lái) 2 帶有比較運(yùn)算符的子查詢 續(xù) 注意 2 子查詢一定要跟在比較符之后 SELECTSno Sname SdeptFROMStudentWHERE SELECTSdeptFROMStudentWHERESname 劉晨 Sdept 謂詞語(yǔ)義 ANY 表示任意一個(gè)值 ALL 表示所有值 3 帶有ANY或ALL謂詞子查詢 需要配合使用比較運(yùn)算符 ANY大于 大于等于 子查詢結(jié)果中的某個(gè)值 ALL大于 大于等于 子查詢結(jié)果中的所有值 ANY小于 小于等于 子查詢結(jié)果中的某個(gè)值 ALL小于 小于等于 子查詢結(jié)果中的所有值 ANY等于子查詢結(jié)果中的某個(gè)值 ALL等于子查詢結(jié)果中的所有值 通常無(wú)意義 ANY不等于子查詢結(jié)果中的某個(gè)值 ALL不等于子查詢結(jié)果中的任何一個(gè)值 3 帶有ANY或ALL謂詞子查詢 哪些無(wú)實(shí)際意義 例42 查詢其他系中比信息系任一個(gè) 其中某一個(gè) 學(xué)生年齡小的學(xué)生姓名和年齡 SELECTSname SageFROMStudentWHERESage ANY SELECTSageFROMStudentWHERESdept IS 執(zhí)行過(guò)程 3 帶有ANY或ALL謂詞子查詢 續(xù) ANDSdept IS 是哪個(gè)查詢的條件 ANY和ALL謂詞有時(shí)可以用集函數(shù)實(shí)現(xiàn)ANY ALL與集函數(shù)的對(duì)應(yīng)關(guān)系 3 帶有ANY或ALL謂詞子查詢 續(xù) IN MAX MAX MIN MIN NOTIN MIN MIN MAX MAX 用ANY實(shí)現(xiàn)例39如下 SELECTSname SageFROMStudentWHERESage IS 3 帶有ANY或ALL謂詞子查詢 續(xù) 用集函數(shù)實(shí)現(xiàn)例39如下 SELECTSname SageFROMStudentWHERESage IS 例43 查詢其他系中比IS系所有學(xué)生年齡都小的學(xué)生姓名及年齡 方法一 用ALL謂詞SELECTSname SageFROMStudentWHERESage IS 3 帶有ANY或ALL謂詞子查詢 續(xù) 例40 查詢其他系中比IS系所有學(xué)生年齡都小的學(xué)生姓名及年齡 方法二 用集函數(shù)SELECTSname SageFROMStudentWHERESage IS 3 帶有ANY或ALL謂詞子查詢 續(xù) 用聚集函數(shù)實(shí)現(xiàn)子查詢能夠減少比較次數(shù) 提高查詢效率 CPU 比較兩種方法的效率 3 4 3嵌套查詢 帶有IN謂詞的子查詢帶有比較運(yùn)算符的子查詢帶有ANY或ALL謂詞的子查詢帶有EXISTS謂詞的子查詢 4 帶有EXISTS謂詞的子查詢 1 EXISTS謂詞 2 NOTEXISTS謂詞 3 不同形式的查詢間的替換 4 相關(guān)子查詢的效率 5 用EXISTS NOTEXISTS實(shí)現(xiàn)全稱量詞 6 用EXISTS NOTEXISTS實(shí)現(xiàn)邏輯蘊(yùn)函 4 帶有EXISTS謂詞的子查詢 1 EXISTS謂詞相當(dāng)于存在量詞 帶有EXISTS謂詞的子查詢不返回具體數(shù)據(jù) 只產(chǎn)生邏輯值 True 或 False 由EXISTS引出的子查詢 其目標(biāo)列表達(dá)式通常都用 2 NOTEXISTS謂詞 例44 查詢所有選修了2號(hào)課程的學(xué)生姓名 4 帶有EXISTS謂詞的子查詢 用帶in謂詞的嵌套查詢SELECTSnameFROMStudentWHERESnoin SELECTSnoFROMSCWHERECno 2 例44 查詢所有選修了2號(hào)課程的學(xué)生姓名 用帶EXISTS謂詞的嵌套查詢SELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 4 帶有EXISTS謂詞的子查詢 用帶EXISTS謂詞的嵌套查詢SELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 4 帶有EXISTS謂詞的子查詢 外 內(nèi) 帶EXISTS謂詞查詢的執(zhí)行過(guò)程 內(nèi) 4 帶有EXISTS謂詞的子查詢 外 內(nèi) 內(nèi) 內(nèi) 內(nèi) 帶EXISTS謂詞查詢的執(zhí)行過(guò)程 用帶EXISTS謂詞的嵌套查詢SELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 4 帶有EXISTS謂詞的子查詢 外 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) 帶EXISTS謂詞查詢的執(zhí)行過(guò)程 用帶EXISTS謂詞的嵌套查詢SELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 用帶EXISTS謂詞的嵌套查詢SELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 4 帶有EXISTS謂詞的子查詢 帶EXISTS謂詞查詢的執(zhí)行過(guò)程 外 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) 用帶EXISTS謂詞的嵌套查詢SELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 4 帶有EXISTS謂詞的子查詢 帶EXISTS謂詞查詢的執(zhí)行過(guò)程 內(nèi) 外 例44 查詢所有選修了2號(hào)課程的學(xué)生姓名 4 帶有EXISTS謂詞的子查詢 本查詢涉及Student和SC關(guān)系 在Student中依次取每個(gè)元組的Sno值 用此值去檢查SC關(guān)系 若SC中存在這樣的元組 其Sno值等于此Student Sno值 并且其Cno 2 則取此Student Sname送入結(jié)果關(guān)系 父查詢指針下移 子查詢回到首行 否則 子查詢移到底部才返回False值 總結(jié) 對(duì)每一個(gè)父查詢的元組 都要求解一遍子查詢 例44 查詢所有選修了2號(hào)課程的學(xué)生姓名 4 帶有EXISTS謂詞的子查詢 用ExistsSELECTSnameFROMStudentWHEREEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 用INSELECTSnameFROMStudentWHERESnoin SELECTSnoFROMSCWHERECno 2 例44 查詢所有選修了2號(hào)課程的學(xué)生姓名 4 帶有EXISTS謂詞的子查詢 用連接查詢SELECTSnameFROMStudent SCWHEREStudent Sno SC SnoANDSC Cno 2 例45 查詢沒(méi)有選修2號(hào)課程的學(xué)生姓名 SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 4 帶有EXISTS謂詞的子查詢 該要求很難用連接查詢實(shí)現(xiàn) 4 帶有EXISTS謂詞的子查詢 用嵌套查詢SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno 2 例45 查詢沒(méi)有選修2號(hào)課程的學(xué)生姓名 4 帶有EXISTS謂詞的子查詢 3 不同形式的查詢間的替換一些帶EXISTS或NOTEXISTS謂詞的子查詢不能被其他形式的子查詢等價(jià)替換所有帶IN謂詞 比較運(yùn)算符 ANY和ALL謂詞的子查詢都能用帶EXISTS謂詞的子查詢等價(jià)替換 總結(jié) EXISTS謂詞的表達(dá)能力高于其他謂詞的表達(dá)形式的 例37 查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生 用帶EXISTS謂詞的子查詢替換 SELECTSno Sname SdeptFROMStudentS1WHEREEXISTS SELECT FROMStudentWHERESdept S1 SdeptANDSname 劉晨 4 帶有EXISTS謂詞的子查詢 4 帶有EXISTS謂詞的子查詢 4 相關(guān)子查詢的效率由于帶EXISTS謂詞的相關(guān)子查詢只關(guān)心內(nèi)層查詢是否有返回值 并不需要查具體值 因此其效率并不一定低于其他查詢 4 帶有EXISTS謂詞的子查詢 5 用EXISTS NOTEXISTS實(shí)現(xiàn)全稱量詞 難點(diǎn) SQL語(yǔ)言中沒(méi)有全稱量詞 Forall 可以把帶有全稱量詞的謂詞轉(zhuǎn)換為等價(jià)的帶有存在量詞的謂詞 x P x P 例43 查詢選修了全部課程的學(xué)生姓名 SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) 內(nèi) SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) 內(nèi) 內(nèi) SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) 內(nèi) 內(nèi) 內(nèi) SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) SELECTSnameFROMStudentWHERENOTEXISTS SELECT FROMCourseWHERENOTEXISTS SELECT FROMSCWHERESno Student SnoANDCno Course Cno 4 帶有EXISTS謂詞的子查詢 Student Sc 外 中 內(nèi) 內(nèi) 內(nèi) 內(nèi) 內(nèi) 例 查詢選修了課程的學(xué)生姓名方法一 SelectsnameFromstudentWhereExists Select FromscWherestudent sno sc sno 方法二 SelectDISTINCTsnameFromstudent scWherestudent sno sc sno 方法三 SelectsnameFromstudentWheresnoin selectdistinctsnofromsc 請(qǐng)比較 本例中三種方法的查詢效率如何 3 4查詢 3 4 1單表查詢3 4 2連接查詢3 4 3嵌套查詢3 4 4集合查詢 3 4 4集合查詢 標(biāo)準(zhǔn)SQL直接支持的集合操作種類并操作 UNION 一般商用數(shù)據(jù)庫(kù)支持的集合操作種類并操作 UNION 交操作 INTERSECT 差操作 EXCEPT 3 4 4集合查詢 1 并操作 UNION 參加UNION操作的各結(jié)果表的列數(shù)必須相同 對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同 一般格式為 UNION 例48 查詢計(jì)算機(jī)系的學(xué)生及年齡不大于19歲的學(xué)生 方法一 SELECT FROMStudentWHERESdept CS UNIONSELECT FROMStudentWHERESage 19 3 4 4集合查詢 方法二 SELECTDISTINCT FROMStudentWHERESdept CS ORSage 19 例49 查詢選修了課程1或者選修了課程2的學(xué)生 方法一 SELECTSnoFROMSCWHERECno 1 UNIONSELECTSnoFROMSCWHERECno 2 3 4 4集合查詢 結(jié)果有幾條記錄 方法二 SELECTDISTINCTSnoFROMSCWHERECno 1 ORCno 2 補(bǔ)充 設(shè)數(shù)據(jù)庫(kù)中有教師表Teacher Tno Tname 查詢學(xué)校中所有師生的姓名 SELECTSnameFROMStudentUNIONSELECTTnameFROMTeacher 3 4 4集合查詢 還能用前面類似的等價(jià)方式表示嗎 2 交操作 INTERSECT 標(biāo)準(zhǔn)SQL沒(méi)有提供交操作 但SQLSERVER2008提供 例50 查詢計(jì)算機(jī)系的學(xué)生與年齡不大于19歲的學(xué)生的交集 SELECT FROMStudentWHERESdept CS ANDSage 19 SELECT FROMStudentWHERESdept CS INTERSECTSELECT FROMStudentWHERESage 19 3 4 4集合查詢 例51 查詢既選修1號(hào)課又選修2號(hào)課的學(xué)生集合 3 4 4集合查詢 SELECTSnoFROMSCWHERECno 1 ANDSnoIN SELECTSnoFROMSCWHERECno 2 思考 查詢教師和學(xué)生同名的集合 SELECTSnoFROMSCWHERECno 1 INTERSECTSELECTSnoFROMSCWHERECno 2 3 差操作 EXCEPT 標(biāo)準(zhǔn)SQL中沒(méi)有提供差操作 但SQLSERVER2008提供了此操作 3 4 4集合查詢 例52 查詢計(jì)算機(jī)科學(xué)系的學(xué)生與年齡不大于19歲的學(xué)生的差集 3 4 4集合查詢 SELECT FROMStudentWHERESdept CS EXCEPTSELECT FROMStudentWHERESage 19 SELECT FROMStudentWHERESdept CS ANDSage 19 例53 查詢學(xué)生和教師不重名的學(xué)生姓名 3 4 4集合查詢 SELECTSnameFROMStudentEXCEPTSELECTTnameFROMTeacher SELECTsnameFROMStudentWHEREsnamenotin selectsnamefromteacher 3 4 4集合查詢 SELECT FROMStudentORDERBYSnoUNIONSELECT FROMTeacherORDERBYTno new SELECTSnameFROMStudentUNIONSELECTTnameFROMTeacherORDERBYTname 4 對(duì)集合操作結(jié)果的排序 4 對(duì)集合操作結(jié)果的排序ORDERBY子句通常用數(shù)字序號(hào)指定排序?qū)傩?只用于對(duì)最終查詢結(jié)果排序 不能對(duì)中間結(jié)果排序任何情況下 ORDERBY子句只能出現(xiàn)在最后 new 3 4 4集合查詢 SELECTSnameFROMStudentUNIONSELECTTnameFROMTeacherORDERBYSname 1 SELECT語(yǔ)句的一般格式 SELECT ALL DISTINCT 別名 FROM 別名 別名 WHERE GROUPBY HAVING ORDERBY ASC DESC 3 4查詢小結(jié) 3 5數(shù)據(jù)更新 3 5 1插入數(shù)據(jù)3 5 2修改數(shù)據(jù)3 5 3刪除數(shù)據(jù) 3 5 1插入數(shù)據(jù) 兩種插入數(shù)據(jù)方式 插入單個(gè)元組插入子查詢結(jié)果 3 5 1插入數(shù)據(jù) 1 插入單個(gè)元組語(yǔ)句格式 INSERTINTO VALUES 功能 將新元組插入指定表中 3 5 1插入數(shù)據(jù) INTO子句指定要插入數(shù)據(jù)的表名及屬性列屬性列順序與表定義中的順序可以不一致省略屬性列表 表示插入一條完整元組 且屬性列屬性與表定義順序一致指定部分屬性列 插入的元組在其余屬性列上取空值 省略屬性時(shí)要注意 VALUES子句提供的值必須與INTO子句中的屬性匹配值的個(gè)數(shù) 類型 3 5 1插入數(shù)據(jù) 注意 DBMS在執(zhí)行插入語(yǔ)句時(shí)會(huì)檢查所插元組是否破壞表上已定義的完整性規(guī)則實(shí)體完整性參照完整性用戶定義的完整性對(duì)于有NOTNULL約束對(duì)于有UNIQUE約束對(duì)于有值域約束 例1 將一個(gè)新學(xué)生記錄插入到Student表中 內(nèi)容如下 95020 陳冬 男 IS 18歲 INSERTINTOStudentVALUES 0215128 陳冬 男 IS 18 3 5 1插入數(shù)據(jù) 例2 向SC表插入一條選課記錄 0215128 1 INSERTINTOSC Sno Cno VALUES 0215128 1 新插入的記錄在Grade列上取空值 3 5 1插入數(shù)據(jù) 2 插入子查詢結(jié)果語(yǔ)句格式INSERTINTO 子查詢 功能 將子查詢結(jié)果插入指定表中 3 5 1插入數(shù)據(jù) 例3 對(duì)每一個(gè)系 求學(xué)生的平均年齡 并把結(jié)果存入數(shù)據(jù)庫(kù) 首先建表 CREATETABLEDept avgage SdeptCHAR 15 定義系名 AvgageSMALLINT 定義平均年齡 3 5 1插入數(shù)據(jù) 例3 對(duì)每一個(gè)系 求

溫馨提示

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