




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
模塊三
使用數據庫數據表中存儲了數據后,根據系統(tǒng)功能需求按照一定條件進行簡單的數據查詢是最基本、最重要的操作,如查詢專家信息、查詢項目信息等。本任務主要介紹評標專家?guī)旃芾硐到y(tǒng)數據簡單查詢功能。任務描述任務2數據簡單查詢掌握SELECT基本語法12掌握使用SELECT語句進行簡單查詢的方法3掌握使用WHERE子句進行條件查詢的方法學會使用LIMIT子句限制返回行數5任務目標掌握掌握熟練運用掌握學會4熟練運用ORDERBY子句實現(xiàn)數據排序
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知識準備用于指定查詢返回的列。用于指定數據的來源。用于指定數據的查詢條件。用于對查詢結果進行分組。用于指定組的選擇條件。用于對查詢結果進行排序。用于限制返回的行數。是可選項,指定結果集中是否包含重復行。ALL是默認值,表示包含重復行。DISTINCT與DISTINCTROW為同義詞,表示去掉結果集中的重復行。select_expr可以是表中的列名,也可以是根據表中列計算的表達式。SELECT語句知識點1知識準備
SELECT語句的完整語法比較復雜,其主要子句可歸納如下:SELECT[ALL|DISTINCT|DISTINCTROW]目標列表達式FROM表名[WHERE條件表達式][GROUPBY分組依據][HAVING條件表達式][ORDERBY排序依據[ASC|DESC]][LIMIT行數]提示:SELECT語句中,子句的順序非常重要,可以省略可選子句,但這些子句必須按照語法格式規(guī)定的順序來使用。運算符分類運算符作用比較運算符>、>=、=、<、<=、<>、!=、<=>比較大小邏輯運算符AND或&&、OR或||、NOT或!用于多條件的邏輯連接范圍運算符BETWEEN…AND、NOTBETWEEN…AND判斷列值是否在指定范圍內列表運算符IN、NOTIN判斷列值是否為列表中的值字符匹配符LIKE、NOTLIKE判斷列值是否與指定的字符匹配格式相符空值判斷符ISNULL、ISNOTNULL判斷列值是否為空值WHERE子句知識點2WHERE子句用于指定查詢條件,過濾掉不符合條件的數據行。WHERE子句必須緊跟在FROM子句的后面。查詢條件中常用運算符見表1。知識準備表1查詢條件中常用運算符LIMIT子句知識點3知識準備查詢結果集的行數很多時,可以使用LIMIT子句來限制返回的行數。LIMIT子句的基本語法格式如下:例如,“LIMIT3”表示返回前3行記錄,“LIMIT2,6”表示返回從第3行開始的6行記錄?!癓IMIT2,6”等價于“LIMIT6OFFSET2”。提示:查詢結果集中第一行記錄的偏移量為0,而不是1。LIMIT{[offset,]row_count|row_countOFFSEToffset}指定返回的行數,必須是非負的整數常量。指定從offset+1行開始,返回row_count行。為可選項,默認為“0”,指定要返回的第一行在查詢結果集中的偏移量,必須是非負的整數常量。ORDERBY子句知識點4知識準備可以使用ORDERBY子句將查詢結果按一列或多列進行排序。其基本語法格式如下:ORDERBY{column_name|expr|position}[ASC|DESC],…指定用于排序的列。指定用于排序的表達式。指定用于排序的列在查詢結果集中的位置,通常是一個正整數。指定排序方式,“ASC”表示按升序排列,“DESC”表示按降序排列。默認值為“ASC”。ORDERBY子句知識點4知識準備使用ORDERBY子句時需要注意以下幾點:
ORDERBY子句中可以包含子查詢。
MySQL中排序時空值(NULL)被認為是最小值。
如果不使用ORDERBY子句,查詢結果集中數據行的順序是不可預料的。任務實施1使用SELECT語句選擇列2使用WHERE子句過濾數據3使用LIMIT子句限制返回行數4使用ORDERBY子句排序任務實施使用SELECT語句選擇列11.查詢部分列在很多情況下,用戶只對數據表中的部分列感興趣,通過SELECT語句可以“過濾”掉某些列,只顯示用戶需要的列。【例1】在部門信息表tdeptinfo中,查詢部門名稱sDeptName和部門主管sDeptManager。說明:SELECT后列名的先后順序可以與數據表中列的順序不一致,查詢結果集中列的順序與SELECT后列名的順序相同。任務實施使用SELECT語句選擇列2.查詢全部列將數據表中所有列都顯示出來有兩種方法:一種方法是在SELECT后面列出所有列名,當列較多時,這種方法比較繁瑣;另一種方法是使用通配符“*”,采用這種方法列出所有列,查詢結果集中列的順序與數據表中列的順序完全一致?!纠?】在部門信息表tdeptinfo中,查詢部門信息。注意:一般而言,除非確實需要數據表中所有的列,否則最好不要使用通配符“*”。雖然使用通配符能省事,不用明確列出所需列,但檢索不需要的列通常會降低檢索和應用程序的性能。1使用SELECT語句選擇列3.更改列標題數據表中列的名稱可能只是一個簡單的代碼,如部門信息表tdeptinfo中的部門主管采用sDeptManager作為列名,有時用戶無法理解這類列名的具體含義。為了增加查詢結果的可讀性,可以通過指定列別名的方式改變查詢結果的列標題。指定列別名的語法格式如下:列別名改變的只是查詢結果的列標題,并沒有改變數據表中的列名。colunm_name[AS]column_alias指定列名。指定列別名。1任務實施任務實施使用SELECT語句選擇列【例3】在部門信息表tdeptinfo中,查詢部門名稱sDeptName和部門主管sDeptManager,并要求查詢結果集中列標題顯示為“部門名”和“部門主管”。1使用SELECT語句選擇列4.查詢經過計算的列值SELECT子句中的select_expr不僅可以是數據表中的列,也可以是表達式,包括算術表達式、字符串常量或函數等?!纠?】
在專家信息表texpertinfo中,查詢專家姓名sName、性別sSex和年齡。分析:專家信息表texpertinfo中存儲的是專家的出生日期dBirthDate,專家的年齡可以通過計算得到,計算專家的年齡用到了兩個函數:YEAR(date):用于得到date日期中的年份。CURDATE():用于得到當前系統(tǒng)日期。使用表達式YEAR(CURDATE())-YEAR(dBirthDate),計算當前系統(tǒng)日期中的年份減去專家出生日期中的年份,結果就是專家的年齡。1任務實施使用SELECT語句選擇列5.去掉重復行【例5】在專家信息表texpertinfo中,查詢專家的學歷sDiploma。1執(zhí)行結果包含重復的學歷,如果想去掉查詢結果中的重復行,必須添加DISTINCT選項。任務實施任務實施使用SELECT語句選擇列說明:在一個SELECT語句中,DISTINCT只能出現(xiàn)一次,并且DISTINCT必須在所有的列名之前,否則會發(fā)生語法錯誤。對于DISTINCT選項來說,空值(NULL)被認為是相等的,不論有多少個空值(NULL),結果只返回一個。1執(zhí)行結果只有3行記錄,不再包含重復的行。使用SELECT語句選擇列6.替換查詢結果中的數據查詢時,如果希望得到某些列的查詢分析結果,而不是原始數據,例如,專家信息表中專家狀態(tài)iExpertStatus列中保存的是“1”或“0”,如果想知道專家狀態(tài)是“啟用”還是“停用”,就可以在SELECT語句中替換iExpertStatus列中的數據。1任務實施使用SELECT語句選擇列替換查詢結果中的數據,可以使用CASE表達式,其語法格式如下:執(zhí)行過程:逐條執(zhí)行WHEN語句,如果search_condition條件成立,則執(zhí)行相應的THEN后的statement_list語句。如果條件都不成立,則執(zhí)行ELSE后的statement_list語句。CASEWHENsearch_conditionTHENstatement_list[WHENsearch_conditionTHENstatement_list]…[ELSEstatement_list]END[AS]column_alias指定判斷條件。指定不同條件的執(zhí)行語句。指定列別名。1任務實施任務實施使用SELECT語句選擇列【例6】在專家信息表texpertinfo中,查詢專家姓名sName和專家狀態(tài)iExpertStatus,要求判斷查詢結果中專家狀態(tài)的值,如果專家狀態(tài)的值為“1”,則替換為“啟用”,否則替換為“停用”,同時結果集中列標題顯示為“姓名”和“專家狀態(tài)”。1使用WHERE子句過濾數據1.使用比較運算符構成查詢條件【例7】在專家信息表texpertinfo中,查詢專家劉貂蟬的專家編碼sExpertCode、姓名sName和技術職稱sTechnicalTitle。2任務實施使用WHERE子句過濾數據【例8】在專家信息表texpertinfo中,查詢年齡超過58歲的專家的專家編碼sExpertCode和姓名sName。2任務實施使用WHERE子句過濾數據2.使用邏輯運算符構成查詢條件WHERE子句中可以使用邏輯運算符把多個查詢條件連接起來,從而實現(xiàn)比較復雜的選擇查詢?!纠?】在專家信息表texpertinfo中,查詢80后女專家的姓名sName和年齡。2任務實施使用WHERE子句過濾數據【例10】在專家信息表texpertinfo中,查詢學歷sDiploma為“碩士研究生”或“博士研究生”的專家的專家編碼sExpertCode和姓名sName。注意:邏輯運算符AND和OR可用來連接多個查詢條件。如果這兩個運算符同時出現(xiàn)在一個WHERE子句中,AND的優(yōu)先級高于OR,可以用圓括號改變優(yōu)先級。2任務實施使用WHERE子句過濾數據3.使用范圍運算符構成查詢條件如果過濾數據使其列值在某個范圍內(包括邊界),就可以使用BETWEEN…AND;如果過濾數據使其列值不在某個范圍內,可以在BETWEEN前面加NOT。使用范圍運算符構成查詢條件的一般形式如下:[NOT]BETWEENexpression1ANDexpression2說明:表達式“expression1”的值不能大于“expression2”的值。2任務實施使用WHERE子句過濾數據【例11】在專家信息表texpertinfo中,查詢年齡在30~40歲之間的專家的專家編碼sExpertCode和姓名sName。2任務實施使用WHERE子句過濾數據4.使用列表運算符構成查詢條件如果過濾數據使其列值在某個集合內,就可以使用IN;如果過濾數據使其列值不在某個集合中,可在IN前面加NOT。使用列表運算符構成查詢條件的一般形式如下:[NOT]IN(expression[,…n])2任務實施使用WHERE子句過濾數據【例12】查詢技術職稱sTechnicalTitle為“教授”或“副教授”的專家的專家編碼sExpertCode和姓名sName。說明:IN運算符的作用類似于“邏輯或”,但比“邏輯或”更加方便靈活。2任務實施使用WHERE子句過濾數據5.使用字符匹配符構成查詢條件有時用戶對數據表中的數據了解不全面,如不能確定所要查詢專家的姓名,只知道他姓“王”,這時需要使用LIKE以及通配符來實現(xiàn)模糊匹配查詢。使用字符匹配符構成查詢條件的一般形式如下:SQL語言提供的通配符有“%”和“_”。
%(百分號):代表0個或任意多個字符。
_(下畫線):代表任意單個字符。如果要匹配的字符串本身就含有通配符“%”或“_”,就要使用ESCAPE'<換碼字符>'對通配符進行轉義。[NOT]LIKE'<匹配串>'[ESCAPE'<換碼字符>’]2任務實施使用WHERE子句過濾數據【例13】
查詢姓“王”的專家的姓名sName、性別sSex和工作單位sWorkUnit。2任務實施使用WHERE子句過濾數據【例14】
查詢姓“王”并且姓名只有兩個字的專家的姓名sName、性別sSex和工作單位sWorkUnit。2任務實施使用WHERE子句過濾數據6.使用空值判斷符構成查詢條件空值判斷符“ISNULL”用來判斷一個表達式的值是否為空值。使用ISNULL構成查詢條件的一般形式如下:【例15】查詢出生日期未知的專家的姓名sName、學歷sDiploma和出生日期dBirthDate。注意:這里的“IS”不能用等于號“=”代替。expressionIS[NOT]NULL2任務實施使用LIMIT子句限制返回行數【例16】
在專家信息表texpertinfo中,查詢專家姓名sName和性別sSex,只顯示5條記錄。3任務實施使用LIMIT子句限制返回行數【例17】
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何簽署承攬合同協(xié)議書
- 家禽疫苗免疫效果的監(jiān)測與評估
- 電商平臺合同協(xié)議書
- 紋繡多人合同協(xié)議書
- 2025年智慧農業(yè)的無人農場技術研發(fā)與應用示范項目可行性研究報告
- 水管閘閥項目可行性研究報告
- 太原氣動工具項目申請報告模板
- 2025年中國樟油項目創(chuàng)業(yè)計劃書
- 創(chuàng)業(yè)計劃書的引領教育
- 中國硼玻璃行業(yè)市場規(guī)模及未來投資方向研究報告
- 食品公司品控部工作管理手冊
- 人教新目標八年級上冊英語Unit 10 If you go to the party,youll have a great time!Section B-說課稿2
- 2024新高考I卷全國統(tǒng)一考試高考生物試題(真題+答案)
- 河北省石家莊市新華區(qū)2023-2024學年七年級下學期期末數學試題
- 湖南省邵陽市2024年八年級下學期英語期末質量檢測卷附答案
- QBT 3888-1999 鋁合金窗不銹鋼滑撐
- 女生穿搭技巧智慧樹知到期末考試答案章節(jié)答案2024年南昌大學
- (高清版)JTGT 3364-02-2019 公路鋼橋面鋪裝設計與施工技術規(guī)范
- 一般現(xiàn)在時和現(xiàn)在進行時經典練習題
- 水平螺旋輸送機設計計算及參數表
- 新漢語水平考試HSK一級真題(含聽力材料和答案)
評論
0/150
提交評論