這篇文章主要介紹MySQL常用功能有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司,提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
連接到MySQL時(shí)不會由數(shù)據(jù)庫打開,所以首先要做的就是打開一個(gè)數(shù)據(jù)庫:
USE user
USE后面加上想要打開的數(shù)據(jù)庫,如果不知道數(shù)據(jù)庫的名字,使用SHOW DATABASES查看,使用SHOW TABLES可以查看一個(gè)數(shù)據(jù)庫中的表,當(dāng)然也可以查看表中的列SHOW user_id FROM user,它對每個(gè)字段返回一行,行中包含字段名、數(shù)據(jù)類型、是否允許NULL 、鍵信息、默認(rèn)值以及其他信息(DESCRIBE user是上面語句的快捷方式)
為了使用SELECT 檢索表數(shù)據(jù),必須至少給出兩條信息——想選擇什么,以及從什么地方選擇。
所需的列名在SELECT 關(guān)鍵字之后給出,F(xiàn)ROM 關(guān)鍵字指出從其中檢索數(shù)據(jù)的表名。
要想從一個(gè)表中檢索多個(gè)列,使用相同的SELECT 語句。唯一的不同是必須在SELECT 關(guān)鍵字后給出多個(gè)列名,列名之間必須以逗號分隔。
使用DISTINCT關(guān)鍵字可以只檢索出不同值的行,重復(fù)的不會再顯示(注意: DISTINCT 關(guān)鍵字應(yīng)用于所有列而不僅是前置它的列)
SELECT 語句返回所有匹配的行,它們可能是指定表中的每個(gè)行。為了返回第一行或前幾行,可使用LIMIT 子句。
LIMIT 5 ,5 指示MySQL返回從行5開始的5行。第一個(gè)數(shù)為開始位置,第二個(gè)數(shù)為要檢索的行數(shù)。
為了明確地排序用SELECT 語句檢索出的數(shù)據(jù),可使用ORDER BY 子句。ORDER BY 子句取一個(gè)或多個(gè)列的名字,據(jù)此對輸出進(jìn)行排序。
為了按多個(gè)列排序,只要指定列名,列名之間用逗號分開即可。
數(shù)據(jù)排序不限于升序排序(從A 到Z )。這只是默認(rèn)的排序順序,還可以使用ORDER BY 子句以降序(從Z 到A )順序排序。為了進(jìn)行降序排序,必須指定DESC 關(guān)鍵字。(DESC 關(guān)鍵字只應(yīng)用到直接位于其前面的列名)
本章將講授如何使用SELECT 語句的WHERE 子句指定搜索條件。在SELECT 語句中,數(shù)據(jù)根據(jù)WHERE 子句中指定的搜索條件進(jìn)行過濾。WHERE 子句在表名(FROM 子句)之后給出。在同時(shí)使用ORDER BY 和WHERE 子句時(shí),應(yīng)該讓ORDER BY 位于WHERE 之后。WHERE子句操作符如下圖所示:
本章講授如何組合WHERE 子句以建立功能更強(qiáng)的更高級的搜索條件。我們還將學(xué)習(xí)如何使用NOT 和IN 操作符。
AND操作符計(jì)算次序高于OR操作符
本章介紹什么是通配符、如何使用通配符以及怎樣使用LIKE 操作符進(jìn)行通配搜索,以便對數(shù)據(jù)進(jìn)行復(fù)雜過濾。
為在搜索子句中使用通配符,必須使用LIKE 操作符。LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配進(jìn)行比較。
最常使用的通配符是百分號(% )。在搜索串中,% 表示任何字符出現(xiàn)任意次數(shù) 。( 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的。如果區(qū)分大小寫)。
另一個(gè)有用的通配符是下劃線(_ )。下劃線的用途與% 一樣,但下劃線只匹配單個(gè)字符而不是多個(gè)字符。
正如所見,MySQL的通配符很有用。但這種功能是有代價(jià)的:通配符搜索的處理一般要比前面討論的其他搜索所花時(shí)間更長。這里給出一些使用通配符要記住的技巧。
1.不要過度使用通配符。如果其他操作符能達(dá)到相同的目的,應(yīng)該使用其他操作符。
2.在確實(shí)需要使用通配符時(shí),除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
3.仔細(xì)注意通配符的位置。如果放錯(cuò)地方,可能不會返回想要的數(shù)據(jù)。
我們從一個(gè)非常簡單的例子開始。下面的語句檢索列prod_name 包含文本1000 的所有行:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000’
ORDER BY prod_name;
它告訴MySQL:REGEXP 后所跟的東西作為正則表達(dá)式(與文字正文1000 匹配的一個(gè)正則表達(dá)式)處理。
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘.000’
ORDER BY prod_name;
. 是正則表達(dá)式語言中一個(gè)特殊的字符。它表示匹配任意一個(gè)字符 ,因此,1000 和2000 都匹配且返回。
MySQL中的正則表達(dá)式匹配(自版本3.23.4后)不區(qū)分大小寫(即,大寫和小寫都匹配)。為區(qū)分大小寫,可使用BINARY 關(guān)鍵字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’ 。
為搜索兩個(gè)串之一(或者為這個(gè)串,或者為另一個(gè)串),使用|,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000|2000’
ORDER BY prod_name;
如果你只想匹配特定的字符,怎么辦?可通過指定一組用[和]括起來的字符來完成,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[123] Ton’
ORDER BY prod_name;
字符集合也可以被否定,即,它們將匹配除指定字符外的任何東西。為否定一個(gè)字符集,在集合的開始處放置一個(gè)^即可。因此,盡管[123] 匹配字符1 、2 或3 ,但[^123] 卻匹配除這些字符外的任何東西。
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[1-5] Ton’
ORDER BY prod_name;
正則表達(dá)式語言由具有特定含義的特殊字符構(gòu)成。我們已經(jīng)看到. 、[ ] 、| 和- 等,還有其他一些字符。請問,如果你需要匹配這些字符,應(yīng)該怎么辦呢?例如,如果要找出包含. 字符的值,怎樣搜索?為了匹配特殊字符,必須用\\為前導(dǎo)。\\- 表示查找- ,\\. 表示查找. 。
SELECT vend_nameFROM vendorsWHERE vend_name REGEXP '\\.'ORDER BY vend_name;
正則表達(dá)式內(nèi)具有特殊意義的所有字符都必須以這種方式轉(zhuǎn)義。這包括. 、| 、[ ] 以及迄今為止使用過的其他特殊字符。
存在找出你自己經(jīng)常使用的數(shù)字、所有字母字符或所有數(shù)字字母字符等的匹配。為更方便工作,可以使用預(yù)定義的字符集,稱為字符類 (characterclass)。
目前為止使用的所有正則表達(dá)式都試圖匹配單次出現(xiàn)。如果存在一個(gè)匹配,該行被檢索出來,如果不存在,檢索不出任何行。但有時(shí)需要對匹配的數(shù)目進(jìn)行更強(qiáng)的控制。例如,你可能需要尋找所有的數(shù),不管數(shù)中包含多少數(shù)字,或者你可能想尋找一個(gè)單詞并且還能夠適應(yīng)一個(gè)尾隨的s (如果存在),等等。
SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\([0-9] sticks?\\)'ORDER BY prod_name;正則表達(dá)式\\([0-9]sticks?\\) 需要解說一下。\\( 匹配(,[0-9] 匹配任意數(shù)字(這個(gè)例子中為1和5),sticks? 匹配stick 和sticks (s 后的? 使s 可選,因?yàn)? 匹配它前面的任何字符的0次或1次出現(xiàn)),\\) 匹配) 。沒有? ,匹配stick 和sticks 會非常困難。
以下是另一個(gè)例子。這次我們打算匹配連在一起的4位數(shù)字:
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[[:digit:]]{4}'ORDER BY prod_name;
目前為止的所有例子都是匹配一個(gè)串中任意位置的文本。為了匹配特定位置的文本,需要使用下表列出的定位符。
例如,如果你想找出以一個(gè)數(shù)(包括以小數(shù)點(diǎn)開始的數(shù))開始的所有產(chǎn)品,怎么辦?簡單搜索[0-9\.] (或[[:digit:]\. ])不行,因?yàn)樗鼘⒃谖谋緝?nèi)任意位置查找匹配。解決辦法是使用^定位符,如下所示:
SELECT prod_nameFROM productsWHERE prod_name REGEXP '^[0-9\\.]'ORDER BY prod_name;
存儲在表中的數(shù)據(jù)都不是應(yīng)用程序所需要的。我們需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計(jì)算或格式化過的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機(jī)應(yīng)用程序或報(bào)告程序中重新格式化。這就是計(jì)算字段發(fā)揮作用的所在了。與前面各章介紹過的列不同,計(jì)算字段并不實(shí)際存在于數(shù)據(jù)庫表中。計(jì)算字段是運(yùn)行時(shí)在SELECT 語句內(nèi)創(chuàng)建的。
在MySQL的SELECT 語句中,可使用Concat() 函數(shù)來拼接兩個(gè)列。
SELECT Concat(vend_name, ' (', vend_country, ')')FROM vendorsORDER BY vend_name;
過刪除數(shù)據(jù)右側(cè)多余的空格來整理數(shù)據(jù),這可以使用MySQL的RTrim() 函數(shù)來完成,如下所示:
SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')')FROM vendorsORDER BY vend_name;
別名 (alias)是一個(gè)字段或值的替換名。別名用AS 關(guān)鍵字賦予。請看下面的SELECT 語句:
SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') ASvend_titleFROM vendorsORDER BY vend_name;
連接到MySQL時(shí)不會由數(shù)據(jù)庫打開,所以首先要做的就是打開一個(gè)數(shù)據(jù)庫:
USE user
USE后面加上想要打開的數(shù)據(jù)庫,如果不知道數(shù)據(jù)庫的名字,使用SHOW DATABASES查看,使用SHOW TABLES可以查看一個(gè)數(shù)據(jù)庫中的表,當(dāng)然也可以查看表中的列SHOW user_id FROM user,它對每個(gè)字段返回一行,行中包含字段名、數(shù)據(jù)類型、是否允許NULL 、鍵信息、默認(rèn)值以及其他信息(DESCRIBE user是上面語句的快捷方式)
為了使用SELECT 檢索表數(shù)據(jù),必須至少給出兩條信息——想選擇什么,以及從什么地方選擇。
所需的列名在SELECT 關(guān)鍵字之后給出,F(xiàn)ROM 關(guān)鍵字指出從其中檢索數(shù)據(jù)的表名。
要想從一個(gè)表中檢索多個(gè)列,使用相同的SELECT 語句。唯一的不同是必須在SELECT 關(guān)鍵字后給出多個(gè)列名,列名之間必須以逗號分隔。
使用DISTINCT關(guān)鍵字可以只檢索出不同值的行,重復(fù)的不會再顯示(注意: DISTINCT 關(guān)鍵字應(yīng)用于所有列而不僅是前置它的列)
SELECT 語句返回所有匹配的行,它們可能是指定表中的每個(gè)行。為了返回第一行或前幾行,可使用LIMIT 子句。
LIMIT 5 ,5 指示MySQL返回從行5開始的5行。第一個(gè)數(shù)為開始位置,第二個(gè)數(shù)為要檢索的行數(shù)。
為了明確地排序用SELECT 語句檢索出的數(shù)據(jù),可使用ORDER BY 子句。ORDER BY 子句取一個(gè)或多個(gè)列的名字,據(jù)此對輸出進(jìn)行排序。
為了按多個(gè)列排序,只要指定列名,列名之間用逗號分開即可。
數(shù)據(jù)排序不限于升序排序(從A 到Z )。這只是默認(rèn)的排序順序,還可以使用ORDER BY 子句以降序(從Z 到A )順序排序。為了進(jìn)行降序排序,必須指定DESC 關(guān)鍵字。(DESC 關(guān)鍵字只應(yīng)用到直接位于其前面的列名)
本章將講授如何使用SELECT 語句的WHERE 子句指定搜索條件。在SELECT 語句中,數(shù)據(jù)根據(jù)WHERE 子句中指定的搜索條件進(jìn)行過濾。WHERE 子句在表名(FROM 子句)之后給出。在同時(shí)使用ORDER BY 和WHERE 子句時(shí),應(yīng)該讓ORDER BY 位于WHERE 之后。WHERE子句操作符如下圖所示:
本章講授如何組合WHERE 子句以建立功能更強(qiáng)的更高級的搜索條件。我們還將學(xué)習(xí)如何使用NOT 和IN 操作符。
AND操作符計(jì)算次序高于OR操作符
本章介紹什么是通配符、如何使用通配符以及怎樣使用LIKE 操作符進(jìn)行通配搜索,以便對數(shù)據(jù)進(jìn)行復(fù)雜過濾。
為在搜索子句中使用通配符,必須使用LIKE 操作符。LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配進(jìn)行比較。
最常使用的通配符是百分號(% )。在搜索串中,% 表示任何字符出現(xiàn)任意次數(shù) 。( 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的。如果區(qū)分大小寫)。
另一個(gè)有用的通配符是下劃線(_ )。下劃線的用途與% 一樣,但下劃線只匹配單個(gè)字符而不是多個(gè)字符。
正如所見,MySQL的通配符很有用。但這種功能是有代價(jià)的:通配符搜索的處理一般要比前面討論的其他搜索所花時(shí)間更長。這里給出一些使用通配符要記住的技巧。
1.不要過度使用通配符。如果其他操作符能達(dá)到相同的目的,應(yīng)該使用其他操作符。
2.在確實(shí)需要使用通配符時(shí),除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
3.仔細(xì)注意通配符的位置。如果放錯(cuò)地方,可能不會返回想要的數(shù)據(jù)。
我們從一個(gè)非常簡單的例子開始。下面的語句檢索列prod_name 包含文本1000 的所有行:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000’
ORDER BY prod_name;
它告訴MySQL:REGEXP 后所跟的東西作為正則表達(dá)式(與文字正文1000 匹配的一個(gè)正則表達(dá)式)處理。
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘.000’
ORDER BY prod_name;
. 是正則表達(dá)式語言中一個(gè)特殊的字符。它表示匹配任意一個(gè)字符 ,因此,1000 和2000 都匹配且返回。
MySQL中的正則表達(dá)式匹配(自版本3.23.4后)不區(qū)分大小寫(即,大寫和小寫都匹配)。為區(qū)分大小寫,可使用BINARY 關(guān)鍵字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’ 。
為搜索兩個(gè)串之一(或者為這個(gè)串,或者為另一個(gè)串),使用|,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000|2000’
ORDER BY prod_name;
如果你只想匹配特定的字符,怎么辦?可通過指定一組用[和]括起來的字符來完成,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[123] Ton’
ORDER BY prod_name;
字符集合也可以被否定,即,它們將匹配除指定字符外的任何東西。為否定一個(gè)字符集,在集合的開始處放置一個(gè)^即可。因此,盡管[123] 匹配字符1 、2 或3 ,但[^123] 卻匹配除這些字符外的任何東西。
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[1-5] Ton’
ORDER BY prod_name;
正則表達(dá)式語言由具有特定含義的特殊字符構(gòu)成。我們已經(jīng)看到. 、[ ] 、| 和- 等,還有其他一些字符。請問,如果你需要匹配這些字符,應(yīng)該怎么辦呢?例如,如果要找出包含. 字符的值,怎樣搜索?為了匹配特殊字符,必須用\\為前導(dǎo)。\\- 表示查找- ,\\. 表示查找. 。
SELECT vend_nameFROM vendorsWHERE vend_name REGEXP '\\.'ORDER BY vend_name;
正則表達(dá)式內(nèi)具有特殊意義的所有字符都必須以這種方式轉(zhuǎn)義。這包括. 、| 、[ ] 以及迄今為止使用過的其他特殊字符。
存在找出你自己經(jīng)常使用的數(shù)字、所有字母字符或所有數(shù)字字母字符等的匹配。為更方便工作,可以使用預(yù)定義的字符集,稱為字符類 (characterclass)。
目前為止使用的所有正則表達(dá)式都試圖匹配單次出現(xiàn)。如果存在一個(gè)匹配,該行被檢索出來,如果不存在,檢索不出任何行。但有時(shí)需要對匹配的數(shù)目進(jìn)行更強(qiáng)的控制。例如,你可能需要尋找所有的數(shù),不管數(shù)中包含多少數(shù)字,或者你可能想尋找一個(gè)單詞并且還能夠適應(yīng)一個(gè)尾隨的s (如果存在),等等。
SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\([0-9] sticks?\\)'ORDER BY prod_name;正則表達(dá)式\\([0-9]sticks?\\) 需要解說一下。\\( 匹配(,[0-9] 匹配任意數(shù)字(這個(gè)例子中為1和5),sticks? 匹配stick 和sticks (s 后的? 使s 可選,因?yàn)? 匹配它前面的任何字符的0次或1次出現(xiàn)),\\) 匹配) 。沒有? ,匹配stick 和sticks 會非常困難。
以下是另一個(gè)例子。這次我們打算匹配連在一起的4位數(shù)字:
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[[:digit:]]{4}'ORDER BY prod_name;
目前為止的所有例子都是匹配一個(gè)串中任意位置的文本。為了匹配特定位置的文本,需要使用下表列出的定位符。
例如,如果你想找出以一個(gè)數(shù)(包括以小數(shù)點(diǎn)開始的數(shù))開始的所有產(chǎn)品,怎么辦?簡單搜索[0-9\.] (或[[:digit:]\. ])不行,因?yàn)樗鼘⒃谖谋緝?nèi)任意位置查找匹配。解決辦法是使用^定位符,如下所示:
SELECT prod_nameFROM productsWHERE prod_name REGEXP '^[0-9\\.]'ORDER BY prod_name;
存儲在表中的數(shù)據(jù)都不是應(yīng)用程序所需要的。我們需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計(jì)算或格式化過的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機(jī)應(yīng)用程序或報(bào)告程序中重新格式化。這就是計(jì)算字段發(fā)揮作用的所在了。與前面各章介紹過的列不同,計(jì)算字段并不實(shí)際存在于數(shù)據(jù)庫表中。計(jì)算字段是運(yùn)行時(shí)在SELECT 語句內(nèi)創(chuàng)建的。
在MySQL的SELECT 語句中,可使用Concat() 函數(shù)來拼接兩個(gè)列。
SELECT Concat(vend_name, ' (', vend_country, ')')FROM vendorsORDER BY vend_name;
過刪除數(shù)據(jù)右側(cè)多余的空格來整理數(shù)據(jù),這可以使用MySQL的RTrim() 函數(shù)來完成,如下所示:
SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')')FROM vendorsORDER BY vend_name;
別名 (alias)是一個(gè)字段或值的替換名。別名用AS 關(guān)鍵字賦予。請看下面的SELECT 語句:
SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') ASvend_titleFROM vendorsORDER BY vend_name;
以上是“mysql常用功能有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章名稱:mysql常用功能有哪些
鏈接URL:http://aaarwkj.com/article48/psochp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、、外貿(mào)網(wǎng)站建設(shè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)