第3章-查詢(2010版)_第1頁
第3章-查詢(2010版)_第2頁
第3章-查詢(2010版)_第3頁
第3章-查詢(2010版)_第4頁
第3章-查詢(2010版)_第5頁
已閱讀5頁,還剩74頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、查詢查詢3.1 查詢一、查詢的特點(diǎn)一、查詢的特點(diǎn)u查詢是將表中滿足條件的記錄生成一個(gè)臨時(shí)表查詢是將表中滿足條件的記錄生成一個(gè)臨時(shí)表( (動態(tài)集動態(tài)集) )uAccess Access 允許用戶在前臺(選擇查詢設(shè)計(jì)視圖窗口)允許用戶在前臺(選擇查詢設(shè)計(jì)視圖窗口)構(gòu)造查詢,系統(tǒng)自動在后臺(構(gòu)造查詢,系統(tǒng)自動在后臺(SQLSQL視圖窗口)生成對視圖窗口)生成對應(yīng)的應(yīng)的SQLSQL語句。語句。u查詢對象僅僅保存查詢的結(jié)構(gòu)查詢對象僅僅保存查詢的結(jié)構(gòu)查詢所涉及到的表查詢所涉及到的表名和字段名、排序準(zhǔn)則、篩選條件等。名和字段名、排序準(zhǔn)則、篩選條件等。u運(yùn)行運(yùn)行查詢查詢所生成的動態(tài)集具有很大的靈活性,適合作所

2、生成的動態(tài)集具有很大的靈活性,適合作為為報(bào)表和窗體的數(shù)據(jù)源報(bào)表和窗體的數(shù)據(jù)源。u建立查詢之前建立查詢之前, ,每張表要建主碼及表與表之間的關(guān)系每張表要建主碼及表與表之間的關(guān)系. .二、查詢的類型二、查詢的類型p 選擇查詢選擇查詢p 參數(shù)查詢參數(shù)查詢p 交叉表查詢交叉表查詢p 動作查詢動作查詢( (操作查詢操作查詢) )p SQL SQL查詢查詢3.2 3.2 選擇查詢選擇查詢 是最常見、最簡單的查詢類型,它從一個(gè)或多是最常見、最簡單的查詢類型,它從一個(gè)或多個(gè)表中檢索數(shù)據(jù),并以數(shù)據(jù)表形式顯示結(jié)果。個(gè)表中檢索數(shù)據(jù),并以數(shù)據(jù)表形式顯示結(jié)果。l 使用向?qū)褂孟驅(qū) 使用設(shè)計(jì)視圖使用設(shè)計(jì)視圖例例1:1:

3、從教師表中只查詢教師的姓名從教師表中只查詢教師的姓名和職稱等。和職稱等。 下面是對應(yīng)的下面是對應(yīng)的SQL SQL 語句:語句: select select 姓名姓名, ,職稱職稱 from from 教師表教師表 1. 1. 查詢設(shè)計(jì)視圖的結(jié)構(gòu):查詢設(shè)計(jì)視圖的結(jié)構(gòu):l 上半部分上半部分-表表/ /查詢輸入?yún)^(qū)查詢輸入?yún)^(qū) 顯示查詢要使用的表或其它查詢;顯示查詢要使用的表或其它查詢;l 下半部分下半部分-設(shè)計(jì)網(wǎng)格設(shè)計(jì)網(wǎng)格 確定動態(tài)集所擁有的字段和篩選條件確定動態(tài)集所擁有的字段和篩選條件. .【字段字段】行行:設(shè)置查詢所涉及到的字段:設(shè)置查詢所涉及到的字段; ;【表表】行行:指明字段所歸屬的表:指明字

4、段所歸屬的表; ;【排序排序】行行:設(shè)置查詢的排序準(zhǔn)則:設(shè)置查詢的排序準(zhǔn)則; ;【顯示顯示】行行:確定相關(guān)字段是否在動態(tài)集中出現(xiàn)。當(dāng)復(fù)選框選中:確定相關(guān)字段是否在動態(tài)集中出現(xiàn)。當(dāng)復(fù)選框選中時(shí),該字段將在動態(tài)集中出現(xiàn)時(shí),該字段將在動態(tài)集中出現(xiàn); ;【條件條件】行行:設(shè)置查詢的篩選條件:設(shè)置查詢的篩選條件; ;【或或】行行:對同一字段的可選條件使用:對同一字段的可選條件使用“或或”2. 2. 運(yùn)行查詢運(yùn)行查詢 單擊工具欄上的單擊工具欄上的【運(yùn)行運(yùn)行】按鈕按鈕 單擊工具欄上的單擊工具欄上的【數(shù)據(jù)表視圖數(shù)據(jù)表視圖】按鈕按鈕 在在【數(shù)據(jù)庫數(shù)據(jù)庫】窗口,窗口, 雙擊要運(yùn)行的查詢雙擊要運(yùn)行的查詢 或選中該查

