溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql常用功能有哪些

發(fā)布時間:2020-11-25 10:43:57 來源:億速云 閱讀:326 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹mysql常用功能有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、基礎(chǔ)部分

  • 一、使用MySQL
    • 1.1、SELECT語句
    • 1.2、排序檢索數(shù)據(jù)
    • 1.3、過濾數(shù)據(jù)
    • 1.4、數(shù)據(jù)過濾
    • 1.5、用通配符進行過濾
    • 1.6、用正則表達式進行搜索
      • 1.6.1 基本字符匹配
      • 1.6.2 進行OR 匹配
      • 1.6.3 匹配幾個字符之一
      • 1.6.4 匹配范圍
      • 1.6.5 匹配特殊字符
      • 1.6.6 匹配字符類
      • 1.6.7 匹配多個實例
      • 1.6.8 定位符
    • 1.7、創(chuàng)建計算字段

一、使用MySQL

連接到MySQL時不會由數(shù)據(jù)庫打開,所以首先要做的就是打開一個數(shù)據(jù)庫:
USE user
USE后面加上想要打開的數(shù)據(jù)庫,如果不知道數(shù)據(jù)庫的名字,使用SHOW DATABASES查看,使用SHOW TABLES可以查看一個數(shù)據(jù)庫中的表,當然也可以查看表中的列SHOW user_id FROM user,它對每個字段返回一行,行中包含字段名、數(shù)據(jù)類型、是否允許NULL 、鍵信息、默認值以及其他信息(DESCRIBE user是上面語句的快捷方式)

1.1、SELECT語句

為了使用SELECT 檢索表數(shù)據(jù),必須至少給出兩條信息——想選擇什么,以及從什么地方選擇。
所需的列名在SELECT 關(guān)鍵字之后給出,F(xiàn)ROM 關(guān)鍵字指出從其中檢索數(shù)據(jù)的表名。
要想從一個表中檢索多個列,使用相同的SELECT 語句。唯一的不同是必須在SELECT 關(guān)鍵字后給出多個列名,列名之間必須以逗號分隔。
使用DISTINCT關(guān)鍵字可以只檢索出不同值的行,重復的不會再顯示(注意: DISTINCT 關(guān)鍵字應用于所有列而不僅是前置它的列)
SELECT 語句返回所有匹配的行,它們可能是指定表中的每個行。為了返回第一行或前幾行,可使用LIMIT 子句。
LIMIT 5 ,5 指示MySQL返回從行5開始的5行。第一個數(shù)為開始位置,第二個數(shù)為要檢索的行數(shù)。

1.2、排序檢索數(shù)據(jù)

為了明確地排序用SELECT 語句檢索出的數(shù)據(jù),可使用ORDER BY 子句。ORDER BY 子句取一個或多個列的名字,據(jù)此對輸出進行排序。
為了按多個列排序,只要指定列名,列名之間用逗號分開即可。
數(shù)據(jù)排序不限于升序排序(從A 到Z )。這只是默認的排序順序,還可以使用ORDER BY 子句以降序(從Z 到A )順序排序。為了進行降序排序,必須指定DESC 關(guān)鍵字。(DESC 關(guān)鍵字只應用到直接位于其前面的列名)

1.3、過濾數(shù)據(jù)

本章將講授如何使用SELECT 語句的WHERE 子句指定搜索條件。在SELECT 語句中,數(shù)據(jù)根據(jù)WHERE 子句中指定的搜索條件進行過濾。WHERE 子句在表名(FROM 子句)之后給出。在同時使用ORDER BY 和WHERE 子句時,應該讓ORDER BY 位于WHERE 之后。WHERE子句操作符如下圖所示:
mysql常用功能有哪些

1.4、數(shù)據(jù)過濾

本章講授如何組合WHERE 子句以建立功能更強的更高級的搜索條件。我們還將學習如何使用NOT 和IN 操作符。
AND操作符計算次序高于OR操作符

1.5、用通配符進行過濾

