版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章
數(shù)據(jù)查詢本章概述數(shù)據(jù)查詢是數(shù)據(jù)庫操作中最常用也是最重要的操作,是指從數(shù)據(jù)庫中獲取所需要的數(shù)據(jù)。在MySQL中使用SELECT語句來查詢數(shù)據(jù)。通過SELECT語句查詢數(shù)據(jù),有不同的查詢方式。不同的查詢方式可以獲得不同的數(shù)據(jù),開發(fā)人員可以根據(jù)需求選擇不同的查詢方式。本章學(xué)習(xí)目標(biāo)掌握SELECT查詢的語法結(jié)構(gòu),通過SELECT語句查詢所有字段、指定字段和指定數(shù)據(jù)的操作;掌握按條件查詢數(shù)據(jù)的方法;掌握常用的高級查詢方式,例如,對查詢結(jié)果排序、分組查詢、使用LIMIT限制查詢;掌握在查詢過程中使用聚合函數(shù)進(jìn)一步對查詢結(jié)果進(jìn)行加工;了解連接查詢、子查詢的操作,以及合并查詢結(jié)果;掌握在查詢過程中定義表和字段的別名;掌握常用的正則表達(dá)式在查詢中的應(yīng)用。目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09基本查詢語句7.1.1SELECT語句SELECT語句是最常用的查詢語句,它的使用方式有簡單的,也有復(fù)雜的。SELECT語句的基本語法如下。SELECTselectionlist//要查詢的內(nèi)容,選擇哪些列FROM數(shù)據(jù)表名//指定數(shù)據(jù)表WHEREprimary_constraint//查詢時需要滿足的條件,行必須滿足的條件GROUPBYgrouping_columns//如何對結(jié)果進(jìn)行分組ORDERBYsortingcloumns//如何對結(jié)果進(jìn)行排序HAVINGsecondary_constraint//查詢時滿足的第二條件LIMITcount//限定輸出的查詢結(jié)果基本查詢語句7.1.1SELECT語句-使用SELECT語句查詢單個數(shù)據(jù)表使用SELECT語句從某個數(shù)據(jù)表查詢數(shù)據(jù)時,首先要確定要查詢的列?!?”代表所有的列。例如,查詢db_library數(shù)據(jù)庫的tb_admin表中的所有數(shù)據(jù),代碼如下。USEdb_library;SELECT*FROMtb_admin;查詢結(jié)果如圖所示?;静樵冋Z句7.1.1SELECT語句-查詢數(shù)據(jù)表中的指定列查詢數(shù)據(jù)表中的多列,只要在SELECT后面指定要查詢的列名即可,多列之間用“,”分隔。例如,查詢tb_admin表中的admin_id和username列數(shù)據(jù):SELECTadmin_id,usernameFROMtb_admin;查詢結(jié)果如圖所示?;静樵冋Z句7.1.1SELECT語句-從一個或多個表中獲取數(shù)據(jù)確定所要查詢的數(shù)據(jù)在哪個表中,在對多個表進(jìn)行查詢時,同樣使用“,”對多個表進(jìn)行分隔。例如,從tb_book表和tb_category表中查詢出tb_book.book_id、tb_book.bookname、tb_category.cat_name和tb_book.price字段的值:SELECTtb_book.book_id,tb_book.bookname,tb_category.cat_name,tb_book.pricefromtb_category,tb_bookWHEREtb_book.cat_id=tb_category.cat_id;查詢結(jié)果如圖所示?;静樵冋Z句7.1.2查詢所有字段確定所要查詢的數(shù)據(jù)在哪個表中,在對多個表進(jìn)行查詢時,同樣使用“,”對多個表進(jìn)行分隔。例如,從tb_book表和tb_category表中查詢出tb_book.book_id、tb_book.bookname、tb_category.cat_name和tb_book.price字段的值:SELECTtb_book.book_id,tb_book.bookname,tb_category.cat_name,tb_book.pricefromtb_category,tb_bookWHEREtb_book.cat_id=tb_category.cat_id;查詢結(jié)果如圖所示?;静樵冋Z句7.1.3查詢指定字段查詢指定字段的數(shù)據(jù)可以使用下面的語法格式:SELECT字段名FROM表名;如果查詢多個字段,可以使用“,”對字段進(jìn)行分隔。例如,查詢圖書信息表tb_book中圖書的名稱、作者、價格、圖書唯一識別碼:SELECTbookname,author,price,ISBNFROMtb_book;基本查詢語句7.1.4查詢指定數(shù)據(jù)如果要從很多記錄中查詢出指定的記錄,則需要設(shè)定查詢的條件。設(shè)定查詢條件應(yīng)用的是WHERE子句,該子句可以實(shí)現(xiàn)很多復(fù)雜的條件查詢。例如,查詢名稱為Romero的管理員:SELECT*FROMtb_adminWHEREusername='Romero';目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09按條件查詢7.2.1帶關(guān)系運(yùn)算符的查詢帶關(guān)系運(yùn)算符的查詢,也就是將MySQL支持的關(guān)系運(yùn)算符引入數(shù)據(jù)庫查詢中。例如,從圖書管理數(shù)據(jù)庫db_library的圖書信息表tb_book中,查詢定價price大于40元的圖書。語句如下:SELECTbookname,author,priceFROMtb_bookWHEREprice>40;按條件查詢7.2.2帶IN關(guān)鍵字的查詢關(guān)鍵字IN可以判斷某個字段的值是否在指定的集合中。如果字段的值在集合中,則滿足查詢條件,返回該字段所屬記錄;如果不在集合中,則不滿足查詢條件,不返回該記錄。語法格式如下。SELECT*FROM表名WHERE條件[NOT]IN(元素1,元素2,…,元素n);例如:SELECTbook_id,bookname,authorFROMtb_bookWHEREauthorIN('明日科技','劉丹冰');按條件查詢7.2.3帶BETWEENAND關(guān)鍵字的查詢關(guān)鍵字BETWEENAND可以判斷某個字段的值是否在指定的范圍內(nèi)。如果字段的值在指定范圍內(nèi),則滿足查詢條件,該記錄將被查詢出來;如果不在指定范圍內(nèi),則不滿足查詢條件。其語法如下。SELECT*FROM表名WHERE條件[NOT]BETWEEN取值1AND取值2;例如:SELECTbookname,author,priceFROMtb_bookWHEREpriceBETWEEN30AND40;按條件查詢7.2.4空值查詢ISNULL關(guān)鍵字可以用來判斷字段的值是否為空值(NULL)。例如,為圖書信息表tb_book添加test字段,然后插入若干數(shù)據(jù)值,語句如下:ALTERTABLEtb_bookADDtestVARCHAR(50)NULL;按條件查詢7.2.5用關(guān)鍵字DISTINCT去除結(jié)果中的重復(fù)行使用DISTINCT關(guān)鍵字可以去除查詢結(jié)果中的重復(fù)記錄,語法格式如下。SELECTDISTINCT字段名FROM表名;例如,要查看tb_book表中有哪些書架上有書,語句如下:SELECTDISTINCTbookcaseFROMtb_book;按條件查詢7.2.6帶LIKE關(guān)鍵字的查詢LIKE屬于較常用的比較運(yùn)算符,可用于實(shí)現(xiàn)模糊查詢。它有兩種通配符:“%”和下畫線“_”?!?”可以匹配一個或多個字符,可以代表任意長度的字符串,長度可以為0。例如,“明%技”表示以“明”開頭、以“技”結(jié)尾的任意長度的字符串。該字符串可以代表明日科技、明日編程科技、明日圖書科技等字符串?!癬”只匹配一個字符。例如,m_n表示以m開頭、以n結(jié)尾的3個字符。中間的“_”可以是任意一個字符。按條件查詢7.2.7帶AND關(guān)鍵字的多條件查詢AND關(guān)鍵字可以用來聯(lián)合多個條件進(jìn)行查詢。使用AND關(guān)鍵字時,只有同時滿足所有查詢條件的記錄才會被查詢出來;如果不滿足查詢條件中的一個,那么這樣的記錄將被排除。AND關(guān)鍵字的語法格式如下。SELECT*FROM數(shù)據(jù)表名WHERE條件1AND條件2[…AND條件表達(dá)式n];判斷輸入的管理員賬號和密碼是否存在:SELECTbook_id,bookname,authorFROMtb_bookWHEREbooknameLIKE'%GO%'ANDauthor='劉丹冰';按條件查詢7.2.8帶OR關(guān)鍵字的多條件查詢使用OR關(guān)鍵字時,只要滿足查詢條件中的一個,那么此記錄就會被查詢出來。例如,根據(jù)作者查詢圖書信息:SELECTbook_id,bookname,authorFROMtb_bookWHEREauthor='明日科技'ORauthor='劉丹冰';目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢097.3高級查詢 使用ORDERBY關(guān)鍵字可以對查詢的結(jié)果進(jìn)行升序(ASC)或降序(DESC)排列。ORDERBY字段名[ASC|DESC];ASC表示按升序排列,DESC表示按降序排列。例如:SELECTbook_id,bookname,priceFROMtb_bookORDERBYpriceDESC;7.3.1對查詢結(jié)果排序7.3高級查詢 GROUPBY子句可以將數(shù)據(jù)劃分到不同的組中,實(shí)現(xiàn)對記錄進(jìn)行分組查詢。例如:使用GROUPBY關(guān)鍵字對tb_book表中bookcase字段進(jìn)行分組查詢,語句如下。SELECTbookcase,COUNT(*)FROMtb_bookGROUPBYbookcase;此外,還可以按多個字段進(jìn)行分組。7.3.2分組查詢7.3高級查詢 LIMIT子句可以對查詢結(jié)果的記錄條數(shù)進(jìn)行限定,控制輸出的行數(shù)。例如:SELECTbook_id,bookname,priceFROMtb_bookORDERBYpriceDESCLIMIT3;7.3.3使用LIMIT限制查詢結(jié)果數(shù)量目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09聚合函數(shù)查詢返回選擇集合中所有行的數(shù)目,包含NULL值的行:SELECTCOUNT(*)FROMtb_book;COUNT函數(shù)聚合函數(shù)查詢SUM()函數(shù)可以求出表中某個數(shù)值類型字段取值的總和。例如:使用SUM()函數(shù)統(tǒng)計tb_book表中總金額字段(total)的總和,語句如下。SELECTSUM(total)FROMtb_book;SUM函數(shù)聚合函數(shù)查詢AVG()函數(shù)可以求出表中某個數(shù)值類型字段取值的平均值。例如:使用AVG()函數(shù)求tb_book表中圖書價格(price)字段值的平均值,語句如下。SELECTAVG(price)FROMtb_book;AVG函數(shù)聚合函數(shù)查詢MAX()函數(shù)可以求出表中某個數(shù)值類型字段取值的最大值。例如,使用MAX()函數(shù)查詢tb_book表中price字段值的最大值,語句如下。SELECTMAX(price)FROMtb_book;MAX函數(shù)聚合函數(shù)查詢使用MIN()函數(shù)查詢tb_book表中price字段值的最小值。查詢語句如下。SELECTMIN(price)FROMtb_book;MIN函數(shù)目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09連接查詢內(nèi)連接(INNERJOIN)是SQL中的一種連接類型,用于將兩個或多個表中的記錄根據(jù)某個條件進(jìn)行匹配,并返回匹配的記錄。內(nèi)連接可以分為幾種類型:等值連接。在連接條件中使用等于號(=)運(yùn)算符比較被連接列的列值。非等值連接。在連接條件中使用除等于運(yùn)算符以外的其他比較運(yùn)算符,如大于、小于等。自連接。將一張表看作兩張表,通過別名區(qū)分,然后進(jìn)行連接查詢。內(nèi)連接查詢連接查詢【例7-22】使用內(nèi)連接查詢圖書的借閱信息。代碼如下。SELECTtb_borrow.book_id,tb_book.bookname,tb_borrow.borrowTime,tb_borrow.backTime,tb_borrow.ifbackFROMtb_book,tb_borrowWHEREtb_borrow.book_id=tb_book.book_id;內(nèi)連接查詢連接查詢外連接(OuterJoin)是一種SQLJOIN操作,它允許從一個表中選擇所有的記錄,而無論在另一個表中是否有匹配的記錄。如果記錄在另一個表中沒有匹配,那么結(jié)果集中的值為NULL。在左外連接查詢時,查詢左表所有數(shù)據(jù),以及兩張表交集部分的數(shù)據(jù)。語法格式如下:SELECT字段列表FROM表1LEFTOUTERJOIN表2ON條件…;右外連接(RIGHTJOIN)和左外連接恰好相反。右外連接包括右邊的所有數(shù)據(jù),以及兩張表交集部分?jǐn)?shù)據(jù)。表中不符合條件的數(shù)據(jù),在相應(yīng)列中填充NULL值。外連接查詢目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09子查詢IN運(yùn)算符可以檢測結(jié)果集中是否存在某個特定的值,如果檢測成功,則執(zhí)行外部的查詢。SELECTbook_id,bookname,authorFROMtb_bookWHEREbook_idIN(SELECTbook_idFROMtb_borrow);帶IN關(guān)鍵字的子查詢子查詢從歸還表tb_back中查詢圖書編號book_id等于1002的管理員(operator),然后查詢tb_admin表中姓名username為該管理員的信息,代碼如下。SELECT*FROMtb_adminWHEREusername=(SELECToperatorFROMtb_backWHEREbook_id=1002);帶比較運(yùn)算符的子查詢子查詢應(yīng)用帶EXISTS關(guān)鍵字的子查詢實(shí)現(xiàn)查詢已經(jīng)被借閱的圖書的信息,代碼如下。SELECTbook_id,bookname,authorFROMtb_bookWHEREEXISTS(SELECT*FROMtb_borrowWHEREtb_borrow.book_id=tb_book.book_id);帶EXISTS關(guān)鍵字的子查詢子查詢。使用ANY關(guān)鍵字時,只要滿足內(nèi)層查詢語句返回的結(jié)果中的任意一個,就可以通過該條件來執(zhí)行外層查詢語句。語法格式如下。列名比較運(yùn)算符ANY(子查詢)例如,從圖書信息表tb_book中查詢出非最低價格的全部圖書信息,主要是通過帶ANY關(guān)鍵字的子查詢實(shí)現(xiàn)查詢非最低圖書價格的圖書信息,示例代碼如下。SELECTbook_id,bookname,author,priceFROMtb_bookWHEREprice>ANY(SELECTMin(price)FROMtb_book);帶ANY關(guān)鍵字的子查詢子查詢使用ALL關(guān)鍵字時,只有滿足內(nèi)層查詢語句返回的所有結(jié)果,才可以執(zhí)行外層查詢語句。語法格式如下。列名比較運(yùn)算符ALL(子查詢)例如,查詢比圖書編號1001價格高的全部圖書信息,主要是通過帶ALL關(guān)鍵字的子查詢實(shí)現(xiàn),示例代碼如下。SELECTbook_id,bookname,author,priceFROMtb_bookWHEREprice>ALL(SELECTpriceFROMtb_bookWHEREbook_id=1001);帶ALL關(guān)鍵字的子查詢目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09合并查詢結(jié)果使用UNION關(guān)鍵字可以將多個結(jié)果集合并到一起,并且會去除相同記錄。假設(shè)有一個與歸還表tb_back結(jié)構(gòu)相同的數(shù)據(jù)表tb_back_copy1,查詢結(jié)果如圖所示。7.7.1使用UNION關(guān)鍵字合并查詢結(jié)果下面使用UNION關(guān)鍵字合并兩個表的查詢結(jié)果,語句如下。SELECT*FROMtb_backUNIONSELECT*FROMtb_back_copy1;查詢結(jié)果如圖所示。結(jié)果顯示,所有結(jié)果被合并,重復(fù)值被去除。7.7.1使用UNION關(guān)鍵字合并查詢結(jié)果UNIONALL關(guān)鍵字的使用方法類似于UNION關(guān)鍵字,也是將多個結(jié)果集合并到一起,但是該關(guān)鍵字不會去除相同記錄。下面使用UNIONALL關(guān)鍵字合并查詢結(jié)果,但是不去除重復(fù)值,代碼如下。SELECT*FROMtb_backUNIONALLSELECT*FROMtb_back_copy1;7.7.2使用UNIONALL關(guān)鍵字目錄01020304高級查詢按條件查詢聚合函數(shù)查詢基本查詢語句05連接查詢06子查詢07合并查詢結(jié)果定義表和字段的表明08使用正則表達(dá)式查詢09定義表和字段的別名使用左連接查詢實(shí)現(xiàn)查詢圖書的完整信息,并為圖書信息表tb_book指定別名為b
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年主管護(hù)師考試真題試題及答案
- 護(hù)士十四項(xiàng)制度試題及答案2025版
- 2025年全國工業(yè)機(jī)器人競賽題庫及答案
- 2025年司機(jī)年度工作總結(jié)例文
- 新員工入職三級安全教育題庫試卷含答案
- 2026校招:重慶股權(quán)服務(wù)集團(tuán)試題及答案
- 2026 年離婚協(xié)議書正規(guī)模板標(biāo)準(zhǔn)化
- 統(tǒng)編版(2024)七年級下冊語文教學(xué)工作計劃
- 調(diào)料公司生產(chǎn)部年終總結(jié)(3篇)
- 領(lǐng)導(dǎo)學(xué)(專升本)地質(zhì)大學(xué)期末開卷考試題庫及答案
- 光纖激光打標(biāo)機(jī)說明書
- 勞動者個人職業(yè)健康監(jiān)護(hù)檔案
- 《兩角和與差的正弦、余弦、正切公式》示范公開課教學(xué)PPT課件【高中數(shù)學(xué)人教版】
- 治理現(xiàn)代化下的高校合同管理
- 境外宗教滲透與云南邊疆民族地區(qū)意識形態(tài)安全研究
- GB/T 28920-2012教學(xué)實(shí)驗(yàn)用危險固體、液體的使用與保管
- GB/T 26389-2011衡器產(chǎn)品型號編制方法
- GB/T 16588-2009帶傳動工業(yè)用多楔帶與帶輪PH、PJ、PK、PL和PM型:尺寸
- 人大企業(yè)經(jīng)濟(jì)學(xué)考研真題-802經(jīng)濟(jì)學(xué)綜合歷年真題重點(diǎn)
- 建筑抗震鑒定標(biāo)準(zhǔn)課件
- 人教版二年級數(shù)學(xué)下冊《【全冊】完整版》優(yōu)質(zhì)課件
評論
0/150
提交評論