5、詢或選中該查詢, , 單擊單擊【打開打開】按鈕按鈕3. 3. 修改查詢修改查詢 撤消字段撤消字段 -按按deletedelete鍵鍵 插入字段插入字段 -拖動或雙擊該字段拖動或雙擊該字段 移動字段移動字段 -拖動拖動 命名字段命名字段 -右擊字段名右擊字段名屬性屬性 列標(biāo)題列標(biāo)題3.3 3.3 查詢條件查詢條件一、輸入查詢條件一、輸入查詢條件 查詢條件:查詢條件:即條件表達(dá)式;即條件表達(dá)式; 表達(dá)式:表達(dá)式:是算術(shù)或邏輯運(yùn)算符、常數(shù)、函數(shù)和字段名是算術(shù)或邏輯運(yùn)算符、常數(shù)、函數(shù)和字段名稱、控件和屬性的任意組合,計(jì)算結(jié)果為單個(gè)值。稱、控件和屬性的任意組合,計(jì)算結(jié)果為單個(gè)值。二、用邏輯運(yùn)算符組合條件

6、二、用邏輯運(yùn)算符組合條件And: 在同一行的不同單元格中設(shè)置條件,篩選滿足所有在同一行的不同單元格中設(shè)置條件,篩選滿足所有條件的記錄條件的記錄 Or: 在不同行中設(shè)置條件,篩選滿足任何一個(gè)條件的記錄在不同行中設(shè)置條件,篩選滿足任何一個(gè)條件的記錄 Not: 可以設(shè)置字段的不匹配值可以設(shè)置字段的不匹配值 注意:輸入邏輯運(yùn)算符時(shí),字母大小寫均可注意:輸入邏輯運(yùn)算符時(shí),字母大小寫均可例2:查詢學(xué)歷是“碩士”或“本科”的教師記錄學(xué)歷學(xué)歷=“=“碩士碩士”oror 學(xué)歷學(xué)歷=“=“本科本科”學(xué)歷學(xué)歷 inin (” (”碩士碩士”, ”, ”本科本科”) )同:同:例3:查詢學(xué)歷是“碩士”同時(shí)職稱是“副教

7、授”的教師記錄學(xué)歷學(xué)歷= = ”碩士碩士” and 職稱職稱= = ”副教授副教授”學(xué)歷學(xué)歷= ”= ”碩士碩士” ” or or 職稱職稱= ”= ”副教授副教授”例4:查詢學(xué)歷是“碩士”或職稱是“副教授”的教師記錄( (學(xué)歷學(xué)歷= “= “碩士碩士” ” and and 職稱職稱= “= “副教授副教授”) )or (or (學(xué)歷學(xué)歷= “= “本科本科” ” and and 職稱職稱=“=“教授教授”) )例5:查詢學(xué)歷是“碩士”同時(shí)職稱是“副教授”的教師記錄, 或者學(xué)歷是“本科”同時(shí)職稱是“教授”的記錄 三三、用關(guān)系運(yùn)算符組合條件、用關(guān)系運(yùn)算符組合條件 關(guān)系關(guān)系運(yùn)算符:運(yùn)算符: , ,

8、=, , ,=,=, = 例例6: 6: 查查“高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)” 課程不及格學(xué)生的學(xué)號和姓名課程不及格學(xué)生的學(xué)號和姓名學(xué)生學(xué)生選課課程趙麗3張三2王明1姓名學(xué)號50c3390c1285c2170c11成績課程編號學(xué)號計(jì)算機(jī)c4VBc3高級語言程序設(shè)計(jì)c2英語c1課程名稱課程編號80c33趙麗390c12趙麗385c21趙麗370c11趙麗380c33張三290c12張三285c21張三270c11張三280c33王明190c12王明185c21王明170c11王明1成績課程編號學(xué)生選課.學(xué)號姓名學(xué)生.學(xué)號學(xué)生學(xué)生選課學(xué)生.學(xué)號姓名學(xué)生選課.課程編號成績1王明c1701王明c2

9、852張三c1903趙麗c380學(xué)生學(xué)生選課SELECT 學(xué)生學(xué)生.學(xué)號學(xué)號,學(xué)生學(xué)生.姓名姓名FROM 學(xué)生學(xué)生,學(xué)生選課學(xué)生選課,課程課程WHERE 學(xué)生學(xué)生.學(xué)號學(xué)號=學(xué)生選課學(xué)生選課.學(xué)號學(xué)號 AND 課程課程.課程編號課程編號=學(xué)生選課學(xué)生選課.課程編號課程編號 AND 課程名稱課程名稱=高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì) AND 成績成績=#=#1985-1-11985-1-1# And # And 出生年月出生年月=#=#1986-12-311986-12-31#;#;或:或:WHERE 出生年月出生年月 between #1985-1-1# And #1986-12-31#;四、