本章介紹什么是通配符、如何使用通配符以及怎樣使用LIKE 操作符進行通配搜索,以便對數(shù)據(jù)進行復雜過濾。
為在搜索子句中使用通配符,必須使用LIKE 操作符。LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配進行比較。
最常使用的通配符是百分號(% )。在搜索串中,% 表示任何字符出現(xiàn)任意次數(shù) 。( 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的。如果區(qū)分大小寫)。
另一個有用的通配符是下劃線(_ )。下劃線的用途與% 一樣,但下劃線只匹配單個字符而不是多個字符。
正如所見,MySQL的通配符很有用。但這種功能是有代價的:通配符搜索的處理一般要比前面討論的其他搜索所花時間更長。這里給出一些使用通配符要記住的技巧。
1.不要過度使用通配符。如果其他操作符能達到相同的目的,應該使用其他操作符。
2.在確實需要使用通配符時,除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
3.仔細注意通配符的位置。如果放錯地方,可能不會返回想要的數(shù)據(jù)。

1.6、用正則表達式進行搜索

1.6.1 基本字符匹配

我們從一個非常簡單的例子開始。下面的語句檢索列prod_name 包含文本1000 的所有行:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000’
ORDER BY prod_name;

它告訴MySQL:REGEXP 后所跟的東西作為正則表達式(與文字正文1000 匹配的一個正則表達式)處理。

SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘.000’
ORDER BY prod_name;

. 是正則表達式語言中一個特殊的字符。它表示匹配任意一個字符 ,因此,1000 和2000 都匹配且返回。
MySQL中的正則表達式匹配(自版本3.23.4后)不區(qū)分大小寫(即,大寫和小寫都匹配)。為區(qū)分大小寫,可使用BINARY 關(guān)鍵字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’ 。

1.6.2 進行OR 匹配

為搜索兩個串之一(或者為這個串,或者為另一個串),使用|,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000|2000’
ORDER BY prod_name;

1.6.3 匹配幾個字符之一

如果你只想匹配特定的字符,怎么辦?可通過指定一組用[和]括起來的字符來完成,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[123] Ton’
ORDER BY prod_name;
字符集合也可以被否定,即,它們將匹配除指定字符外的任何東西。為否定一個字符集,在集合的開始處放置一個^即可。因此,盡管[123] 匹配字符1 、2 或3 ,但[^123] 卻匹配除這些字符外的任何東西。

1.6.4 匹配范圍

SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[1-5] Ton’
ORDER BY prod_name;

1.6.5 匹配特殊字符

正則表達式語言由具有特定含義的特殊字符構(gòu)成。我們已經(jīng)看到. 、[ ] 、| 和- 等,還有其他一些字符。請問,如果你需要匹配這些字符,應該怎么辦呢?例如,如果要找出包含. 字符的值,怎樣搜索?為了匹配特殊字符,必須用\\為前導。\\- 表示查找- ,\\. 表示查找. 。

SELECT vend_nameFROM vendorsWHERE vend_name REGEXP '\\.'ORDER BY vend_name;

正則表達式內(nèi)具有特殊意義的所有字符都必須以這種方式轉(zhuǎn)義。這包括. 、| 、[ ] 以及迄今為止使用過的其他特殊字符。

1.6.6 匹配字符類

存在找出你自己經(jīng)常使用的數(shù)字、所有字母字符或所有數(shù)字字母字符等的匹配。為更方便工作,可以使用預定義的字符集,稱為字符類 (characterclass)。
mysql常用功能有哪些

1.6.7 匹配多個實例

目前為止使用的所有正則表達式都試圖匹配單次出現(xiàn)。如果存在一個匹配,該行被檢索出來,如果不存在,檢索不出任何行。但有時需要對匹配的數(shù)目進行更強的控制。例如,你可能需要尋找所有的數(shù),不管數(shù)中包含多少數(shù)字,或者你可能想尋找一個單詞并且還能夠適應一個尾隨的s (如果存在),等等。
mysql常用功能有哪些
mysql常用功能有哪些

SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\([0-9] sticks?\\)'ORDER BY prod_name;正則表達式\\([0-9]sticks?\\) 需要解說一下。\\( 匹配(,[0-9] 匹配任意數(shù)字(這個例子中為1和5),sticks? 匹配stick 和sticks (s 后的? 使s 可選,因為? 匹配它前面的任何字符的0次或1次出現(xiàn)),\\) 匹配) 。沒有? ,匹配stick 和sticks 會非常困難。

以下是另一個例子。這次我們打算匹配連在一起的4位數(shù)字:

SELECT prod_nameFROM productsWHERE prod_name REGEXP '[[:digit:]]{4}'ORDER BY prod_name;

1.6.8 定位符

目前為止的所有例子都是匹配一個串中任意位置的文本。為了匹配特定位置的文本,需要使用下表列出的定位符。
mysql常用功能有哪些

例如,如果你想找出以一個數(shù)(包括以小數(shù)點開始的數(shù))開始的所有產(chǎn)品,怎么辦?簡單搜索[0-9\.] (或[[:digit:]\. ])不行,因為它將在文本內(nèi)任意位置查找匹配。解決辦法是使用^定位符,如下所示:

SELECT prod_nameFROM productsWHERE prod_name REGEXP '^[0-9\\.]'ORDER BY prod_name;

1.7、創(chuàng)建計算字段

存儲在表中的數(shù)據(jù)都不是應用程序所需要的。我們需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計算或格式化過的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機應用程序或報告程序中重新格式化。這就是計算字段發(fā)揮作用的所在了。與前面各章介紹過的列不同,計算字段并不實際存在于數(shù)據(jù)庫表中。計算字段是運行時在SELECT 語句內(nèi)創(chuàng)建的。
在MySQL的SELECT 語句中,可使用Concat() 函數(shù)來拼接兩個列。

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)是一個字段或值的替換名。別名用AS 關(guān)鍵字賦予。請看下面的SELECT 語句:

SELECT Concat(RTrim(vend_name), ' (', RTrim(vend_country), ')') ASvend_titleFROM vendorsORDER BY vend_name;

一、基礎(chǔ)部分

  • 一、使用MySQL
    • 1.1、SELECT語句
    • 1.2、排序檢索數(shù)據(jù)
    • 1.3、過濾數(shù)據(jù)
    • 1.4、數(shù)據(jù)過濾
    • 1.5、用通配符進行過濾
    • 1.6、用正則表達式進行搜索
      • 1.6.1 基本字符匹配
      • 1.6.2 進行OR 匹配
      • 1.6.3 匹配幾個字符之一
      • 1.6.4 匹配范圍
      • 1.6.5 匹配特殊字符
      • 1.6.6 匹配字符類
      • 1.6.7 匹配多個實例
      • 1.6.8 定位符
    • 1.7、創(chuàng)建計算字段

一、使用MySQL

連接到MySQL時不會由數(shù)據(jù)庫打開,所以首先要做的就是打開一個數(shù)據(jù)庫:
USE user
USE后面加上想要打開的數(shù)據(jù)庫,如果不知道數(shù)據(jù)庫的名字,使用SHOW DATABASES查看,使用SHOW TABLES可以查看一個數(shù)據(jù)庫中的表,當然也可以查看表中的列SHOW user_id FROM user,它對每個字段返回一行,行中包含字段名、數(shù)據(jù)類型、是否允許NULL 、鍵信息、默認值以及其他信息(DESCRIBE user是上面語句的快捷方式)

1.1、SELECT語句

為了使用SELECT 檢索表數(shù)據(jù),必須至少給出兩條信息——想選擇什么,以及從什么地方選擇。
所需的列名在SELECT 關(guān)鍵字之后給出,F(xiàn)ROM 關(guān)鍵字指出從其中檢索數(shù)據(jù)的表名。
要想從一個表中檢索多個列,使用相同的SELECT 語句。唯一的不同是必須在SELECT 關(guān)鍵字后給出多個列名,列名之間必須以逗號分隔。
使用DISTINCT關(guān)鍵字可以只檢索出不同值的行,重復的不會再顯示(注意: DISTINCT 關(guān)鍵字應用于所有列而不僅是前置它的列)
SELECT 語句返回所有匹配的行,它們可能是指定表中的每個行。為了返回第一行或前幾行,可使用LIMIT 子句。
LIMIT 5 ,5 指示MySQL返回從行5開始的5行。第一個數(shù)為開始位置,第二個數(shù)為要檢索的行數(shù)。

