版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第5章章 查詢數(shù)據(jù)查詢數(shù)據(jù)查詢數(shù)據(jù)指從數(shù)據(jù)庫中獲取所需要的數(shù)據(jù)。查詢數(shù)據(jù)查詢數(shù)據(jù)指從數(shù)據(jù)庫中獲取所需要的數(shù)據(jù)。查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用,也是最重要的操作。用戶可以根據(jù)是數(shù)據(jù)庫操作中最常用,也是最重要的操作。用戶可以根據(jù)自己對數(shù)據(jù)的需求,使用不同的查詢方式。通過不同的查詢自己對數(shù)據(jù)的需求,使用不同的查詢方式。通過不同的查詢方式,可以獲得不同的數(shù)據(jù)。方式,可以獲得不同的數(shù)據(jù)。MySQL中是使用中是使用SELECT語語句來查詢數(shù)據(jù)的。在這一章中將講解的內(nèi)容包括。句來查詢數(shù)據(jù)的。在這一章中將講解的內(nèi)容包括。查詢語句的基本語法查詢語句的基本語法在單表上查詢數(shù)據(jù)在單表上查詢數(shù)據(jù)使用聚合函數(shù)查詢數(shù)據(jù)使
2、用聚合函數(shù)查詢數(shù)據(jù)多表上聯(lián)合查詢多表上聯(lián)合查詢子查詢子查詢合并查詢結(jié)果合并查詢結(jié)果為表和字段取別名為表和字段取別名使用正則表達式查詢使用正則表達式查詢5.1 基本查詢語句基本查詢語句查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用的操作。通過對數(shù)據(jù)查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最常用的操作。通過對數(shù)據(jù)庫的查詢,用戶可以從數(shù)據(jù)庫中獲取需要的數(shù)據(jù)。數(shù)據(jù)庫中庫的查詢,用戶可以從數(shù)據(jù)庫中獲取需要的數(shù)據(jù)。數(shù)據(jù)庫中可能包含著無數(shù)的表,表中可能包含著無數(shù)的記錄。因此,可能包含著無數(shù)的表,表中可能包含著無數(shù)的記錄。因此,要獲得所需的數(shù)據(jù)并非易事。要獲得所需的數(shù)據(jù)并非易事。MySQL中可以使用中可以使用SELECT語句來查詢數(shù)據(jù)。根據(jù)查詢
3、的條件的不同,數(shù)據(jù)庫系統(tǒng)會找語句來查詢數(shù)據(jù)。根據(jù)查詢的條件的不同,數(shù)據(jù)庫系統(tǒng)會找到不同的數(shù)據(jù)。通過到不同的數(shù)據(jù)。通過SELECT語句可以很方便的獲取所需的語句可以很方便的獲取所需的信息。信息。MySQL中,中,SELECT的基本語法形式如下:的基本語法形式如下:SELECT 屬性列表屬性列表 FROM 表名和視圖列表表名和視圖列表 WHERE 條件表達式條件表達式1 GROUP BY 屬性名屬性名1 HAVING 條件表達式條件表達式2 ORDER BY 屬性名屬性名2 ASC | DESC 5.2 單表查詢單表查詢單表查詢是指從一張表中查詢所需要的數(shù)據(jù)。查詢數(shù)單表查詢是指從一張表中查詢所需要
4、的數(shù)據(jù)。查詢數(shù)據(jù)時,可以從一張表中查詢數(shù)據(jù),也可以從多張表中同時查據(jù)時,可以從一張表中查詢數(shù)據(jù),也可以從多張表中同時查詢數(shù)據(jù)。兩者的查詢方式上有一定的區(qū)別。因為單表查詢只詢數(shù)據(jù)。兩者的查詢方式上有一定的區(qū)別。因為單表查詢只在一張表上進行操作,所以查詢比較簡單。本小節(jié)將講解在在一張表上進行操作,所以查詢比較簡單。本小節(jié)將講解在單表上查詢所有的字段、查詢指定的字段、查詢指定的行、單表上查詢所有的字段、查詢指定的字段、查詢指定的行、多條件查詢、查詢結(jié)果不重復(fù)、給查詢結(jié)果排序、分組查詢多條件查詢、查詢結(jié)果不重復(fù)、給查詢結(jié)果排序、分組查詢和用和用LIMIT限制查詢結(jié)果的數(shù)量等內(nèi)容。限制查詢結(jié)果的數(shù)量等內(nèi)
5、容。5.2.1 查詢所有字段查詢所有字段查詢所有字段是指查詢表中所有字段的數(shù)據(jù)。這種方查詢所有字段是指查詢表中所有字段的數(shù)據(jù)。這種方式可以將表中所有字段的數(shù)據(jù)都查詢出來。式可以將表中所有字段的數(shù)據(jù)都查詢出來。MySQL中有兩中有兩種方式可以查詢表中所有的字段。本小節(jié)將詳細(xì)講解這兩種種方式可以查詢表中所有的字段。本小節(jié)將詳細(xì)講解這兩種方法。方法。1列出表的所有字段列出表的所有字段2使用使用“*”查詢所有字段查詢所有字段 SELECT * FROM 表名表名;5.2.2 查詢指定字段查詢指定字段查詢數(shù)據(jù)時,可以在查詢數(shù)據(jù)時,可以在SELECT語句的語句的“屬性列表屬性列表”中列中列出所要查詢的字段
6、。這種方式可以指定需要查詢的字段,而出所要查詢的字段。這種方式可以指定需要查詢的字段,而不需要查詢出所有的字段。不需要查詢出所有的字段。下面查詢下面查詢employee表中表中num、name、sex和和homeaddr這四個字段的數(shù)據(jù)。這四個字段的數(shù)據(jù)。SELECT語句的代碼如下:語句的代碼如下:SELECT num, name, sex,homeaddr FROM employee;5.2.3 查詢指定記錄查詢指定記錄SELECT語句中可以設(shè)置查詢條件。用戶可以根據(jù)自己語句中可以設(shè)置查詢條件。用戶可以根據(jù)自己的需要來設(shè)置查詢條件,按條件進行查詢。查詢的結(jié)果必須的需要來設(shè)置查詢條件,按條件進
7、行查詢。查詢的結(jié)果必須滿足查詢條件。滿足查詢條件。例如,用戶需要查找例如,用戶需要查找d_id為為501的記錄,那么可以設(shè)置的記錄,那么可以設(shè)置“d_id=501”為查詢條件。這樣查詢結(jié)果中的記錄就都會滿為查詢條件。這樣查詢結(jié)果中的記錄就都會滿足足“d_id=501”這個條件。這個條件。WHERE子句可以用來指定查詢子句可以用來指定查詢條件。其語法規(guī)則如下:條件。其語法規(guī)則如下:WHERE 條件表達式條件表達式查詢條件查詢條件符號或關(guān)鍵字符號或關(guān)鍵字比較比較=, , , =, !=, , ! , ! SELECT COUNT(*) FROM employee ;5.3.2 SUM()函數(shù)函數(shù)S
8、UM()函數(shù)是求和函數(shù)。使用函數(shù)是求和函數(shù)。使用SUM()函數(shù)可以求出表中函數(shù)可以求出表中某個字段取值的總和。某個字段取值的總和。例如,例如,可以用可以用SUM()函數(shù)來求學(xué)生的函數(shù)來求學(xué)生的總成績??偝煽?。SUM()函數(shù)只能計算數(shù)值類型的字段。包括函數(shù)只能計算數(shù)值類型的字段。包括INT類型、類型、FLOAT類型、類型、DOUBLE類型、類型、DECIMAL類型等。字符類類型等。字符類型的字段不能使用型的字段不能使用SUM()函數(shù)進行計算。使用函數(shù)進行計算。使用SUM()函數(shù)計函數(shù)計算字符類型字段時,計算結(jié)果都為算字符類型字段時,計算結(jié)果都為0.5.3.3 AVG()函數(shù)函數(shù)AVG()函數(shù)是求
9、平均值的函數(shù)。使用函數(shù)是求平均值的函數(shù)。使用AVG()函數(shù)可以求函數(shù)可以求出表中某個字段取值的平均值。例如,可以用出表中某個字段取值的平均值。例如,可以用AVG()函數(shù)來函數(shù)來求平均年齡,也可以使用求平均年齡,也可以使用AVG()函數(shù)來求學(xué)生的平均成績。函數(shù)來求學(xué)生的平均成績。5.3.4 MAX()函數(shù)函數(shù)MAX()函數(shù)是求最大值的函數(shù)。使用函數(shù)是求最大值的函數(shù)。使用MAX()函數(shù)可以函數(shù)可以求出表中某個字段取值的最大值。求出表中某個字段取值的最大值。例如,例如,可以用可以用MAX()函數(shù)函數(shù)來查詢最大年齡,也可以使用來查詢最大年齡,也可以使用MAX()函數(shù)來求各科的最高成函數(shù)來求各科的最高成
10、績???。MAX()不僅僅適用于數(shù)值類型,也適用于字符類型。不僅僅適用于數(shù)值類型,也適用于字符類型。MAX()可以計算字符和字符串的最大值??梢杂嬎阕址妥址淖畲笾?。MAX()使用字符對使用字符對應(yīng)的應(yīng)的ASCII碼進行計算的。碼進行計算的。5.3.5 MIN()函數(shù)函數(shù)MIN()函數(shù)是求最小值的函數(shù)。使用函數(shù)是求最小值的函數(shù)。使用MIN()函數(shù)可以求函數(shù)可以求出表中某個字段取值的最小值。出表中某個字段取值的最小值。例如,例如,可以用可以用MIN()函數(shù)來函數(shù)來查詢最小年齡,也可以使用查詢最小年齡,也可以使用MIN()函數(shù)來求各科的最低成績函數(shù)來求各科的最低成績。5.4 連接查詢連接查詢連接
11、查詢是將兩個或兩個以上的表按某個條件連接起連接查詢是將兩個或兩個以上的表按某個條件連接起來,從中選取需要的數(shù)據(jù)。連接查詢是同時查詢兩個或兩個來,從中選取需要的數(shù)據(jù)。連接查詢是同時查詢兩個或兩個以上的表時使用的。當(dāng)不同的表中存在表示相同意義的字段以上的表時使用的。當(dāng)不同的表中存在表示相同意義的字段時,可以通過該字段來連接這幾個表。時,可以通過該字段來連接這幾個表。例如,學(xué)生表中有例如,學(xué)生表中有course_id字段來表示所學(xué)課程的課字段來表示所學(xué)課程的課程號,課程表中有程號,課程表中有num字段來表示課程號。那么,可以通過字段來表示課程號。那么,可以通過學(xué)生表中的學(xué)生表中的course_id字
12、段與課程表中的字段與課程表中的num字段來進行連接字段來進行連接查詢。連接查詢包括內(nèi)連接查詢和外連接查詢。本小節(jié)將詳查詢。連接查詢包括內(nèi)連接查詢和外連接查詢。本小節(jié)將詳細(xì)講解內(nèi)連接查詢和外連接查詢。同時,還會講解多個條件細(xì)講解內(nèi)連接查詢和外連接查詢。同時,還會講解多個條件結(jié)合在一起進行復(fù)合連接查詢。結(jié)合在一起進行復(fù)合連接查詢。5.4.1 內(nèi)連接查詢內(nèi)連接查詢內(nèi)連接查詢是一種最常用的連接查詢。內(nèi)連接查詢可內(nèi)連接查詢是一種最常用的連接查詢。內(nèi)連接查詢可以查詢兩個或兩個以上的表。為了更好的理解,暫時只講解以查詢兩個或兩個以上的表。為了更好的理解,暫時只講解兩個表的連接查詢。當(dāng)兩個表中存在表示相同意義
13、的字段時兩個表的連接查詢。當(dāng)兩個表中存在表示相同意義的字段時,可以通過該字段來連接這兩個表。當(dāng)該字段的值相等時,可以通過該字段來連接這兩個表。當(dāng)該字段的值相等時,就查詢出該記錄。就查詢出該記錄。5.4.2 外連接查詢外連接查詢外連接查詢可以查詢兩個或兩個以上的表。外連接查外連接查詢可以查詢兩個或兩個以上的表。外連接查詢也需要通過指定字段來進行連接。當(dāng)該字段取值相等時,詢也需要通過指定字段來進行連接。當(dāng)該字段取值相等時,可以查詢出該記錄。而且,該字段取值不相等的記錄也可以可以查詢出該記錄。而且,該字段取值不相等的記錄也可以查詢出來。外連接查詢包括左連接查詢和右連接查詢。其基查詢出來。外連接查詢包
14、括左連接查詢和右連接查詢。其基本語法如下:本語法如下:SELECT 屬性名列表屬性名列表 FROM 表名表名1 LEFT | RIGHT JOIN 表名表名2 ON 表名表名1.屬性名屬性名1=表名表名2.屬性名屬性名2 ;1左連接查詢左連接查詢2右連接查詢右連接查詢5.4.3 復(fù)合條件連接查詢復(fù)合條件連接查詢在連接查詢時,也可以增加其他的限制條件。通過多在連接查詢時,也可以增加其他的限制條件。通過多個條件的復(fù)合查詢,可以使查詢結(jié)果更加準(zhǔn)確。例如,個條件的復(fù)合查詢,可以使查詢結(jié)果更加準(zhǔn)確。例如,employee表和表和department表進行連接查詢時,可以限制表進行連接查詢時,可以限制ag
15、e字段的取值必須大于字段的取值必須大于24。這樣,可以更加準(zhǔn)確的查詢出年齡。這樣,可以更加準(zhǔn)確的查詢出年齡大于大于24歲的員工的信息。歲的員工的信息?!臼纠纠?-54】下面使用內(nèi)連接查詢下面使用內(nèi)連接查詢的方式查詢的方式查詢employee表和表和department。并且。并且employee表中的表中的age字段的值必須大于字段的值必須大于24。右連接的。右連接的SELECT語句如下:語句如下:SELECT num,name,employee.d_id,age,sex,d_name,functionFROM employee, departmentWHERE employee.d_id=
16、department.d_idAND age24;5.5 子查詢子查詢子查詢是將一個查詢語句嵌套在另一個查詢語句中。子查詢是將一個查詢語句嵌套在另一個查詢語句中。內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件。因為在特定情況下,一個查詢語句的條件需要另一個查件。因為在特定情況下,一個查詢語句的條件需要另一個查詢語句來獲取。詢語句來獲取。子查詢中可能包括子查詢中可能包括IN、NOT IN、ANY、ALL、EXISTS、NOT EXISTS等關(guān)鍵字。子查詢中還可能包含比等關(guān)鍵字。子查詢中還可能包含比較運算符,如較運算符,如“=”、“!=”
17、、“”和和“、=、=、等。其中,等。其中,與與!=是等價的。比較是等價的。比較運算符在子查詢時使用的非常廣泛。如查詢分?jǐn)?shù)、年齡、價運算符在子查詢時使用的非常廣泛。如查詢分?jǐn)?shù)、年齡、價格、收入等。格、收入等。從從computer_stu表中查詢獲得一等獎學(xué)金的學(xué)生的學(xué)號表中查詢獲得一等獎學(xué)金的學(xué)生的學(xué)號、姓名和分?jǐn)?shù)。各個等級的獎學(xué)金的最低分存儲在、姓名和分?jǐn)?shù)。各個等級的獎學(xué)金的最低分存儲在scholarship表中。表中。思考與練習(xí):在思考與練習(xí):在department表中查詢哪些部門沒有年表中查詢哪些部門沒有年齡為齡為24歲的員工。歲的員工。5.5.3 帶帶EXISTS關(guān)鍵字的子查詢關(guān)鍵字的子
18、查詢EXISTS關(guān)鍵字表示存在。使用關(guān)鍵字表示存在。使用EXISTS關(guān)鍵字時,內(nèi)關(guān)鍵字時,內(nèi)層查詢語句不返回查詢的記錄。而是返回一個真假值。如果層查詢語句不返回查詢的記錄。而是返回一個真假值。如果內(nèi)層查詢語句查詢到滿足條件的記錄,就返回一個真值(內(nèi)層查詢語句查詢到滿足條件的記錄,就返回一個真值(True)。否則,將返回一個假值()。否則,將返回一個假值(False)。當(dāng)返回的值是)。當(dāng)返回的值是真值時,外層查詢語句將進行查詢。當(dāng)返回值是假值時,外真值時,外層查詢語句將進行查詢。當(dāng)返回值是假值時,外層查詢語句不進行查詢或者查詢不出任何記錄。層查詢語句不進行查詢或者查詢不出任何記錄。5.5.4 帶
19、帶ANY關(guān)鍵字的子查詢關(guān)鍵字的子查詢ANY關(guān)鍵字表示滿足其中任一條件。使用關(guān)鍵字表示滿足其中任一條件。使用ANY關(guān)鍵字關(guān)鍵字時,只要滿足內(nèi)層查詢語句返回的結(jié)果中的任何一個,就可時,只要滿足內(nèi)層查詢語句返回的結(jié)果中的任何一個,就可以通過該條件來執(zhí)行外層查詢語句。例如,需要查詢哪些同以通過該條件來執(zhí)行外層查詢語句。例如,需要查詢哪些同學(xué)能夠獲得獎學(xué)金。那么,首先必須從獎學(xué)金表中查詢出各學(xué)能夠獲得獎學(xué)金。那么,首先必須從獎學(xué)金表中查詢出各種獎學(xué)金要求的最低分。只要一個同學(xué)的成績高于不同獎學(xué)種獎學(xué)金要求的最低分。只要一個同學(xué)的成績高于不同獎學(xué)金最低分的任何一個,這個同學(xué)就可以獲得獎學(xué)金。金最低分的任何
20、一個,這個同學(xué)就可以獲得獎學(xué)金。ANY關(guān)鍵字通常與比較運算符一起使用。關(guān)鍵字通常與比較運算符一起使用。5.5.5 帶帶ALL關(guān)鍵字的子查詢關(guān)鍵字的子查詢ALL關(guān)鍵字表示滿足所有條件。使用關(guān)鍵字表示滿足所有條件。使用ALL關(guān)鍵字時,關(guān)鍵字時,只有滿足內(nèi)層查詢語句返回的所有結(jié)果,才可以執(zhí)行外層查只有滿足內(nèi)層查詢語句返回的所有結(jié)果,才可以執(zhí)行外層查詢語句。例如,需要查詢哪些同學(xué)能夠獲得一等獎學(xué)金。首詢語句。例如,需要查詢哪些同學(xué)能夠獲得一等獎學(xué)金。首先必須從獎學(xué)金表中查詢出各種獎學(xué)金要求的最低分。因為先必須從獎學(xué)金表中查詢出各種獎學(xué)金要求的最低分。因為一等獎學(xué)金要求的分?jǐn)?shù)最高。只有當(dāng)同學(xué)的成績高于所
21、有獎一等獎學(xué)金要求的分?jǐn)?shù)最高。只有當(dāng)同學(xué)的成績高于所有獎學(xué)金最低分時,這個同學(xué)才可能獲得一等獎學(xué)金。學(xué)金最低分時,這個同學(xué)才可能獲得一等獎學(xué)金。ALL關(guān)鍵關(guān)鍵字也經(jīng)常與比較運算符一起使用。字也經(jīng)常與比較運算符一起使用。5.6 合并查詢結(jié)果合并查詢結(jié)果合并查詢結(jié)果是將多個合并查詢結(jié)果是將多個SELECT語句的查詢結(jié)果合并到一語句的查詢結(jié)果合并到一起。因為某種情況下,需要將幾個起。因為某種情況下,需要將幾個SELECT語句查詢出來的結(jié)果語句查詢出來的結(jié)果合并起來顯示。合并起來顯示。使用使用UNION關(guān)鍵字時,數(shù)據(jù)庫系統(tǒng)會將所有的查詢結(jié)果合關(guān)鍵字時,數(shù)據(jù)庫系統(tǒng)會將所有的查詢結(jié)果合并到一起,然后去除掉
22、相同的記錄。而并到一起,然后去除掉相同的記錄。而UNION ALL關(guān)鍵字則只關(guān)鍵字則只是簡單的合并到一起。其語法規(guī)則如下:是簡單的合并到一起。其語法規(guī)則如下:SELECT語句語句1UNION | UNION ALLSELECT語句語句2 UNION | UNION ALL .SELECT語句語句n ;5.7 為表和字段取別名為表和字段取別名在查詢時,可以為表和字段取一個別名。這個別名可在查詢時,可以為表和字段取一個別名。這個別名可以代替其指定的表和字段。本小節(jié)將詳細(xì)的講解怎樣為表和以代替其指定的表和字段。本小節(jié)將詳細(xì)的講解怎樣為表和字段取別名。字段取別名。5.7.1 為表取別名為表取別名當(dāng)表的
23、名稱特別長時,在查詢中直接使用表名很不方當(dāng)表的名稱特別長時,在查詢中直接使用表名很不方便。這時可以為表取一個別名。用這個別名來代替表的名稱便。這時可以為表取一個別名。用這個別名來代替表的名稱。MySQL中為表取別名的基本形式如下:中為表取別名的基本形式如下:表名表名 表的別名表的別名為為department表取個別名表取個別名d。SELECT * FROM department dWHERE d.d_id=1001為表取名必須保證該數(shù)據(jù)庫中沒有其他表與該別名相為表取名必須保證該數(shù)據(jù)庫中沒有其他表與該別名相同。如果相同,數(shù)據(jù)庫系統(tǒng)將不知道該名稱指代的是哪個表同。如果相同,數(shù)據(jù)庫系統(tǒng)將不知道該名稱
24、指代的是哪個表了。了。5.7.2 為字段取別名為字段取別名當(dāng)查詢數(shù)據(jù)時,當(dāng)查詢數(shù)據(jù)時,MySQL會顯示每個輸出列的名詞。默會顯示每個輸出列的名詞。默認(rèn)的情況下,顯示的列名是創(chuàng)建表是定義的列名。認(rèn)的情況下,顯示的列名是創(chuàng)建表是定義的列名。MySQL中為字段取別名的基本形式如下:中為字段取別名的基本形式如下:屬性名屬性名 AS 別名別名SELECT d_id AS department_id,d_name AS department_name FROM department;為字段取名必須保證該表中沒有其他字段與該別名相為字段取名必須保證該表中沒有其他字段與該別名相同。字段的別名只是顯示的時候替代
25、字段本來的名稱。在查同。字段的別名只是顯示的時候替代字段本來的名稱。在查詢條件中是不能使用新定義的別名的。詢條件中是不能使用新定義的別名的。5.8 使用正則表達式查詢使用正則表達式查詢正則表達式是用某種模式去匹配一類字符串的一個方正則表達式是用某種模式去匹配一類字符串的一個方式。例如,使用正則表達式可以查詢出包含式。例如,使用正則表達式可以查詢出包含A、B、C其中任其中任一字母的字符串。正則表達式的查詢能力比通配字符的查詢一字母的字符串。正則表達式的查詢能力比通配字符的查詢能力更強大,而且更加的靈活。正則表達式可以應(yīng)用于非常能力更強大,而且更加的靈活。正則表達式可以應(yīng)用于非常復(fù)雜查詢。復(fù)雜查詢
26、。MySQL中,使用中,使用REGEXP關(guān)鍵字來匹配查詢正則表達關(guān)鍵字來匹配查詢正則表達式。其基本形式如下:式。其基本形式如下:屬性名屬性名 REGEXP 匹配方式匹配方式正則表達式的模式字符正則表達式的模式字符含義含義匹配字符串開始的部分匹配字符串開始的部分$匹配字符串結(jié)束的部分匹配字符串結(jié)束的部分.代表字符串中的任意一個字代表字符串中的任意一個字符,包括回車和換行符,包括回車和換行字符集合字符集合匹配匹配“字符集合字符集合”中的任何中的任何一個字符一個字符字符集合字符集合匹配除了匹配除了“字符集合字符集合”以外以外的任何一個字符的任何一個字符S1|S2|S3匹配匹配S1、S2和和S3中的任
27、意中的任意一個字符串一個字符串*代表多個該符號之前的字符代表多個該符號之前的字符,包括,包括0和和1個個+代表多個該符號之前的字符代表多個該符號之前的字符,包括,包括1個個字符串字符串N字符串出現(xiàn)字符串出現(xiàn)N次次字符串字符串M,N字符串出現(xiàn)至少字符串出現(xiàn)至少M次次,最多最多N次次5.8.1 查詢以特定字符或字符串開頭的記錄查詢以特定字符或字符串開頭的記錄使用字符使用字符“”可以匹配以特定字符或字符串開頭的記可以匹配以特定字符或字符串開頭的記錄。錄?!臼纠纠肯旅鎻南旅鎻膇nfo表表name字段中查詢以字母字段中查詢以字母“L”開開頭的記錄。頭的記錄。SQL代碼如下:代碼如下:SELECT *
28、 FROM info WHERE name REGEXP L;5.8.2 查詢以特定字符或字符串結(jié)尾的記錄查詢以特定字符或字符串結(jié)尾的記錄使用字符使用字符“$”可以匹配以特定字符或字符串結(jié)尾的記可以匹配以特定字符或字符串結(jié)尾的記錄。錄?!臼纠纠肯旅鎻南旅鎻膇nfo表表name字段中查詢以字母字段中查詢以字母“c”結(jié)尾結(jié)尾的記錄。的記錄。SQL代碼如下:代碼如下:SELECT * FROM info WHERE name REGEXP c$;5.8.3 用符號用符號“.”來替代字符串中的任意一個來替代字符串中的任意一個字符字符用正則表達式來查詢時,可以用用正則表達式來查詢時,可以用“.”來替
29、代字符串中的來替代字符串中的任意一個字符。任意一個字符?!臼纠纠肯旅鎻南旅鎻膇nfo表表name字段中查詢以字母字段中查詢以字母“L”開開頭,以字母頭,以字母“y”結(jié)尾,中間有兩個任意字符的記錄。結(jié)尾,中間有兩個任意字符的記錄。SQL代代碼如下:碼如下:SELECT * FROM info WHERE name REGEXP L.y$;5.8.4 匹配指定字符中的任意一個匹配指定字符中的任意一個使用方括號(使用方括號()可以將需要查詢字符組成一個字符集)可以將需要查詢字符組成一個字符集。只要記錄中包含方括號中的任意字符,該記錄將會被查詢。只要記錄中包含方括號中的任意字符,該記錄將會被查詢出
30、來。出來。例如,通過例如,通過“abc”可以查詢包含可以查詢包含a、b、c這三個字母這三個字母中任何一個的記錄。中任何一個的記錄。使用方括號可以指定集合的區(qū)間。使用方括號可以指定集合的區(qū)間?!癮-z”表示從表示從a-z的所有字母的所有字母;“0-9”表示從表示從0-9的所有數(shù)字的所有數(shù)字;“a-z0-9”表示包含所有的小寫字母和數(shù)字。表示包含所有的小寫字母和數(shù)字?!癮-zA-Z”表示匹配所有字母。表示匹配所有字母?!臼纠纠肯旅鎻南旅鎻膇nfo表表name字段中查詢包含數(shù)字或者字段中查詢包含數(shù)字或者字母字母a、b和和c的記錄。的記錄。SQL代碼如下:代碼如下:SELECT * FROM in
31、fo WHERE name REGEXP 0-9a-c;5.8.5 匹配指定字符以外的字符匹配指定字符以外的字符使用使用“字符集合字符集合”可以匹配指定字符以外的字符??梢云ヅ渲付ㄗ址酝獾淖址??!臼纠纠肯旅鎻南旅鎻膇nfo表表name字段中查詢包含字段中查詢包含a到到w字母字母和數(shù)字以外的字符的記錄。和數(shù)字以外的字符的記錄。SQL代碼如下:代碼如下:SELECT * FROM info WHERE name REGEXP a-w0-9;5.8.6 匹配指定字符串匹配指定字符串正則表達式可以匹配字符串。當(dāng)表中的記錄包含這個正則表達式可以匹配字符串。當(dāng)表中的記錄包含這個字符串時,就可以將該記
32、錄查詢出來。如果指定多個字符串字符串時,就可以將該記錄查詢出來。如果指定多個字符串時,需要用符號時,需要用符號“|”隔開。只要匹配這些字符串中的任意一隔開。只要匹配這些字符串中的任意一個即可。個即可。每個字符串與每個字符串與”|”之間不能有空格。因為,查詢過程中之間不能有空格。因為,查詢過程中,數(shù)據(jù)庫系統(tǒng)會將空格也當(dāng)作一個字符。這樣就查詢不出想,數(shù)據(jù)庫系統(tǒng)會將空格也當(dāng)作一個字符。這樣就查詢不出想要的結(jié)果。要的結(jié)果。5.8.7 使用使用“*”和和“+”來匹配多個字符來匹配多個字符正則表達式中,正則表達式中,“*”和和“+”都可以匹配多個該符號之都可以匹配多個該符號之前的字符。但是,前的字符。但是
33、,“+”至少表示一個字符,而至少表示一個字符,而“*”可以表可以表示零個字符。示零個字符?!臼纠纠繌膹膇nfo表表name字段中查詢字母字段中查詢字母c之前出現(xiàn)過之前出現(xiàn)過a的記錄。的記錄。SELECT * FROM info WHERE name REGEXP a*c;SELECT * FROM info WHERE name REGEXP a+c;5.8.8 使用使用M或者或者M,N來指定字符串連續(xù)出來指定字符串連續(xù)出現(xiàn)的次數(shù)現(xiàn)的次數(shù)正則表達式中,正則表達式中,“字符串字符串M”表示字符串連續(xù)出現(xiàn)表示字符串連續(xù)出現(xiàn)M次;次;“字符串字符串M,N”表示字符串聯(lián)連續(xù)出現(xiàn)至少表示字符串聯(lián)連續(xù)
34、出現(xiàn)至少M次,最多次,最多N次。例如,次。例如,“ab2”表示字符串表示字符串“ab”連續(xù)出現(xiàn)兩次。連續(xù)出現(xiàn)兩次?!癮b2,4”表示字符串表示字符串“ab”連續(xù)出現(xiàn)至少兩次,最多四次。連續(xù)出現(xiàn)至少兩次,最多四次。正則表達式的功能非常強大,使用正則表達式可以靈正則表達式的功能非常強大,使用正則表達式可以靈活的設(shè)置字符串匹配的條件。而且,活的設(shè)置字符串匹配的條件。而且,Java語言、語言、C#語言、語言、PHP語言和語言和Shell腳本語言都使用正則表達式。多查詢有關(guān)腳本語言都使用正則表達式。多查詢有關(guān)正則表達式的資料,可以進一步了解關(guān)于正則表達式的知識正則表達式的資料,可以進一步了解關(guān)于正則表達式的知識。5.9 本章實例本章實例在本小節(jié)中將在在本小節(jié)中將在student表和表和score表上進行查詢。表上進行查詢。5.10 上機實踐上機實踐在在department表和表和employee
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二年級班主任年度考核個人總結(jié)例文(二篇)
- 2025年個人租房的合同協(xié)議(4篇)
- 2025年企業(yè)公轉(zhuǎn)私借款合同模板(2篇)
- 民航旅客運輸安全協(xié)議
- 文化產(chǎn)業(yè)土地交易居間協(xié)議
- 汽車維修傭金居間合同樣本
- 洗浴中心裝修安全合同
- 教育機構(gòu)貸款居間協(xié)議
- 汽車維修廠租賃居間協(xié)議
- 消費品以舊換新策略在市場中的適應(yīng)性與優(yōu)化
- 斷絕關(guān)系協(xié)議書范文參考(5篇)
- 量子力學(xué)課件1-2章-波函數(shù)-定態(tài)薛定諤方程
- 最新變態(tài)心理學(xué)課件
- 工程洽商記錄表格
- 2021最新版三年級下冊生命-生態(tài)-安全教案
- 【自考練習(xí)題】石家莊學(xué)院概率論與數(shù)理統(tǒng)計真題匯總(附答案解析)
- 農(nóng)村集體“三資”管理流程圖
- 高中英語 牛津譯林版必修第三冊 Unit 2詞匯全解
- (新版教材)粵教粵科版三年級下冊科學(xué)全冊教學(xué)課件PPT
- 混合痔的治療PPT課件
- 質(zhì)量管理體系中的術(shù)語
評論
0/150
提交評論