10、用四、用Between運(yùn)算符組合條件運(yùn)算符組合條件 例如:查詢成績在例如:查詢成績在8090分之間的記錄。分之間的記錄。五、用五、用In運(yùn)算符組合條件運(yùn)算符組合條件 例如,查詢學(xué)歷是”碩士”或者學(xué)歷是”本科”的記錄六、用六、用LikeLike運(yùn)算符組合條件運(yùn)算符組合條件 LikeLike運(yùn)算符用于查找字段的部分值運(yùn)算符用于查找字段的部分值 格式:格式: Like Like 字符模式字符模式 “ “? ?”-”-任何一個(gè)字符任何一個(gè)字符 “ “* *”-可匹配零或多個(gè)字符可匹配零或多個(gè)字符 “ “# #”-”-可匹配一個(gè)數(shù)字可匹配一個(gè)數(shù)字 “ “ ”-”-方括號描述一個(gè)范圍方括號描述一個(gè)范圍 注

11、注: :參見如下參見如下 “ “AccessAccess中通配符參考中通配符參考”*(星號)匹配任意數(shù)目的字符,包括空格。可在字符串中的任意位置使用星號wh* 可找到what 、 white 和 why ,但不會找到 watch 或 awhile 。s*d 可找到“sad”和“started” ?匹配任意單個(gè)字母字符b?ll 可找到“ball”、“bell”和“bill” 匹配方括號內(nèi)的任意單個(gè)字符,包括其他通配符。需要查找通配符時(shí)可使用方括號baell 可找到“ball”和“bell”,但不會找到“bill”!匹配不包含在方括號內(nèi)的任何字符b!aell 可找到“bill”和“bull”,但不

12、會找到“ball”或“bell”-匹配某一字符范圍內(nèi)的任意一個(gè)字符。必須按升序指定范圍(a到z,而不是z到a)ba-cd 可找到“bad”、“bbd”和“bcd”#匹配任何單個(gè)數(shù)字字符1#3 可找到“103”、“113”和“123”3.4 3.4 查詢中的計(jì)算查詢中的計(jì)算 如果用戶關(guān)心的是每一個(gè)學(xué)生的總成績、如果用戶關(guān)心的是每一個(gè)學(xué)生的總成績、平均成績等匯總結(jié)果,要在查詢中執(zhí)行計(jì)算。平均成績等匯總結(jié)果,要在查詢中執(zhí)行計(jì)算。 u預(yù)定義計(jì)算預(yù)定義計(jì)算u自定義計(jì)算自定義計(jì)算一、預(yù)定義計(jì)算一、預(yù)定義計(jì)算 對查詢中的分組記錄或全部記錄進(jìn)行對查詢中的分組記錄或全部記錄進(jìn)行“總計(jì)總計(jì)”計(jì)算,計(jì)算, 比如:求

13、總和、平均值、計(jì)數(shù)、最小值、最大值、標(biāo)準(zhǔn)比如:求總和、平均值、計(jì)數(shù)、最小值、最大值、標(biāo)準(zhǔn)偏差或方差,偏差或方差,AccessAccess通過聚合函數(shù)來完成這些計(jì)算。通過聚合函數(shù)來完成這些計(jì)算。在查詢設(shè)計(jì)視圖中,單擊工具欄上的在查詢設(shè)計(jì)視圖中,單擊工具欄上的【總計(jì)總計(jì)】按鈕,則按鈕,則在設(shè)計(jì)網(wǎng)格中增加在設(shè)計(jì)網(wǎng)格中增加【總計(jì)總計(jì)】行。行。例例8: 統(tǒng)計(jì)統(tǒng)計(jì)全校教師的人數(shù)全校教師的人數(shù)SELECT Count(姓名姓名) AS 姓名之計(jì)數(shù)姓名之計(jì)數(shù)FROM 教師教師;單擊“總計(jì)”按鈕例例9 9:統(tǒng)計(jì)教師中男、女各多少人?統(tǒng)計(jì)教師中男、女各多少人?SELECT 性別, Count(姓名) AS 姓名之

14、計(jì)數(shù)FROM 教師GROUP BY 性別;例例10 10 : :統(tǒng)計(jì)教師不同職稱的人數(shù)是多少?統(tǒng)計(jì)教師不同職稱的人數(shù)是多少?SELECT 職稱職稱, Count(姓名姓名) AS 姓名之計(jì)數(shù)姓名之計(jì)數(shù)FROM 教師教師GROUP BY 職稱職稱;例例11:統(tǒng)計(jì)統(tǒng)計(jì)“高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)”課程的平均分、最高分、最低分課程的平均分、最高分、最低分SELECT 課程名稱課程名稱,Avg(成績成績) AS 平均值平均值, Max(成績成績) AS 最大值最大值,Min(成績成績) AS 最小值最小值FROM 課程課程,學(xué)生選課學(xué)生選課 where 課程課程.課程編號課程編號 = 學(xué)生選課學(xué)

