您好,登錄后才能下訂單哦!
本篇內容主要講解“MySQL操作數據表的方式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“MySQL操作數據表的方式”吧!
我們在頁面上看到的數據展示和修改等一系列操作,其實是對數據表的查詢修改。所以學習基礎的程序設計,我們必須掌握數據表的操作!
基本格式如下:
SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表達式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]
名詞含義如下:
{*|<字段列名>}
包含星號通配符的字段列表,表示所要查詢字段的名稱。
<表 1>,<表 2>…
,表 1 和表 2 表示查詢數據的來源,可以是單個或多個。
WHERE <表達式>
是可選項,如果選擇該項,將限定查詢數據必須滿足該查詢條件。
GROUP BY< 字段 >
,該子句告訴 MySQL 如何顯示查詢出來的數據,并按照指定的字段分組。
[ORDER BY< 字段 >]
,該子句告訴 MySQL 按什么樣的順序顯示查詢出來的數據,可以進行的排序有升序(ASC)和降序(DESC),默認情況下是升序。
[LIMIT[<offset>,]<row count>]
,該子句告訴 MySQL 每次顯示查詢出來的數據條數。
查詢表中所有字段
SELECT 使用“*”查找表中所有字段的數據,或者列出所有字段名,語法格式如下:
SELECT * FROM 表名;
注意:使用“*”查詢時,只能按照數據表中字段的順序進行排列,不能改變字段的排列順序。
查詢表中指定的字段
查詢表中的某一個字段的語法格式為:
SELECT < 列名 > FROM < 表名 >;
基本語法格式如下:
SELECT DISTINCT <字段名> FROM <表名>;
“字段名”為需要消除重復記錄的字段名稱,多個字段時用逗號隔開。
使用 DISTINCT 關鍵字時需要注意以下幾點:
DISTINCT 關鍵字只能在 SELECT 語句中使用。
在對一個或多個字段去重時,DISTINCT 關鍵字必須在所有字段的最前面。
如果 DISTINCT 關鍵字后有多個字段,則會對多個字段進行組合去重,也就是說,只有多個字段組合起來完全是一樣的情況下才會被去重。
基本語法格式如下:
<表名> [AS] <別名>
其中各子句的含義如下:
<表名>
:數據庫中存儲的數據表的名稱。
<別名>
:查詢時指定的表的新名稱。
AS
關鍵字可以省略,省略后需要將表名和別名用空格隔開。
注意:表的別名不能與該數據庫的其它表同名。字段的別名不能與該表的其它字段同名。在條件表達式中不能使用字段的別名,否則會出現“ERROR 1054 (42S22): Unknown column”這樣的錯誤提示信息。
基本語法格式如下:
<字段名> [AS] <別名>
其中,各子句的語法含義如下:
<字段名>
:為數據表中字段定義的名稱。
<字段別名>
:字段新的名稱。
AS
關鍵字可以省略,省略后需要將字段名和別名用空格隔開。
LIMIT 是 MySQL 中的一個特殊關鍵字,用于指定查詢結果從哪條記錄開始顯示,一共顯示多少條記錄。LIMIT 關鍵字有 3 種使用方式,即指定初始位置、不指定初始位置以及與 OFFSET 組合使用。
指定初始位置
基本語法格式如下:
LIMIT 初始位置,記錄數SELECT * FROM 表名 LIMIT 3,5; //起始位置3,結束為止5
不指定初始位置
基本語法格式如下:
LIMIT 記錄數SELECT * FROM 表名 LIMIT 4; //4條記錄數量
LIMIT和OFFSET組合使用
基本語法格式如下:
LIMIT 記錄數 OFFSET 初始位置SELECT * FROM tb_students_info LIMIT 5 OFFSET 3; //返回從第 4 條記錄開始的行數為 5 的記錄
其語法格式如下:
ORDER BY <字段名> [ASC|DESC]
語法說明如下。
字段名:表示需要排序的字段名稱,多個字段時用逗號隔開。
ASC|DESC:ASC
表示字段按升序排序;DESC
表示字段按降序排序。其中ASC
為默認值。
注意:
ORDER BY 關鍵字后可以跟子查詢(關于子查詢后面教程會詳細講解,這里了解即可)。
當排序的字段中存在空值時,ORDER BY 會將該空值作為最小值來對待。
單字段排序
SELECT * FROM 表名 ORDER BY 字段名;
多字段排序
SELECT 字段1,字段2 FROM 表名 ORDER BY 字段1,字段2;
注意:在對多個字段進行排序時,排序的第一個字段必須有相同的值,才會對第二個字段進行排序。如果第一個字段數據中所有的值都是唯一的,MySQL 將不再對第二個字段進行排序。
默認情況下,查詢數據按字母升序進行排序(A~Z),但數據的排序并不僅限于此,還可以使用 ORDER BY 中的 DESC 對查詢結果進行降序排序(Z~A)。
基本語法格式如下:
WHERE 查詢條件
查詢條件可以是:
帶比較運算符和邏輯運算符的查詢條件
帶 BETWEEN AND 關鍵字的查詢條件
帶 IS NULL 關鍵字的查詢條件
帶 IN 關鍵字的查詢條件
帶 LIKE 關鍵字的查詢條件
單一條件的查詢語句
單一條件指的是在 WHERE 關鍵字后只有一個查詢條件。
多條件的查詢語句
在 WHERE 關鍵詞后可以有多個查詢條件,這樣能夠使查詢結果更加精確。多個查詢條件時用邏輯運算符 AND(&&)、OR(||)或 XOR 隔開。
AND:記錄滿足所有查詢條件時,才會被查詢出來。
OR:記錄滿足任意一個查詢條件時,才會被查詢出來。
XOR:記錄滿足其中一個條件,并且不滿足另一個條件時,才會被查詢出來。
基本語法格式如下:
[NOT] LIKE '字符串'
其中:
NOT :可選參數,字段中的內容與指定的字符串不匹配時滿足條件。
字符串:指定用來匹配的字符串。“字符串”可以是一個很完整的字符串,也可以包含通配符。
LIKE 關鍵字支持百分號“%”和下劃線“_”通配符。
通配符是一種特殊語句,主要用來模糊查詢。當不知道真正字符或者懶得輸入完整名稱時,可以使用通配符來代替一個或多個真正的字符。
帶有“%”通配符的查詢
“%”是 MySQL 中最常用的通配符,它能代表任何長度的字符串,字符串的長度可以為 0。例如,a%b
表示以字母 a 開頭,以字母 b 結尾的任意長度的字符串。該字符串可以代表 ab、acb、accb、accrb 等字符串。
帶有“_”通配符的查詢
_”只能代表單個字符,字符的長度不能為 0。例如,a_b
可以代表 acb、adb、aub 等字符串。
LIKE 區分大小寫
默認情況下,LIKE 關鍵字匹配字符的時候是不區分大小寫的。如果需要區分大小寫,可以加入 BINARY 關鍵字。
使用通配符的注意事項和技巧
注意事項:
注意大小寫。MySQL 默認是不區分大小寫的。如果區分大小寫,像“Tom”這樣的數據就不能被“t%”所匹配到。
注意尾部空格,尾部空格會干擾通配符的匹配。例如,“T% ”就不能匹配到“Tom”。
注意 NULL。“%”通配符可以到匹配任意字符,但是不能匹配 NULL。也就是說 “%”匹配不到 tb_students_info 數據表中值為 NULL 的記錄。
使用技巧:
不要過度使用通配符,如果其它操作符能達到相同的目的,應該使用其它操作符。因為 MySQL 對通配符的處理一般會比其他操作符花費更長的時間。
在確定使用通配符后,除非絕對有必要,否則不要把它們用在字符串的開始處。把通配符置于搜索模式的開始處,搜索起來是最慢的。
仔細注意通配符的位置。如果放錯地方,可能不會返回想要的數據。
基本語法格式如下:
[NOT] BETWEEN 取值1 AND 取值2
其中:
NOT:可選參數,表示指定范圍之外的值。如果字段值不滿足指定范圍內的值,則這些記錄被返回。
取值1:表示范圍的起始值。
取值2:表示范圍的終止值。
BETWEEN AND 和 NOT BETWEEN AND 關鍵字在查詢指定范圍內的記錄時很有用。例如,查詢學生的年齡段、出生日期,員工的工資水平等。
MySQL 提供了 IS NULL 關鍵字,用來判斷字段的值是否為空值(NULL)。空值不同于 0,也不同于空字符串。 如果字段的值是空值,則滿足查詢條件,該記錄將被查詢出來。如果字段的值不是空值,則不滿足查詢條件。
基本語法格式如下:
IS [NOT] NULL
“NOT”是可選參數,表示字段值不是空值時滿足條件。
基本語法格式如下:
GROUP BY <字段名>
“字段名”表示需要分組的字段名稱,多個字段時用逗號隔開。
GROUP BY單獨使用
單獨使用 GROUP BY 關鍵字時,查詢結果會只顯示每個分組的第一條記錄。
GROUP BY 與 GROUP_CONCAT()
GROUP BY 關鍵字可以和 GROUP_CONCAT() 函數一起使用。GROUP_CONCAT() 函數會把每個分組的字段值都顯示出來。
GROUP BY 與聚合函數
在數據統計時,GROUP BY 關鍵字經常和聚合函數一起使用。
聚合函數包括 COUNT(),SUM(),AVG(),MAX() 和 MIN()。其中,COUNT() 用來統計記錄的條數;SUM() 用來計算字段值的總和;AVG() 用來計算字段值的平均值;MAX() 用來查詢字段的最大值;MIN() 用來查詢字段的最小值。
GROUP BY 與 WITH ROLLUP
WITH POLLUP 關鍵字用來在所有記錄的最后加上一條記錄,這條記錄是上面所有記錄的總和,即統計記錄數量。
在 MySQL 中,可以使用 HAVING 關鍵字對分組后的數據進行過濾。
基本語法格式如下:
HAVING <查詢條件>
HAVING 關鍵字和 WHERE 關鍵字都可以用來過濾數據,且 HAVING 支持 WHERE 關鍵字中所有的操作符和語法。
但是 WHERE 和 HAVING 關鍵字也存在以下幾點差異:
一般情況下,WHERE 用于過濾數據行,而 HAVING 用于過濾分組。
WHERE 查詢條件中不可以使用聚合函數,而 HAVING 查詢條件中可以使用聚合函數。
WHERE 在數據分組前進行過濾,而 HAVING 在數據分組后進行過濾 。
WHERE 針對數據庫文件進行過濾,而 HAVING 針對查詢結果進行過濾。也就是說,WHERE 根據數據表中的字段直接進行過濾,而 HAVING 是根據前面已經查詢出的字段進行過濾。
WHERE 查詢條件中不可以使用字段別名,而 HAVING 查詢條件中可以使用字段別名。
正則表達式主要用來查詢和替換符合某個模式(規則)的文本內容。例如,從一個文件中提取電話號碼,查找一篇文章中重復的單詞、替換文章中的敏感語匯等,這些地方都可以使用正則表達式。正則表達式強大且靈活,常用于非常復雜的查詢。
基本語法格式如下:
屬性名 REGEXP '匹配方式'
其中,“屬性名”表示需要查詢的字段名稱;“匹配方式”表示以哪種方式來匹配查詢。“匹配方式”中有很多的模式匹配字符,它們分別表示不同的意思。下表列出了 REGEXP 操作符中常用的匹配方式。
選項 | 說明 | 例子 | 匹配值示例 |
---|---|---|---|
^ | 匹配文本的開始字符 | '^b' 匹配以字母 b 開頭的字符串 | book、big、banana、bike |
$ | 匹配文本的結束字符 | 'st$' 匹配以 st 結尾的字符串 | test、resist、persist |
. | 匹配任何單個字符 | 'b.t' 匹配任何 b 和 t 之間有一個字符 | bit、bat、but、bite |
* | 匹配零個或多個在它前面的字符 | 'f*n' 匹配字符 n 前面有任意個字符 f | fn、fan、faan、abcn |
+ | 匹配前面的字符 1 次或多次 | 'ba+' 匹配以 b 開頭,后面至少緊跟一個 a | ba、bay、bare、battle |
<字符串> | 匹配包含指定字符的文本 | 'fa' 匹配包含‘fa’的文本 | fan、afa、faad |
[字符集合] | 匹配字符集合中的任何一個字符 | '[xz]' 匹配 x 或者 z | dizzy、zebra、x-ray、extra |
[^] | 匹配不在括號中的任何字符 | '[^abc]' 匹配任何不包含 a、b 或 c 的字符串 | desk、fox、f8ke |
字符串{n,} | 匹配前面的字符串至少 n 次 | 'b{2}' 匹配 2 個或更多的 b | bbb、bbbb、bbbbbbb |
字符串 {n,m} | 匹配前面的字符串至少 n 次, 至多 m 次 | 'b{2,4}' 匹配最少 2 個,最多 4 個 b | bbb、bbbb |
查詢以特定字符或字符串開頭的記錄
字符^
用來匹配以特定字符或字符串開頭的記錄。
查詢以特定字符或字符串結尾的記錄
字符$
用來匹配以特定字符或字符串結尾的記錄。
替代字符串中的任意一個字符
字符.
用來替代字符串中的任意一個字符。
匹配多個字符
字符*
和+
都可以匹配多個該符號之前的字符。不同的是,+
表示至少一個字符,而*
可以表示 0 個字符。
匹配指定字符串
正則表達式可以匹配字符串。當表中的記錄包含這個字符串時,就可以將該記錄查詢出來。指定多個字符串時,需要用|
隔開。只要匹配這些字符串中的任意一個即可。
匹配指定字符串中的任意一個
使用方括號[ ]
可以將需要查詢的字符組成一個字符集合。只要記錄中包含方括號中的任意字符,該記錄就會被查詢出來。例如,通過“[abc]”可以查詢包含 a、b 和 c 等 3 個字母中任意一個的記錄。
匹配指定字符以外的字符
[^字符集合]
用來匹配不在指定集合中的任何字符。
使用{n,}或者{n,m}來指定字符串連續出現的次數
字符串{n,}
表示字符串連續出現 n 次;字符串{n,m}
表示字符串連續出現至少 n 次,最多 m 次。
例如,a{2,} 表示字母 a 連續出現至少 2 次,也可以大于 2 次;a{2,4} 表示字母 a 連續出現最少 2 次,最多不能超過 4 次。
INSERT 語句有兩種語法形式,分別是 INSERT…VALUES 語句和 INSERT…SET 語句。
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];
語法說明如下。
<表名>
:指定被操作的表名。
<列名>
:指定需要插入數據的列名。若向表中的所有列插入數據,則全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。
VALUES
或 VALUE
子句:該子句包含要插入的數據清單。數據清單中數據的順序要和列的順序相對應。
INSERT INTO <表名>
SET <列名1> = <值1>,
<列名2> = <值2>,
…
此語句用于直接給表中的某些列指定對應的列值,即要插入的數據的列名在 SET 子句中指定,col_name 為指定的列名,等號后面為指定的數據,而對于未指定的列,列值會指定為該列的默認值。
由 INSERT 語句的兩種形式可以看出:
使用 INSERT…VALUES 語句可以向表中插入一行數據,也可以插入多行數據;
使用 INSERT…SET 語句可以指定插入行中每列的值,也可以指定部分列的值;
INSERT…SELECT 語句向表中插入其他表的數據。
采用 INSERT…SET 語句可以向表中插入部分列的值,這種方式更為靈活;
INSERT…VALUES 語句可以一次插入多條數據。
在 MySQL 中,用單條 INSERT 語句處理多個插入要比使用多條 INSERT 語句更快。
當使用單條 INSERT 語句插入多行數據的時候,只需要將每行數據用圓括號括起來即可。
使用 UPDATE 語句修改單個表,基本語法格式如下:
UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]
語法說明如下:
<表名>
:用于指定要更新的表名稱。
SET
子句:用于指定表中要修改的列名及其列值。其中,每個指定的列值可以是表達式,也可以是該列對應的默認值。如果指定的是默認值,可用關鍵字 DEFAULT 表示列值。
WHERE
子句:可選項。用于限定表中要修改的行。若不指定,則修改表中所有的行。
ORDER BY
子句:可選項。用于限定表中的行被修改的次序。
LIMIT
子句:可選項。用于限定被修改的行數。
注意:修改一行數據的多個列值時,SET 子句的每個值用逗號分開即可。
基本語法格式如下:
DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]
語法說明如下:
<表名>
:指定要刪除數據的表名。
ORDER BY
子句:可選項。表示刪除時,表中各行將按照子句中指定的順序進行刪除。
WHERE
子句:可選項。表示為刪除操作限定刪除條件,若省略該子句,則代表刪除該表中的所有行。
LIMIT
子句:可選項。用于告知服務器在控制命令被返回到客戶端前被刪除行的最大值。
注意:在不使用 WHERE 條件的時候,將刪除所有數據。
到此,相信大家對“MySQL操作數據表的方式”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。