這是 《MySQL 必知必會》 的讀書總結。也是自己整理的常用操作的參考手冊。 使用 MySQL 連接到 MySQL shell>mysql -u root -p Enter password:******顯示資料庫 mysql>SHOW DATABASES;選擇資料庫 mysql>USE myte... ...
這是 《MySQL 必知必會》 的讀書總結。也是自己整理的常用操作的參考手冊。
使用 MySQL
- 連接到 MySQL
shell>mysql -u root -p Enter password:****** |
- 顯示資料庫
mysql>SHOW DATABASES; |
- 選擇資料庫
mysql>USE mytest; |
- 顯示資料庫中的表
mysql>SHOW TABLES; |
- 顯示表列
mysql>SHOW COLUMNS FROM tmall_user; |
mysql>DESCRIBE tmall_user; |
第二種方法與第一種方法效果相同 |
- SHOW 的其他用法
mysql>SHOW STATUS; |
顯示伺服器的狀態信息 |
mysql>SHOW CREATE DATABASE mytest; |
顯示創建資料庫的語句 |
mysql>SHOW CREATE TABLE tmall_user; |
顯示創建表的語句 |
mysql>SHOW GRANTS; |
顯示授權用戶的安全許可權 |
mysql>SHOW ERRORS; |
顯示伺服器錯誤 |
mysql>SHOW WARNINGS; |
顯示伺服器警告信息 |
基本查詢(SELECT 語句)
- 查詢某列
mysql>SELECT username FROM tmall_user; |
- 查詢多列
mysql>SELECT username, password, time FROM tmall_user; |
- 查詢所有列
mysql>SELECT * FROM tmall_user; |
- 查詢不同行
mysql>SELECT DISTINCT password FROM tmall_user; |
註:DISTINCT 關鍵字應用於所有列。 |
- 限制結果
mysql>SELECT username FROM tmall_user LIMIT 5 |
返回5行 |
mysql>SELECT username FROM tmall_user LIMIT 5,5 |
返回從第5行開始的5行 |
註:查詢結果的第一行為行0,因此,LIMIT 1,1 將檢索出第二行 |
新語法:LIMIT 4 OFFSET 3 從行3開始取4行,就像 LIMIT 3,4 一樣 |
- 使用完全限定的列名、表名
mysql>SELECT tmall_user.username FROM mytest.tmall_user; |
排序數據(ORDER BY 子句)
- 排列數據
mysql>SELECT username FROM tmall_user ->ORDER BY username; |
對 username 結構列以字母順序排列數據 |
- 按多個列排序
mysql>SELECT prod_id, prod_price, prod_name FROM products ->ORDER BY prod_peice, prod_name; |
查詢三個列,先按照價格排序,然後再按名稱排序 |
- 指定排序方向
mysql>SELECT prod_id, prod_price, prod_name FROM products ->ORDER BY prod_price DESC |
預設的排序是升序排序,DESC 關鍵字指定降序排序(價格由高到低) |
- 多個列排序並指定方向
mysql>SELECT prod_id, prod_price, prod_name FROM products ->ORDER BY prod_price DESC, prod_name; |
以降序排序產品(價格從高到低),然後再對產品名排序。 |
註:DESC 關鍵字之應用到直接位於其前面的列名,如果想在多個列上進行降序排序,必須對每個列指定 DESC 關鍵字。 |
- 使用 ORDER BY 和 LIMIT 的組合,找出一個列中最高或最低的值
mysql>SELECT prod_price FROM products ->ORDER BY prod_price DESC ->LIMIT 1; |
查詢價格最貴的那個商品 |
查詢條件(WHERE 子句)
- 查詢滿足條件的行
mysql>SELECT prod_name, prod_price FROM products ->WHERE prod_price = 2.50 |
返回 prod_price 值為 2.50 的行 |
- WHERE 子句操作符
= | 等於 |
<> | 不等於 |
!= | 不等於 |
< | 小於 |
<= | 小於等於 |
> | 大於 |
>= | 大於等於 |
BETWEEN | 在指定的兩個值之間 |
- 一些操作符的例子
mysql>SELECT prod_name, prod_price FROM products ->WHERE prod_price < 10; |
列出價格小於 10 的所有產品 |
mysql>SELECT vend_id, prod_name FROM products ->WHERE vend_id <> 1003; |
列出不是由供應商1003製造的所有產品 |
mysql>SELECT prod_name, prod_price FROM products ->WHERE prod_price BETWEEN 5 AND 10 |
查詢價格在 5 和 10 之間的所有產品 |
mysql>SELECT prod_name FROM products ->WHERE prod_price IS NULL; |
查詢價格列值為 NULL 的行。(空值=值為NULL) |
- 組合 WHERE 子句(邏輯操作符)
AND | 與 |
OR | 或 |
- IN 操作符
mysql>SELECT prod_name FROM products ->WHERE vend_id IN (1002, 1003) ->ORDER BY prod_name; |
查詢供應商1002和1003製造的所有產品 |
IN WHERE 子句中用來指定要匹配值得清單的關鍵字,功能與 OR 相當 |
- NOT 操作符
mysql>SELECT prod_name FROM products ->WHERE vend_id NOT (1002, 1003) ->ORDER BY prod_name; |
查詢除1002和1003之外的所用供應商製造的產品 |
NOT WHERE 子句中用來否定後跟條件的關鍵字,MySQL中的 NOT 支持使用 對 IN、BETWEEN 和 EXISTS 子句取反 |
- LIKE 操作符(通配符過濾)
% | 任何字元出現任意次數,不能匹配 NULL |
_ | 任何一個字元 |
mysql>SELECT prod_name FROM products ->WHERE prod_name LIKE 's%e'; | |
查詢以s開頭以e結尾的產品 |
函數
- 文本處理函數
Left() | 返回串左邊的字元 |
Length() | 返回串的長度 |
Locate() | 找出串的一個子串 |
Ltrim() | 去掉串左邊的空格 |
Right() | 返回串右邊的字元 |
Rtrim() | 去掉串右邊的空格 |
Soundex() | 返回串SOUNDEX值(根據發音比較而不是字母比較) |
SubString() | 返回子串的字元 |
Upper() | 轉換為大寫 |
mysql>SELECT name FROM tmall_user ->WHERE SOUNDEX(name) = SOUNDEX('雷君') 返回:雷軍 |
- 時間和日期處理函數