15、生選課.課程編號課程編號 and 課程名稱課程名稱=高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)GROUP BY 課程名稱課程名稱嵌套查詢嵌套查詢 SELECT 高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì) AS 課程名稱課程名稱 , Avg(成績成績) AS 平平均值均值, Max(成績成績) AS 最大值最大值, Min(成績成績) AS 最小值最小值FROM 學(xué)生選課學(xué)生選課WHERE (學(xué)生選課學(xué)生選課.課程編號課程編號) In (select 課程編號課程編號 from 課程課程 where 課程名稱課程名稱=高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì));如:統(tǒng)計(jì)如:統(tǒng)計(jì)“ACCESS8”班的班的“計(jì)算機(jī)基礎(chǔ)與操作(

16、下)計(jì)算機(jī)基礎(chǔ)與操作(下)”課程的課程的平均成績平均成績?如:統(tǒng)計(jì)如:統(tǒng)計(jì)“ACCESS8”班班“女生女生”的的“計(jì)算機(jī)基礎(chǔ)與操作(下計(jì)算機(jī)基礎(chǔ)與操作(下)”課程的課程的平均成績平均成績? 二、自定義計(jì)算二、自定義計(jì)算 1、在設(shè)計(jì)網(wǎng)格中創(chuàng)建新的計(jì)算字段、在設(shè)計(jì)網(wǎng)格中創(chuàng)建新的計(jì)算字段 2、創(chuàng)建計(jì)算字段的方法:將表達(dá)式輸入到查詢設(shè)計(jì)網(wǎng)格中、創(chuàng)建計(jì)算字段的方法:將表達(dá)式輸入到查詢設(shè)計(jì)網(wǎng)格中的空的空“字段字段”單元格中,如表達(dá)式包含字段名,要用括號單元格中,如表達(dá)式包含字段名,要用括號將字段名稱括起來。將字段名稱括起來。列標(biāo)題P89例3-10 利用“選課成績表”計(jì)算班級的平均成績。例例12:12:按按

17、” ”性別性別”統(tǒng)計(jì)不同統(tǒng)計(jì)不同”職稱職稱”的人數(shù)是多少?的人數(shù)是多少?3.5 3.5 交叉表查詢交叉表查詢選擇查詢選擇查詢SELECT 性別性別, 職稱職稱, Count(職稱職稱)FROM 教師教師GROUP BY 性別性別, 職稱職稱;性別性別職稱職稱職稱之計(jì)數(shù)職稱之計(jì)數(shù)女女副教授副教授3 3女女講師講師2 2女女教授教授3 3女女助教助教1 1男男副教授副教授5 5男男講師講師1 1男男教授教授1 1選擇查詢的結(jié)果: 將表中的將表中的某個(gè)某個(gè)字段進(jìn)行分組并分別顯示在數(shù)據(jù)表的左字段進(jìn)行分組并分別顯示在數(shù)據(jù)表的左側(cè)和上部,然后在數(shù)據(jù)表的行列交叉處顯示其各種計(jì)算值。側(cè)和上部,然后在數(shù)據(jù)表的行

18、列交叉處顯示其各種計(jì)算值。( (類似類似ExcelExcel中的中的“數(shù)據(jù)透視表數(shù)據(jù)透視表”) ) 行標(biāo)題行標(biāo)題: : 如如“性別性別”列標(biāo)題列標(biāo)題: : 如如“職稱職稱” ” 值:值:位于行列交叉位置上的內(nèi)容,位于行列交叉位置上的內(nèi)容, 即要指定一個(gè)統(tǒng)計(jì)項(xiàng),如即要指定一個(gè)統(tǒng)計(jì)項(xiàng),如SumSum或或AvgAvg或或CountCount等等 交叉表查詢需指定三種字段:交叉表查詢需指定三種字段:例:交叉表反映每個(gè)學(xué)生各科成績?例:交叉表反映每個(gè)學(xué)生各科成績?交叉表查詢結(jié)構(gòu)交叉表查詢結(jié)構(gòu)3.6 參數(shù)查詢運(yùn)行查詢時(shí),再按提示輸入篩選條件。運(yùn)行查詢時(shí),再按提示輸入篩選條件。 在在【條件條件】行或行或【或

19、或】行中輸入一個(gè)放在方括號中的短語。行中輸入一個(gè)放在方括號中的短語。如:如: 請輸入您要查詢的學(xué)院名稱:請輸入您要查詢的學(xué)院名稱: between 輸入起始日期輸入起始日期 and 輸入終止日期輸入終止日期3.7 3.7 操作查詢操作查詢(Action Query)(Action Query)p操作查詢操作查詢: :是在選擇查詢的基礎(chǔ)上進(jìn)行的數(shù)據(jù)更新是在選擇查詢的基礎(chǔ)上進(jìn)行的數(shù)據(jù)更新p特點(diǎn):特點(diǎn):一個(gè)操作可以更改許多記錄一個(gè)操作可以更改許多記錄 p類型:類型: 生成表查詢生成表查詢 追加查詢追加查詢 更新查詢更新查詢 刪除查詢刪除查詢一、生成表查詢一、生成表查詢將從表或查詢中篩選出來的記錄集將

20、從表或查詢中篩選出來的記錄集生成一個(gè)新表生成一個(gè)新表。目的是便于永久保存。目的是便于永久保存。 注意:注意: 新表將從源表中繼承新表將從源表中繼承字段名稱、數(shù)據(jù)類型字段名稱、數(shù)據(jù)類型以及以及【字段大小字段大小】屬性屬性, ,不繼承其它的字段屬性以及表的主鍵。不繼承其它的字段屬性以及表的主鍵。 一定要運(yùn)行后,方能生成新表。一定要運(yùn)行后,方能生成新表。例例13 : 將將2003-2004年度第二學(xué)期年度第二學(xué)期“不及格不及格”的學(xué)生的學(xué)生內(nèi)容生成到一新表。內(nèi)容生成到一新表。二、追加查詢二、追加查詢 將從表或查詢中篩選出來的記錄添加到另一個(gè)表中去。將從表或查詢中篩選出來的記錄添加到另一個(gè)表中去。 該

21、表是已經(jīng)存在的表,還可以是另外一個(gè)數(shù)據(jù)庫的。該表是已經(jīng)存在的表,還可以是另外一個(gè)數(shù)據(jù)庫的。三、更新查詢?nèi)?、更新查?在指定的表中對篩選出來的記錄進(jìn)行更新操作。在指定的表中對篩選出來的記錄進(jìn)行更新操作。可一次更新許多記錄??梢淮胃略S多記錄。 如如: :每個(gè)人的基本工資都上調(diào)每個(gè)人的基本工資都上調(diào)10%10%;例14: 將“高級語言程序設(shè)計(jì)”課程成績小于 90分的增加2分例例15:15:將姓名為將姓名為“宋思思宋思思”的學(xué)生姓名改為的學(xué)生姓名改為“宋絲絲宋絲絲”四、建立刪除查詢四、建立刪除查詢 從表中刪除篩選出來的記錄從表中刪除篩選出來的記錄 將永久和不可逆地從表中刪除記錄將永久和不可逆地從表中