1.2、排序檢索數(shù)據(jù)

為了明確地排序用SELECT 語句檢索出的數(shù)據(jù),可使用ORDER BY 子句。ORDER BY 子句取一個或多個列的名字,據(jù)此對輸出進行排序。
為了按多個列排序,只要指定列名,列名之間用逗號分開即可。
數(shù)據(jù)排序不限于升序排序(從A 到Z )。這只是默認的排序順序,還可以使用ORDER BY 子句以降序(從Z 到A )順序排序。為了進行降序排序,必須指定DESC 關(guān)鍵字。(DESC 關(guān)鍵字只應用到直接位于其前面的列名)

1.3、過濾數(shù)據(jù)

本章將講授如何使用SELECT 語句的WHERE 子句指定搜索條件。在SELECT 語句中,數(shù)據(jù)根據(jù)WHERE 子句中指定的搜索條件進行過濾。WHERE 子句在表名(FROM 子句)之后給出。在同時使用ORDER BY 和WHERE 子句時,應該讓ORDER BY 位于WHERE 之后。WHERE子句操作符如下圖所示:
mysql常用功能有哪些

1.4、數(shù)據(jù)過濾

本章講授如何組合WHERE 子句以建立功能更強的更高級的搜索條件。我們還將學習如何使用NOT 和IN 操作符。
AND操作符計算次序高于OR操作符

1.5、用通配符進行過濾

本章介紹什么是通配符、如何使用通配符以及怎樣使用LIKE 操作符進行通配搜索,以便對數(shù)據(jù)進行復雜過濾。
為在搜索子句中使用通配符,必須使用LIKE 操作符。LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配進行比較。
最常使用的通配符是百分號(% )。在搜索串中,% 表示任何字符出現(xiàn)任意次數(shù) 。( 根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫的。如果區(qū)分大小寫)。
另一個有用的通配符是下劃線(_ )。下劃線的用途與% 一樣,但下劃線只匹配單個字符而不是多個字符。
正如所見,MySQL的通配符很有用。但這種功能是有代價的:通配符搜索的處理一般要比前面討論的其他搜索所花時間更長。這里給出一些使用通配符要記住的技巧。
1.不要過度使用通配符。如果其他操作符能達到相同的目的,應該使用其他操作符。
2.在確實需要使用通配符時,除非絕對有必要,否則不要把它們用在搜索模式的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
3.仔細注意通配符的位置。如果放錯地方,可能不會返回想要的數(shù)據(jù)。

1.6、用正則表達式進行搜索

1.6.1 基本字符匹配

我們從一個非常簡單的例子開始。下面的語句檢索列prod_name 包含文本1000 的所有行:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000’
ORDER BY prod_name;

它告訴MySQL:REGEXP 后所跟的東西作為正則表達式(與文字正文1000 匹配的一個正則表達式)處理。

SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘.000’
ORDER BY prod_name;

. 是正則表達式語言中一個特殊的字符。它表示匹配任意一個字符 ,因此,1000 和2000 都匹配且返回。
MySQL中的正則表達式匹配(自版本3.23.4后)不區(qū)分大小寫(即,大寫和小寫都匹配)。為區(qū)分大小寫,可使用BINARY 關(guān)鍵字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’ 。

1.6.2 進行OR 匹配

為搜索兩個串之一(或者為這個串,或者為另一個串),使用|,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘1000|2000’
ORDER BY prod_name;

1.6.3 匹配幾個字符之一

