




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第六章數(shù)據(jù)庫檢索簡單查詢SELECT語句的基本語法格式:SELECT查詢項列表INTO新表名FROM數(shù)據(jù)源表列表WHERE條件表達式ORDER BY排序依據(jù)排序方式GROUP BY分組依據(jù)HAVING條件表達式基本查詢格式:SELECT查詢項列表FROM數(shù)據(jù)源表說明查詢項列表中各選項用逗號(,)隔開;查詢項中可以包含:*、DISTINCT. TOP n、AS別名的使用; 例:在學生管理數(shù)據(jù)庫系統(tǒng)(student)中,有學生信息表(student)、學生成績表(stgrade)、課程信息表(course),具體結構如下顯示,完成該數(shù)據(jù)庫系統(tǒng)中的查詢。STUDENT (Sno,Sname,Sex,
2、Birth,Addr,Dept),分別表示學號、姓名、性別、出生 日期、地址、專業(yè);STGRADE(Sno,Cno,Grade,Score),分別表示學號、課程號、成績、所得學分;COURSE(Cno,Cname,Term,Point,Tname),分別表示課程號、課程名稱、基本學分、 任課教師姓名。從student表中查詢學生的學號,姓名,性別,出生日期信息。SELECT sno,sname,sex,birth FROM student從student表中查詢所有學生的所有信息。SELECT * FROM student(*代表表中的所有字段)從student表中查詢專業(yè)信息SELECT d
3、ept FROM student(結果中會出現(xiàn)重復值,即學號有重復)對比:SELECT DISTINCT dept FROM student (DISTINCT 用于去掉查詢結果中的 重復值)從stgrade表中查詢選修了課程的學生學號。(同上小題)SELECT sno FROM stgrade對比:SELECT DISTINCT sno FROM stgrade從student表中查詢前10個學生的學號,姓名,性別信息。(或前10%個學生的信息)SELECT TOP 10 sno,sname,sex FROM studentSELECT TOP 10 PERCENT sno,sname,se
4、x FROM studentTOP n用于限制在結果中只顯示前面的n條記錄;TOP n PERCENT用于限制在結果中 只顯示前面的n%條記錄。從student表中查詢學生的學號,姓名,性別,年齡信息。提示:年齡可通過birth字段的計算得到,age=YEAR(GETDATE()-YEAR(birth)SELECT sno,sname,sex,YEAR(GETDATE()-YEAR(birth) FROM studentSELECT sno,sname,sex,YEAR(GETDATE()-YEAR(birth) AS age FROM studentSELECT sno,sname,sex,
5、age=YEAR(GETDATE()-YEAR(birth) FROM student 其中:為結果集內(nèi)的列指定別名有3中寫法,如下:、select列名(表達式)列別名from數(shù)據(jù)源、select列名(表達式)AS列別名from數(shù)據(jù)源、select列別名=列名(表達式)from數(shù)據(jù)源帶條件的查詢:WHERE子句的應用格式:SELECT查詢項列表FROM數(shù)據(jù)源表 WHERE條件表達式說明:查詢中希望得到表中滿足特定條件的一些記錄時,用戶可以在查詢語句中使用WHERE 子句(2)常用的查詢條件及運算符如下:查詢條件運算符意義例比較=,=(!),),(!=),或NOT+上述運算符比較大小成績50確定
6、范圍NOT BETWEEN AND 判斷值是否在范圍中成績 BETWEEN 60 AND 100確定集合IN(列表)/ NOT IN例表)判斷值是否為列表中的值專業(yè)IN物流,財會)字符匹配LIKE / NOT LIKE判斷值是否與指定的字符通配格式相符姓名LIKE ,王專業(yè)NOT LIKE 數(shù)據(jù)空值IS NULL / NOT IS NULL判斷值是否為空成績IS NULL多重條件AND,OR,NOT用于多重條件判斷姓名LIKE ,王 AND專業(yè)IN( 物流,財會)例:數(shù)據(jù)庫表同上從student表中查詢所有男生記錄。SELECT * FROM student WHERE sex=男從stude
7、nt表中查詢所有非“計算機”專業(yè)的學生信息。SELECT * FROM student WHERE dept計算機從student表中查詢1985年之后(包括1985年)出生的學生信息。SELECT * FROM student WHERE birth=1985/1/1SELECT * FROM student WHERE YEAR(birth)=1985從student表中查詢年齡在18至20歲之間的學生學號、姓名、性別、專業(yè)信息。SELECT sno,sname,sex,dept FROM studentWHERE YEAR(GETDATE()-YEAR(birth) BETWEEN 18
8、 AND 20從student表中查詢所有姓“王”的學生學號、姓名、性別、專業(yè)信息。SELECT sno,sname,sex,dept FROM student WHERE sname LIKE 王SELECT sno,sname,sex,dept FROM student WHERE sname=K()從student表中查詢所有姓名中的第二個字不是“小”的學生信息。SELECT * FROM student WHERE sname NOT LIKE _小從student表中查詢專業(yè)為“數(shù)學”,“英語”和“計算機”專業(yè)的學生信息。SELECT * FROM student WHERE dep
9、t IN (數(shù)學,英語,計算機)或:SELECT * FROM student WHERE dept=數(shù)學OR dept=英語OR dept=計算機從student表中查詢除“數(shù)學”,“英語”和“計算機”以外專業(yè)的學生信息。SELECT * FROM student WHERE dept NOT IN (數(shù)學,英語,計算機)或:SELECT * FROM studentWHERE dept數(shù)學AND dept英語AND dept計算機從stgrade表中查詢課程號為“C01”,成績合格的記錄信息。SELECT * FROM stgrade WHERE cno= C01 AND grade=60
10、從stgrade表中查詢所有成績?yōu)榭盏挠涗?。SELECT * FROM stgrade WHERE grade IS NULLSELECT * FROM stgrade WHERE grade NULL注意:如果要查詢的字符串本身含有%或_,需要使用ESCAPE換碼字符對通配符進行轉義。例如:SELECT CNO,CNAMEFROM COURSEWHERE CNAME like VB/_6.0 ESCAPE /對查詢結果排序一一ORDER BY子句的應用格式:SELECT查詢項列表FROM數(shù)據(jù)源表WHERE條件表達式ORDER BY排序字段排序方式說明:排序方式默認為“升序”;其中ASC表示升
11、序排列,DESC表示降序排列若需按多個字段排序,則多個字段間用“,”隔開,具體可參見例題。舉例:數(shù)據(jù)庫同上從student表中查詢所有學生的學號、姓名、性別、出生日期和專業(yè),并將結果按出 生日期升序顯示(即按年齡從大到小排序)。SELECT sno,sname,sex,birth,dept FROM student ORDER BY birth從stgrade表中查詢選修了課程號為“C01”課程的學生的學號和成績,并將結果按 成績降序顯示(即按成績從高到低排序)。SELECT sno,grade FROM stgrade WHERE cno=c01 ORDER BY grade DESC從st
12、udent表中查詢所有學生的信息,并將結果按專業(yè)的降序排列,專業(yè)相同的學生 的學號升序排列。SELECT * FROM student ORDER BY dept DESC,sno ASC /* 其中 ASC 可省略 */從stgrade表中查詢所有信息,并將結果按課程號的降序排列,課程號相同的按成績 由高到低排列(降序)。SELECT * FROM stgrade ORDER BY cno desc,grade DESC四、對數(shù)據(jù)進行統(tǒng)計一一聚合函數(shù)的應用聚合函數(shù)及功能:COUNT(*):統(tǒng)計記錄的個數(shù)COUNT(列名):統(tǒng)計一列中非空值的個數(shù)SUM(列名):統(tǒng)計一列值的總和(該列必須是數(shù)值
13、型)AVG(列名):統(tǒng)計一列值的平均值(該列必須是數(shù)值型)MAX(列名):統(tǒng)計一列值的最大值MIN(列名):統(tǒng)計一列值的最小值說明:允許使用(DISTINCT|ALL列名),其中DISTINCT表示去掉指定列中的重復值再進 行統(tǒng)計;ALL表示不取消重復值,默認是ALL。例:從student表中查詢學生的總人數(shù)。SELECT COUNT(*) FROM student從stgrade表中查詢選修了課程號為“C01”課程的學生人數(shù)。SELECT COUNT(*) FROM stgrade WHERE cno=c01從stgrade表中查詢成績不為空的記錄個數(shù)。SELECT COUNT(grade)
14、 FROM stgradeSELECT COUNT(*) FROM stgrade WHERE grade IS NOT null從student表中查詢學生專業(yè)個數(shù)。SELECT COUNT(DISTINCT DEPT) FROM student從stgrade表中查詢成績的平均值、總分、最高分及最低分。SELECT AVG(grade),SUM(grade),MAX(grade),MIN(grade) FROM stgrade五、對結果進行分組一一GROUP BY子句的應用格式:SELECT查詢項列表FROM數(shù)據(jù)源表列表WHERE條件表達式GROUP BY分組依據(jù)HAVING條件表達式OR
15、DER BY排序依據(jù)排序方式說明:(具體參見例題)SELECT子句中的列名必須是GROUP BY子句中已有的列名或是包含在聚合函數(shù)中的 列名;HAVING子句必須用于GROUP BY子句的后面;HAVING子句與WHERE子句的區(qū)別:WHERE子句用于對表中記錄進行條件篩選;HAVING 子句用于對分組統(tǒng)計后的結果進行條件篩選;如果查詢語句中既有ORDER BY子句又有GROUP BY子句,則ORDER BY子句用于GROUP BY子句之后。例:從student表中查詢每個專業(yè)的學生人數(shù)(即按dept值分組,統(tǒng)計記錄個數(shù))。SELECT dept,COUNT(*) FROM student G
16、ROUP BY dept從stgrade表中查詢每門課程的成績平均值,并將結果按成績平均值從高到低排列。SELECT cno,AVG(grade) FROM stgrade GROUP BY cno ORDER BY AVG(grade) DESCSELECT cno,AVG(grade) as 平均成績 FROM stgradeGROUP BY cno ORDER BY 平均成績 DESC從student表中查詢專業(yè)為“Computer”的學生人數(shù)。(即從student表中統(tǒng)計各 個專業(yè)的學生人數(shù),并篩選出專業(yè)為“Computer”的結果。)SELECT COUNT(*) FROM stud
17、ent WHERE dept=Computer GROUP BY deptSELECT COUNT(*) FROM student GROUP BY dept HAVING dept=ComputerSELECT COUNT(*) FROM student HAVING dept=Computer從student表中查詢學生人數(shù)超過10人的專業(yè)及對應的學生人數(shù)。SELECT dept,COUNT(*)FROMstudentGROUPBY dept HAVING COUNT(*)=10SELECT dept,COUNT(*)FROMstudentGROUPBY dept WHERE COUNT(
18、*)=10SELECT dept,COUNT(*)FROMstudentWHERECOUNT(*)=10 GROUP BY dept從stgrade表中查詢每個學生成績合格的課程數(shù)目。SELECT sno,count(*) FROM stgrade WHERE grade=60 GROUP BY sno從stgrade表中查詢每個學生成績合格的課程數(shù)目,并從結果中篩選出合格數(shù)目超 過3(包括3)人的學號及課程數(shù)。SELECT sno,count(*) FROM stgrade WHERE grade=60 GROUP BY sno HAVING count(*)=3其他子句 INTO子句、UN
19、ION、COMPUTE的應用格式:SELECT查詢項列表INTO新表名FROM數(shù)據(jù)源表列表 SELECT查詢項列表FROM數(shù)據(jù)源表列表 UNION SELECT查詢項列表FROM數(shù)據(jù)源表列表 SELECT查詢項列表 FROM數(shù)據(jù)源表列表COMPUTE集合函數(shù)BY列名說明:INTO子句用于將查詢結果生成新表(或臨時表:表名前加#)UNION用于將查詢結果合并顯示;要求各結果集中的列數(shù)必須相同;且對應的數(shù)據(jù)類 型也必須相同。COMPUTE自子句用于對查詢結果的所有記錄進行匯總統(tǒng)計,并顯示所有參加匯總的詳 細信息;“BY列名”是指按列名字段進行分組計算,并顯示被統(tǒng)計記錄的詳細信息; BY選項必須與O
20、RDER BY子句一起使用,即必須按某一字段進行排序后才能分組。例:SELECT sno,sname,sex INTO xs FROM student WHERE dept=ComputerSELECT sno,sname,sex FROM student WHERE dept=ComputerUNIONSELECT sno,sname,sex FROM student WHERE dept=English對比: SELECT sno,sname,sex FROM student WHERE dept= Computer AND dept= EnglishSELECT * FROM xsUNI
21、ONSELECT sno,sname,sex FROM student WHERE dept= EnglishSELECT * FROM stgrade COMPUTE sum(grade),avg(grade),count(grade)SELECT * FROM stgrade ORDER BY sno COMPUTE sum(grade),avg(grade),count(grade)BY sno高級查詢一.連接查詢概念及分類若一個查詢同時涉及多個表,則稱之為連接查詢。包括非等值查詢、自然連接、自身查詢、外連接等應用范圍:查詢項來自于多個表、或查詢項及查詢條件來自于多個表。交叉連接=廣義笛卡爾積(不帶連接條件的多表連接,一般無實際應用意義)語法格式:SELECT查詢項列表FROM表1,表2SELECT 查詢項列表 FROM 表 1 CROSS JOIN 表 2(2)實例:(略)等值與非等值連接(帶連接條件的多表連接(1)語法格式:SELECT查詢項列表FROM表1 連接方式表2 ON連接條件SELECT查詢項列表FROM表1,表2 WHERE連接條件 (僅用于內(nèi)連接)(2)說明:連接條件的一般格式:表1.列名 比較運算符 表2.列名其中的比較運算符有:=,=,=,=,!=(僅用于單值子查詢)IN、比較運算符結合A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 常熟理工學院《醫(yī)學微生物與寄生蟲學》2023-2024學年第二學期期末試卷
- 十堰市茂華中學2025屆初三下學期4月月考物理試題含解析
- 上海興偉學院《新媒體廣告設計》2023-2024學年第二學期期末試卷
- 廉潔教育提醒課件
- 杭州醫(yī)學院《電力市場概論》2023-2024學年第二學期期末試卷
- 浙江省杭州市西湖區(qū)保俶塔實驗學校申花路校區(qū)2025年三下數(shù)學期末統(tǒng)考模擬試題含解析
- 合肥工業(yè)大學《運動生理學》2023-2024學年第二學期期末試卷
- 2025屆上海市曹楊二中高三第二次調(diào)研統(tǒng)一測試歷史試題含解析
- 山西省大同市第三中學2024-2025學年高三七校聯(lián)合體考前沖刺交流考試數(shù)學試題含解析
- 江蘇省常州市新北區(qū)奔牛初級中學2025年初三十月月考化學試題試卷含解析
- 2025年河南地礦職業(yè)學院單招職業(yè)技能測試題庫(各地真題)
- 陶瓷行業(yè)安全生產(chǎn)培訓
- 新興技術交流及應用方案推進工作指引
- 電影知識競賽考試題(附答案)
- 安徽省合肥市蜀山區(qū)2025年中考物理一模模擬試卷附參考答案
- 2025年度河道承包合同:流域綜合治理與生態(tài)補償機制合同
- 2025年全球及中國企業(yè)雇主記錄 (EOR) 解決方案行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 電商直播運營(初級)營銷師-巨量認證考試題庫(附答案)
- 派出所民警進校園安全教育
- 江蘇省南京市2024年中考英語試題(含解析)
- 小說中心理活動題的應對策略-2025年高考語文一輪復習
評論
0/150
提交評論