22、刪除記錄 刪除整條記錄,而不是指定字段中的數(shù)據(jù)刪除整條記錄,而不是指定字段中的數(shù)據(jù)3.8 SQL查詢查詢 SQL是結(jié)構(gòu)化查詢語言(是結(jié)構(gòu)化查詢語言(Structured Query Language)的縮寫,其功能包括數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)的縮寫,其功能包括數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制四個(gè)部分。據(jù)控制四個(gè)部分。9 9個(gè)命令動詞:個(gè)命令動詞:數(shù)據(jù)定義:數(shù)據(jù)定義:CREATE(創(chuàng)建創(chuàng)建)、DROP(刪除刪除)、ALTER(修改修改)數(shù)據(jù)操縱:數(shù)據(jù)操縱:INSERT(插入插入)、UPDATE(更新更新)、DELETE(刪除刪除)數(shù)據(jù)查詢:數(shù)據(jù)查詢:SELECT(選擇選擇) 數(shù)據(jù)控

23、制:數(shù)據(jù)控制:GRANT(授權(quán)授權(quán))、REVOKE(回收回收) 說明:說明:l 在在“設(shè)計(jì)設(shè)計(jì)”視圖視圖中創(chuàng)建查詢時(shí),系統(tǒng)在后臺構(gòu)造等效的中創(chuàng)建查詢時(shí),系統(tǒng)在后臺構(gòu)造等效的SQL語句。語句。l 有的查詢功能只能通過有的查詢功能只能通過SQL語句來實(shí)現(xiàn)。語句來實(shí)現(xiàn)。一、一、SELECT語句語句1、格式:、格式:SELECT ALL / DISTINCT */選擇列表選擇列表FROM 表名表名 WHERE條件表達(dá)式條件表達(dá)式GROUP BY HAVING ORDER BY ASC / DESC; SELECT語句的執(zhí)行過程語句的執(zhí)行過程:u 根據(jù)根據(jù)WHERE子句的檢索條件,從子句的檢索條件,從F

24、ROM子句指定子句指定的基本表中選取滿足條件的元組的基本表中選取滿足條件的元組(記錄記錄),再按照,再按照SELECT子句中指定的列,投影得到結(jié)果表。子句中指定的列,投影得到結(jié)果表。u 如果有如果有GROUP子句,則將查詢結(jié)果按照子句,則將查詢結(jié)果按照相同的值進(jìn)行分組。相同的值進(jìn)行分組。u 如果如果GROUP子句后有子句后有HAVING短語,則只輸出滿短語,則只輸出滿足足HAVING條件的元組。條件的元組。u 如果有如果有ORDER子句,查詢結(jié)果還要按照子句,查詢結(jié)果還要按照的值進(jìn)行排序的值進(jìn)行排序 在何處編寫在何處編寫SELECTSELECT語句?語句? 雙擊雙擊“在設(shè)計(jì)視圖中創(chuàng)建查詢在設(shè)計(jì)