如果你只想匹配特定的字符,怎么辦?可通過指定一組用[和]括起來的字符來完成,如下所示:
SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[123] Ton’
ORDER BY prod_name;
字符集合也可以被否定,即,它們將匹配除指定字符外的任何東西。為否定一個字符集,在集合的開始處放置一個^即可。因此,盡管[123] 匹配字符1 、2 或3 ,但[^123] 卻匹配除這些字符外的任何東西。

1.6.4 匹配范圍

SELECT prod_name
FROM products
WHERE prod_name REGEXP ‘[1-5] Ton’
ORDER BY prod_name;

1.6.5 匹配特殊字符

正則表達式語言由具有特定含義的特殊字符構(gòu)成。我們已經(jīng)看到. 、[ ] 、| 和- 等,還有其他一些字符。請問,如果你需要匹配這些字符,應該怎么辦呢?例如,如果要找出包含. 字符的值,怎樣搜索?為了匹配特殊字符,必須用\\為前導。\\- 表示查找- ,\\. 表示查找. 。

SELECT vend_nameFROM vendorsWHERE vend_name REGEXP '\\.'ORDER BY vend_name;

正則表達式內(nèi)具有特殊意義的所有字符都必須以這種方式轉(zhuǎn)義。這包括. 、| 、[ ] 以及迄今為止使用過的其他特殊字符。

1.6.6 匹配字符類

存在找出你自己經(jīng)常使用的數(shù)字、所有字母字符或所有數(shù)字字母字符等的匹配。為更方便工作,可以使用預定義的字符集,稱為字符類 (characterclass)。
mysql常用功能有哪些

1.6.7 匹配多個實例

目前為止使用的所有正則表達式都試圖匹配單次出現(xiàn)。如果存在一個匹配,該行被檢索出來,如果不存在,檢索不出任何行。但有時需要對匹配的數(shù)目進行更強的控制。例如,你可能需要尋找所有的數(shù),不管數(shù)中包含多少數(shù)字,或者你可能想尋找一個單詞并且還能夠適應一個尾隨的s (如果存在),等等。
mysql常用功能有哪些
mysql常用功能有哪些

SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\([0-9] sticks?\\)'ORDER BY prod_name;正則表達式\\([0-9]sticks?\\) 需要解說一下。\\( 匹配(,[0-9] 匹配任意數(shù)字(這個例子中為1和5),sticks? 匹配stick 和sticks (s 后的? 使s 可選,因為? 匹配它前面的任何字符的0次或1次出現(xiàn)),\\) 匹配) 。沒有? ,匹配stick 和sticks 會非常困難。

以下是另一個例子。這次我們打算匹配連在一起的4位數(shù)字:

SELECT prod_nameFROM productsWHERE prod_name REGEXP '[[:digit:]]{4}'ORDER BY prod_name;

1.6.8 定位符

目前為止的所有例子都是匹配一個串中任意位置的文本。為了匹配特定位置的文本,需要使用下表列出的定位符。
mysql常用功能有哪些

例如,如果你想找出以一個數(shù)(包括以小數(shù)點開始的數(shù))開始的所有產(chǎn)品,怎么辦?簡單搜索[0-9\.] (或[[:digit:]\. ])不行,因為它將在文本內(nèi)任意位置查找匹配。解決辦法是使用^定位符,如下所示:

SELECT prod_nameFROM productsWHERE prod_name REGEXP '^[0-9\\.]'ORDER BY prod_name;

1.7、創(chuàng)建計算字段

存儲在表中的數(shù)據(jù)都不是應用程序所需要的。我們需要直接從數(shù)據(jù)庫中檢索出轉(zhuǎn)換、計算或格式化過的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機應用程序或報告程序中重新格式化。這就是計算字段發(fā)揮作用的所在了。與前面各章介紹過的列不同,計算字段并不實際存在于數(shù)據(jù)庫表中。計算字段是運行時在SELECT 語句內(nèi)創(chuàng)建的。
在MySQL的SELECT 語句中,可使用Concat() 函數(shù)來拼接兩個列。

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)是一個字段或值的替換名。別名用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)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI