版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
模塊三
使用數(shù)據(jù)庫數(shù)據(jù)表中存儲了數(shù)據(jù)后,根據(jù)系統(tǒng)功能需求按照一定條件進(jìn)行簡單的數(shù)據(jù)查詢是最基本、最重要的操作,如查詢專家信息、查詢項目信息等。本任務(wù)主要介紹評標(biāo)專家?guī)旃芾硐到y(tǒng)數(shù)據(jù)簡單查詢功能。任務(wù)描述任務(wù)2數(shù)據(jù)簡單查詢掌握SELECT基本語法12掌握使用SELECT語句進(jìn)行簡單查詢的方法3掌握使用WHERE子句進(jìn)行條件查詢的方法學(xué)會使用LIMIT子句限制返回行數(shù)5任務(wù)目標(biāo)掌握掌握熟練運(yùn)用掌握學(xué)會4熟練運(yùn)用ORDERBY子句實現(xiàn)數(shù)據(jù)排序
SELECT語句的基本語法格式:SELECT[ALL|DISTINCT|DISTINCTROW]select_expr[,select_expr…]FROMtable_references[WHEREwhere_condition][GROUPBY{column_name|expr|position},…[WITHROLLUP]][HAVINGwhere_condition][ORDERBY{column_name|expr|position}[ASC|DESC],…][LIMIT{[offset,]row_count|row_countOFFSEToffset}]SELECT語句知識點1知識準(zhǔn)備用于指定查詢返回的列。用于指定數(shù)據(jù)的來源。用于指定數(shù)據(jù)的查詢條件。用于對查詢結(jié)果進(jìn)行分組。用于指定組的選擇條件。用于對查詢結(jié)果進(jìn)行排序。用于限制返回的行數(shù)。是可選項,指定結(jié)果集中是否包含重復(fù)行。ALL是默認(rèn)值,表示包含重復(fù)行。DISTINCT與DISTINCTROW為同義詞,表示去掉結(jié)果集中的重復(fù)行。select_expr可以是表中的列名,也可以是根據(jù)表中列計算的表達(dá)式。SELECT語句知識點1知識準(zhǔn)備
SELECT語句的完整語法比較復(fù)雜,其主要子句可歸納如下:SELECT[ALL|DISTINCT|DISTINCTROW]目標(biāo)列表達(dá)式FROM表名[WHERE條件表達(dá)式][GROUPBY分組依據(jù)][HAVING條件表達(dá)式][ORDERBY排序依據(jù)[ASC|DESC]][LIMIT行數(shù)]提示:SELECT語句中,子句的順序非常重要,可以省略可選子句,但這些子句必須按照語法格式規(guī)定的順序來使用。運(yùn)算符分類運(yùn)算符作用比較運(yùn)算符>、>=、=、<、<=、<>、!=、<=>比較大小邏輯運(yùn)算符AND或&&、OR或||、NOT或!用于多條件的邏輯連接范圍運(yùn)算符BETWEEN…AND、NOTBETWEEN…AND判斷列值是否在指定范圍內(nèi)列表運(yùn)算符IN、NOTIN判斷列值是否為列表中的值字符匹配符LIKE、NOTLIKE判斷列值是否與指定的字符匹配格式相符空值判斷符ISNULL、ISNOTNULL判斷列值是否為空值WHERE子句知識點2WHERE子句用于指定查詢條件,過濾掉不符合條件的數(shù)據(jù)行。WHERE子句必須緊跟在FROM子句的后面。查詢條件中常用運(yùn)算符見表1。知識準(zhǔn)備表1查詢條件中常用運(yùn)算符LIMIT子句知識點3知識準(zhǔn)備查詢結(jié)果集的行數(shù)很多時,可以使用LIMIT子句來限制返回的行數(shù)。LIMIT子句的基本語法格式如下:例如,“LIMIT3”表示返回前3行記錄,“LIMIT2,6”表示返回從第3行開始的6行記錄。“LIMIT2,6”等價于“LIMIT6OFFSET2”。提示:查詢結(jié)果集中第一行記錄的偏移量為0,而不是1。LIMIT{[offset,]row_count|row_countOFFSEToffset}指定返回的行數(shù),必須是非負(fù)的整數(shù)常量。指定從offset+1行開始,返回row_count行。為可選項,默認(rèn)為“0”,指定要返回的第一行在查詢結(jié)果集中的偏移量,必須是非負(fù)的整數(shù)常量。ORDERBY子句知識點4知識準(zhǔn)備可以使用ORDERBY子句將查詢結(jié)果按一列或多列進(jìn)行排序。其基本語法格式如下:ORDERBY{column_name|expr|position}[ASC|DESC],…指定用于排序的列。指定用于排序的表達(dá)式。指定用于排序的列在查詢結(jié)果集中的位置,通常是一個正整數(shù)。指定排序方式,“ASC”表示按升序排列,“DESC”表示按降序排列。默認(rèn)值為“ASC”。ORDERBY子句知識點4知識準(zhǔn)備使用ORDERBY子句時需要注意以下幾點:
ORDERBY子句中可以包含子查詢。
MySQL中排序時空值(NULL)被認(rèn)為是最小值。
如果不使用ORDERBY子句,查詢結(jié)果集中數(shù)據(jù)行的順序是不可預(yù)料的。任務(wù)實施1使用SELECT語句選擇列2使用WHERE子句過濾數(shù)據(jù)3使用LIMIT子句限制返回行數(shù)4使用ORDERBY子句排序任務(wù)實施使用SELECT語句選擇列11.查詢部分列在很多情況下,用戶只對數(shù)據(jù)表中的部分列感興趣,通過SELECT語句可以“過濾”掉某些列,只顯示用戶需要的列?!纠?】在部門信息表tdeptinfo中,查詢部門名稱sDeptName和部門主管sDeptManager。說明:SELECT后列名的先后順序可以與數(shù)據(jù)表中列的順序不一致,查詢結(jié)果集中列的順序與SELECT后列名的順序相同。任務(wù)實施使用SELECT語句選擇列2.查詢?nèi)苛袑?shù)據(jù)表中所有列都顯示出來有兩種方法:一種方法是在SELECT后面列出所有列名,當(dāng)列較多時,這種方法比較繁瑣;另一種方法是使用通配符“*”,采用這種方法列出所有列,查詢結(jié)果集中列的順序與數(shù)據(jù)表中列的順序完全一致?!纠?】在部門信息表tdeptinfo中,查詢部門信息。注意:一般而言,除非確實需要數(shù)據(jù)表中所有的列,否則最好不要使用通配符“*”。雖然使用通配符能省事,不用明確列出所需列,但檢索不需要的列通常會降低檢索和應(yīng)用程序的性能。1使用SELECT語句選擇列3.更改列標(biāo)題數(shù)據(jù)表中列的名稱可能只是一個簡單的代碼,如部門信息表tdeptinfo中的部門主管采用sDeptManager作為列名,有時用戶無法理解這類列名的具體含義。為了增加查詢結(jié)果的可讀性,可以通過指定列別名的方式改變查詢結(jié)果的列標(biāo)題。指定列別名的語法格式如下:列別名改變的只是查詢結(jié)果的列標(biāo)題,并沒有改變數(shù)據(jù)表中的列名。colunm_name[AS]column_alias指定列名。指定列別名。1任務(wù)實施任務(wù)實施使用SELECT語句選擇列【例3】在部門信息表tdeptinfo中,查詢部門名稱sDeptName和部門主管sDeptManager,并要求查詢結(jié)果集中列標(biāo)題顯示為“部門名”和“部門主管”。1使用SELECT語句選擇列4.查詢經(jīng)過計算的列值SELECT子句中的select_expr不僅可以是數(shù)據(jù)表中的列,也可以是表達(dá)式,包括算術(shù)表達(dá)式、字符串常量或函數(shù)等。【例4】
在專家信息表texpertinfo中,查詢專家姓名sName、性別sSex和年齡。分析:專家信息表texpertinfo中存儲的是專家的出生日期dBirthDate,專家的年齡可以通過計算得到,計算專家的年齡用到了兩個函數(shù):YEAR(date):用于得到date日期中的年份。CURDATE():用于得到當(dāng)前系統(tǒng)日期。使用表達(dá)式Y(jié)EAR(CURDATE())-YEAR(dBirthDate),計算當(dāng)前系統(tǒng)日期中的年份減去專家出生日期中的年份,結(jié)果就是專家的年齡。1任務(wù)實施使用SELECT語句選擇列5.去掉重復(fù)行【例5】在專家信息表texpertinfo中,查詢專家的學(xué)歷sDiploma。1執(zhí)行結(jié)果包含重復(fù)的學(xué)歷,如果想去掉查詢結(jié)果中的重復(fù)行,必須添加DISTINCT選項。任務(wù)實施任務(wù)實施使用SELECT語句選擇列說明:在一個SELECT語句中,DISTINCT只能出現(xiàn)一次,并且DISTINCT必須在所有的列名之前,否則會發(fā)生語法錯誤。對于DISTINCT選項來說,空值(NULL)被認(rèn)為是相等的,不論有多少個空值(NULL),結(jié)果只返回一個。1執(zhí)行結(jié)果只有3行記錄,不再包含重復(fù)的行。使用SELECT語句選擇列6.替換查詢結(jié)果中的數(shù)據(jù)查詢時,如果希望得到某些列的查詢分析結(jié)果,而不是原始數(shù)據(jù),例如,專家信息表中專家狀態(tài)iExpertStatus列中保存的是“1”或“0”,如果想知道專家狀態(tài)是“啟用”還是“停用”,就可以在SELECT語句中替換iExpertStatus列中的數(shù)據(jù)。1任務(wù)實施使用SELECT語句選擇列替換查詢結(jié)果中的數(shù)據(jù),可以使用CASE表達(dá)式,其語法格式如下:執(zhí)行過程:逐條執(zhí)行WHEN語句,如果search_condition條件成立,則執(zhí)行相應(yīng)的THEN后的statement_list語句。如果條件都不成立,則執(zhí)行ELSE后的statement_list語句。CASEWHENsearch_conditionTHENstatement_list[WHENsearch_conditionTHENstatement_list]…[ELSEstatement_list]END[AS]column_alias指定判斷條件。指定不同條件的執(zhí)行語句。指定列別名。1任務(wù)實施任務(wù)實施使用SELECT語句選擇列【例6】在專家信息表texpertinfo中,查詢專家姓名sName和專家狀態(tài)iExpertStatus,要求判斷查詢結(jié)果中專家狀態(tài)的值,如果專家狀態(tài)的值為“1”,則替換為“啟用”,否則替換為“停用”,同時結(jié)果集中列標(biāo)題顯示為“姓名”和“專家狀態(tài)”。1使用WHERE子句過濾數(shù)據(jù)1.使用比較運(yùn)算符構(gòu)成查詢條件【例7】在專家信息表texpertinfo中,查詢專家劉貂蟬的專家編碼sExpertCode、姓名sName和技術(shù)職稱sTechnicalTitle。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)【例8】在專家信息表texpertinfo中,查詢年齡超過58歲的專家的專家編碼sExpertCode和姓名sName。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)2.使用邏輯運(yùn)算符構(gòu)成查詢條件WHERE子句中可以使用邏輯運(yùn)算符把多個查詢條件連接起來,從而實現(xiàn)比較復(fù)雜的選擇查詢。【例9】在專家信息表texpertinfo中,查詢80后女專家的姓名sName和年齡。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)【例10】在專家信息表texpertinfo中,查詢學(xué)歷sDiploma為“碩士研究生”或“博士研究生”的專家的專家編碼sExpertCode和姓名sName。注意:邏輯運(yùn)算符AND和OR可用來連接多個查詢條件。如果這兩個運(yùn)算符同時出現(xiàn)在一個WHERE子句中,AND的優(yōu)先級高于OR,可以用圓括號改變優(yōu)先級。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)3.使用范圍運(yùn)算符構(gòu)成查詢條件如果過濾數(shù)據(jù)使其列值在某個范圍內(nèi)(包括邊界),就可以使用BETWEEN…AND;如果過濾數(shù)據(jù)使其列值不在某個范圍內(nèi),可以在BETWEEN前面加NOT。使用范圍運(yùn)算符構(gòu)成查詢條件的一般形式如下:[NOT]BETWEENexpression1ANDexpression2說明:表達(dá)式“expression1”的值不能大于“expression2”的值。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)【例11】在專家信息表texpertinfo中,查詢年齡在30~40歲之間的專家的專家編碼sExpertCode和姓名sName。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)4.使用列表運(yùn)算符構(gòu)成查詢條件如果過濾數(shù)據(jù)使其列值在某個集合內(nèi),就可以使用IN;如果過濾數(shù)據(jù)使其列值不在某個集合中,可在IN前面加NOT。使用列表運(yùn)算符構(gòu)成查詢條件的一般形式如下:[NOT]IN(expression[,…n])2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)【例12】查詢技術(shù)職稱sTechnicalTitle為“教授”或“副教授”的專家的專家編碼sExpertCode和姓名sName。說明:IN運(yùn)算符的作用類似于“邏輯或”,但比“邏輯或”更加方便靈活。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)5.使用字符匹配符構(gòu)成查詢條件有時用戶對數(shù)據(jù)表中的數(shù)據(jù)了解不全面,如不能確定所要查詢專家的姓名,只知道他姓“王”,這時需要使用LIKE以及通配符來實現(xiàn)模糊匹配查詢。使用字符匹配符構(gòu)成查詢條件的一般形式如下:SQL語言提供的通配符有“%”和“_”。
%(百分號):代表0個或任意多個字符。
_(下畫線):代表任意單個字符。如果要匹配的字符串本身就含有通配符“%”或“_”,就要使用ESCAPE'<換碼字符>'對通配符進(jìn)行轉(zhuǎn)義。[NOT]LIKE'<匹配串>'[ESCAPE'<換碼字符>’]2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)【例13】
查詢姓“王”的專家的姓名sName、性別sSex和工作單位sWorkUnit。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)【例14】
查詢姓“王”并且姓名只有兩個字的專家的姓名sName、性別sSex和工作單位sWorkUnit。2任務(wù)實施使用WHERE子句過濾數(shù)據(jù)6.使用空值判斷符構(gòu)成查詢條件空值判斷符“ISNULL”用來判斷一個表達(dá)式的值是否為空值。使用ISNULL構(gòu)成查詢條件的一般形式如下:【例15】查詢出生日期未知的專家的姓名sName、學(xué)歷sDiploma和出生日期dBirthDate。注意:這里的“IS”不能用等于號“=”代替。expressionIS[NOT]NULL2任務(wù)實施使用LIMIT子句限制返回行數(shù)【例16】
在專家信息表texpertinfo中,查詢專家姓名sName和性別sSex,只顯示5條記錄。3任務(wù)實施使用LIMIT子句限制返回行數(shù)【例17】
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF(陜) 019-2019 混凝土氯離子電通量測定儀校準(zhǔn)規(guī)范
- 《讓安全伴你我同行》課件
- 增強(qiáng)市場競爭力的行動計劃
- 研究員工激勵機(jī)制效果計劃
- 專業(yè)發(fā)展與教研活動的關(guān)系計劃
- 精細(xì)化管理在倉庫中的體現(xiàn)計劃
- 消防安全責(zé)任落實機(jī)制培訓(xùn)
- 小班情景劇表演項目的設(shè)計計劃
- 家用美容、保健電器具相關(guān)項目投資計劃書范本
- 《銷售管理培訓(xùn)》課件
- 山東省青島市2023年七年級上學(xué)期期末數(shù)學(xué)試題附答案
- 物品移交接收單(模板)
- 第二單元 地球上的大氣(二)大氣受熱過程和大氣運(yùn)動(課時作業(yè))高一地理上學(xué)期 大單元高效課堂 (人教2019必修第一冊)
- 工廠動力設(shè)施外包方案范本
- 2023-2024學(xué)年廣東省中山一中物理高二上期末統(tǒng)考試題含解析
- 2022年湖南師范大學(xué)心理學(xué)專業(yè)《普通心理學(xué)》期末試卷A(有答案)
- 物業(yè)糾紛溝通應(yīng)對實務(wù)與法律依據(jù)
- 【物理】2023-2024學(xué)年高一上人教版(2019)必修第一冊 相互作用-力(單元解讀課件)
- 班級活動安排表秋季學(xué)期德育主題教育活動安排表??
- 內(nèi)蒙12J9-1 室外工程建筑標(biāo)準(zhǔn)圖集
- 電源線測試報告
評論
0/150
提交評論