25、視圖中創(chuàng)建查詢” 關(guān)閉關(guān)閉“顯示表顯示表”對對話框話框 單擊單擊“SQL視圖視圖”命令命令如何運(yùn)行如何運(yùn)行SQL查詢查詢:“查詢查詢”菜單菜單 “運(yùn)行運(yùn)行 !”命令命令 例例16 查詢學(xué)生的學(xué)號、姓名和性別。查詢學(xué)生的學(xué)號、姓名和性別。SELECT ALL 學(xué)號學(xué)號,姓名姓名,性別性別 FROM 學(xué)生學(xué)生; 例例17 查詢學(xué)生的全部信息。查詢學(xué)生的全部信息。SELECT * FROM 學(xué)生學(xué)生;例例18 查詢教師授課詳細(xì)情況。查詢教師授課詳細(xì)情況。 SELECT 教師教師.教師編號教師編號, 姓名姓名,教師授課教師授課.課程編號課程編號, 教師授課教師授課.班級班級ID, 授課時(shí)間授課時(shí)間,

26、授課地點(diǎn)授課地點(diǎn) from 教師教師,教師授課教師授課 where 教師教師.教師編號教師編號=教師授課教師授課.教師編號教師編號;2 2、多重條件查詢、多重條件查詢 WHEREWHERE子句可指定多查詢條件子句可指定多查詢條件, ,常用的運(yùn)算符常用的運(yùn)算符: :運(yùn)算符運(yùn)算符含義含義=, , =, , =, =#1970-01-01# and 出生年月 90;例例21 21 查詢成績在查詢成績在9090分以上的學(xué)生姓名、班級分以上的學(xué)生姓名、班級IDID和成績。和成績。當(dāng)當(dāng)WHEREWHERE子句需要多個(gè)查詢條件時(shí),使用邏輯運(yùn)算符子句需要多個(gè)查詢條件時(shí),使用邏輯運(yùn)算符ANDAND、OROR和和

27、NOTNOT將將其連結(jié)成復(fù)合的邏輯表達(dá)式。其連結(jié)成復(fù)合的邏輯表達(dá)式。優(yōu)先級優(yōu)先級由高到低為:由高到低為:NOT、ANDAND、OROR,可以使用括號改變優(yōu)先級。,可以使用括號改變優(yōu)先級。3 3、部分匹配查詢、部分匹配查詢當(dāng)不知道精確値時(shí),用戶可使用當(dāng)不知道精確値時(shí),用戶可使用LIKELIKE或或NOT LIKENOT LIKE進(jìn)進(jìn)行部分匹配查詢(也稱模糊查詢)行部分匹配查詢(也稱模糊查詢)LIKELIKE的格式:的格式: LIKE LIKE 屬性名必須為字符型,字符串常量可包含如下符號:屬性名必須為字符型,字符串常量可包含如下符號: * :表示任意長度的字符串表示任意長度的字符串 ? :表示任

28、意單個(gè)字符表示任意單個(gè)字符例例22 查詢所有姓張的教師的教師編號和姓名查詢所有姓張的教師的教師編號和姓名SELECT 教師編號,姓名 FROM 教師WHERE 姓名 LIKE “張*” ;例例23 查詢姓名中第二個(gè)漢字是查詢姓名中第二個(gè)漢字是“萬萬”的教師編號和姓名的教師編號和姓名 SELECT 教師編號,姓名 FROM 教師 WHERE 姓名 LIKE “?萬*” ;雙引號內(nèi)有無空格不等價(jià)4 4、常用庫函數(shù)及統(tǒng)計(jì)匯總查詢、常用庫函數(shù)及統(tǒng)計(jì)匯總查詢函數(shù)名稱函數(shù)名稱功能功能AVGAVG按列計(jì)算平均值按列計(jì)算平均值SUMSUM按列計(jì)算值的總和按列計(jì)算值的總和MAXMAX求一列中的最大值求一列中的最

29、大值MINMIN求一列中的最小值求一列中的最小值COUNTCOUNT按列值計(jì)個(gè)數(shù)按列值計(jì)個(gè)數(shù)注注:Count(:Count(* *) ) 會計(jì)算出包含會計(jì)算出包含NullNull字段在內(nèi)的所有記錄的數(shù)目字段在內(nèi)的所有記錄的數(shù)目 例例24 求學(xué)校中共有多少個(gè)學(xué)院求學(xué)校中共有多少個(gè)學(xué)院 SELECT COUNT(學(xué)院代碼學(xué)院代碼) AS 學(xué)院數(shù)學(xué)院數(shù) FROM 學(xué)院學(xué)院 例例25 利用特殊函數(shù)利用特殊函數(shù)COUNT(*)求學(xué)生的總數(shù)求學(xué)生的總數(shù) SELECT COUNT(*) FROM 學(xué)生學(xué)生如如“姓名姓名”字段中含有空值,比較下面語句的結(jié)字段中含有空值,比較下面語句的結(jié)果?果? SELECT

30、count(姓名姓名) FROM 學(xué)生學(xué)生;SELECT 課程編號課程編號,max(成績成績) as gradeFROM 學(xué)生選課學(xué)生選課Group by 課程編號課程編號如何求某門課程的最高分?如何求某門課程的最高分? SELECT max(成績成績) FROM 學(xué)生選課學(xué)生選課 WHERE 課程編號課程編號=“c2”;例例26: 求求“學(xué)生選課學(xué)生選課”表中成績的最高分表中成績的最高分?SELECT max(成績成績)FROM 學(xué)生選課學(xué)生選課 如何求每門課程的最高分如何求每門課程的最高分?學(xué)號學(xué)號課程編號課程編號成績成績1 1c1c170701 1c2c285852 2c1c190902

31、 2c2c250503 3c2c280803 3c3c37575學(xué)號學(xué)號課程編號課程編號成績成績1 1c1c170702 2c1c190901 1c2c285852 2c2c250503 3c2c280803 3c3c37575例例27: 求學(xué)號為求學(xué)號為”0312010151”學(xué)生的平均分學(xué)生的平均分SELECT AVG(成績成績) AS 平均分平均分FROM 學(xué)生選課學(xué)生選課WHERE 學(xué)號學(xué)號=“0312010151”;問題問題: 如何求每個(gè)同學(xué)的平均分如何求每個(gè)同學(xué)的平均分? 注意:注意:SUM和和AVG只能對只能對數(shù)值型數(shù)值型字段進(jìn)行計(jì)算。字段進(jìn)行計(jì)算。 課程編號課程編號gradeg

32、radec1c19090c2c28585c3c375755、分組查詢、分組查詢 GROUP BY將查詢結(jié)果按屬性列進(jìn)行分組,每組在屬將查詢結(jié)果按屬性列進(jìn)行分組,每組在屬性列或?qū)傩粤薪M合上具有相同的值。性列或?qū)傩粤薪M合上具有相同的值。例例28: 求每個(gè)同學(xué)的平均分求每個(gè)同學(xué)的平均分?SELECT 學(xué)號學(xué)號, AVG(成績成績) AS 平均分平均分FROM 學(xué)生選課學(xué)生選課Group by 學(xué)號學(xué)號; GROUP BY按學(xué)號的值分組,對每一組使用函數(shù)按學(xué)號的值分組,對每一組使用函數(shù)sum和和avg進(jìn)行計(jì)算,統(tǒng)計(jì)出每個(gè)同學(xué)的平均分進(jìn)行計(jì)算,統(tǒng)計(jì)出每個(gè)同學(xué)的平均分例例29: 查詢每個(gè)同學(xué)的學(xué)號及其選課

33、門數(shù)查詢每個(gè)同學(xué)的學(xué)號及其選課門數(shù)SELECT 學(xué)號學(xué)號,COUNT(*) AS 選課門數(shù)選課門數(shù)FROM 學(xué)生選課學(xué)生選課GROUP BY 學(xué)號學(xué)號; 若在分組后還要按照一定的條件進(jìn)行篩選,則需使用若在分組后還要按照一定的條件進(jìn)行篩選,則需使用HAVING子句。子句。 例例30: 查詢選修查詢選修2門及門及2門以上課程的學(xué)生學(xué)號和選課門數(shù)門以上課程的學(xué)生學(xué)號和選課門數(shù) SELECT 學(xué)號學(xué)號,COUNT(*) AS 選課門數(shù)選課門數(shù)FROM 學(xué)學(xué)生生選課選課GROUP BY 學(xué)號學(xué)號 HAVING COUNT(*)=2 在一個(gè)查詢中同時(shí)使用在一個(gè)查詢中同時(shí)使用WHEREWHERE、GROUP

34、 BYGROUP BY和和HAVINGHAVING時(shí),順序是:時(shí),順序是: WHEREWHEREGROUP BYGROUP BYHAVINGHAVING WHEREWHERE與與HAVINGHAVING子句的區(qū)別子句的區(qū)別: :WHEREWHERE子句作用于基本表或視圖,從中選擇子句作用于基本表或視圖,從中選擇滿足條件的元組;滿足條件的元組;HAVINGHAVING子句作用于組,選擇滿足條件的組,子句作用于組,選擇滿足條件的組,用于用于GROUP BYGROUP BY子句之后。子句之后。6、查詢嵌套、查詢嵌套 在WHERE子句中包含一個(gè)形如SELECT-FROM-WHERE的查詢塊,此查詢塊稱

35、為子查詢或嵌套查詢,包含子查詢的語句稱為父查詢或外部查詢。 嵌套查詢可以將一系列簡單查詢構(gòu)成復(fù)雜查詢,增強(qiáng)查詢能力。二、二、SQLSQL特定查詢特定查詢 聯(lián)合查詢聯(lián)合查詢 傳遞查詢傳遞查詢 數(shù)據(jù)定義查詢數(shù)據(jù)定義查詢 子查詢子查詢注注: :必須直接在必須直接在“SQL”SQL”視圖中創(chuàng)建視圖中創(chuàng)建 SQL SQL 語句。語句。SELECT 城市城市,公司名稱公司名稱,聯(lián)系人姓名聯(lián)系人姓名,客戶客戶 AS 關(guān)系關(guān)系 FROM 客戶客戶UNION SELECT 城市城市,公司名稱公司名稱,聯(lián)系人姓名聯(lián)系人姓名,供應(yīng)商供應(yīng)商FROM 供應(yīng)商供應(yīng)商ORDER BY 城市城市, 公司名稱公司名稱;1.聯(lián)合

36、查詢聯(lián)合查詢(可以合并兩個(gè)表中的數(shù)據(jù)可以合并兩個(gè)表中的數(shù)據(jù)) 2.傳遞查詢傳遞查詢Access將查詢傳遞給另一個(gè)數(shù)據(jù)庫來執(zhí)行。可直接將命令發(fā)送到符合ODBC(Open Data Base Connect 開放數(shù)據(jù)庫連接)標(biāo)準(zhǔn)的數(shù)據(jù)庫服務(wù)器(如 SQL Server)中。 創(chuàng)建傳遞查詢時(shí),需要完成兩項(xiàng)工作: 設(shè)置要連接的數(shù)據(jù)庫; 在SQL窗口中輸入SQL語句。 3. 3.數(shù)據(jù)定義查詢數(shù)據(jù)定義查詢 數(shù)據(jù)定義查詢可以創(chuàng)建、刪除或修改表。 (1) (1)插入數(shù)據(jù)記錄插入數(shù)據(jù)記錄把新的記錄插入到一個(gè)已存在的表中把新的記錄插入到一個(gè)已存在的表中INSERT INTO INSERT INTO ( (,) V

37、ALUES() VALUES()例例33:INSERT INTO 產(chǎn)品產(chǎn)品 VALUES(10001, 電視機(jī)電視機(jī), 2500)(2) 更新記錄更新記錄對表中的一行或多行記錄的某些列值進(jìn)行修改。對表中的一行或多行記錄的某些列值進(jìn)行修改。UPDATE SET = ,=WHERE 是指要修改的表是指要修改的表 SET給出要修改的列及修改后的值給出要修改的列及修改后的值 WHERE指定待修改的記錄應(yīng)滿足的條件,指定待修改的記錄應(yīng)滿足的條件,WHERE省略時(shí),則修改表中的所有記錄。省略時(shí),則修改表中的所有記錄。 例例34: UPDATE 教師教師 SET 學(xué)歷學(xué)歷=“碩士碩士” WHERE 教師編號

38、教師編號=“5101005例35:將每個(gè)同學(xué)的成績都增加5分UPDATE 學(xué)生選課學(xué)生選課 SET 成績成績=成績成績+5 例36(SQL查詢)將“高級語言程序設(shè)計(jì)”課程成績小于90分的增加2分Update 學(xué)生選課學(xué)生選課 Set 成績成績=成績成績+2Where 成績成績90 and 課程編號課程編號 in (select 課程編號課程編號 from 課程課程 where 課程名稱課程名稱=“高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)”) (3)刪除數(shù)據(jù)記錄刪除數(shù)據(jù)記錄 刪除表中的一行或多行記錄刪除表中的一行或多行記錄 格式為:格式為: DELETE FROM WHERE 是指要?jiǎng)h除數(shù)據(jù)的表。是指要?jiǎng)h除數(shù)據(jù)的表。 WHERE指定待刪除的記錄應(yīng)當(dāng)滿足的條件,指定待刪除的記錄應(yīng)當(dāng)滿足的條件,WHERE省略時(shí),刪除表中的所有記錄。省略時(shí),刪除表中的所有記錄。 (4)創(chuàng)建表創(chuàng)建表CREATE TABLE例例37:37:CREATE TABLE 產(chǎn)品產(chǎn)品 (產(chǎn)品編號產(chǎn)品編號 CHAR(5), 名稱名稱 CHAR(10),單價(jià)單價(jià) NUMERIC) (5)刪除表刪除表DROP TABLE例例38: Drop table 產(chǎn)品產(chǎn)品4.子查詢 在Where子句

溫馨提示

  • 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

提交評論