SQL 不分大小寫,指令結束必須用英文半形分號( ; )結尾。
| 功能說明 |
指令 |
備註 |
| 登入 |
mysql -u [username] -p; |
終端機指令,會提示你輸入密碼 |
| 登入並使用資料庫 |
mysql -u [username] -p [database] |
終端機指令,會提示你輸入密碼 |
| 登出 |
exit; |
或按 <Ctrl + C> 或 <Ctrl + D> |
| 功能說明 |
指令 |
備註 |
| 顯示所有的資料庫 |
show databases; |
|
| 使用資料庫 |
use [database]; |
|
| 查看現在正在使用的資料庫 |
select database(); |
|
| 查看(現正使用中的資料庫中的)所有的資料表 |
show tables; |
|
| 查看資料表的結構 |
describe [table]; |
|
| 查看索引 |
show index from [table]; |
|
| 建立新資料庫 |
create database [database]; |
|
| 建立新資料表 |
CREATE TABLE [table] ([column] VARCHAR(120), [another-column] DATETIME); |
|
| 功能說明 |
指令 |
備註 |
| 選取所有資料紀錄 |
SELECT * FROM [table]; |
|
| 解釋這句 SQL 選擇出來的資料 |
EXPLAIN SELECT * FROM [table]; |
|
| 選擇部份欄位 |
SELECT [column], [another-column] FROM [table]; |
|
| 計算選中的資料筆數 |
SELECT COUNT([column]) FROM [table]; |
|
| 選取且計數分群好的資料 |
SELECT *, (SELECT COUNT([column]) FROM [table]) AS count FROM [table] GROUP BY [column]; |
|
| 選取特定的資料 |
SELECT * FROM [table] WHERE [column] = [value]; |
算符: <, >, != 、 用 AND, OR 組合多個條件 |
| 選取包含 |
[value] 的資料: SELECT * FROM [table] WHERE [column] LIKE '%[value]%'; |
|
| 選取開頭為 |
[value] 的資料: SELECT * FROM [table] WHERE [column] LIKE '[value]%'; |
|
| 選取開頭為 |
val 、結尾為 ue 的資料: SELECT * FROM [table] WHERE [column] LIKE '[val_ue]'; |
|
| 選取一個範圍 |
SELECT * FROM [table] WHERE [column] BETWEEN [value1] and [value2]; |
|
| 選取依據某資料欄排列的最大或最小數筆資料 |
SELECT * FROM [table] WHERE [column] ORDER BY [column] ASC LIMIT [value]; |
排列方式: DESC, ASC |
| 自定義輸出欄位名稱 |
SELECT [column] AS [custom-column] FROM [table]; |
|
| 功能說明 |
指令 |
備註 |
| 添加新欄位 |
ALTER TABLE [table] ADD COLUMN [column] VARCHAR(120); |
|
| 添加新的、自動計數的主鍵欄位 |
ALTER TABLE [table] ADD COLUMN [column] int NOT NULL AUTO_INCREMENT PRIMARY KEY; |
|
| 插入新一筆資料 |
INSERT INTO [table] ([column], [column]) VALUES ('[value]', '[value]'); |
|
| 更新資料 |
UPDATE [table] SET [column] = '[updated-value]' WHERE [column] = [value]; |
|
| 刪除資料 |
DELETE FROM [table] WHERE [column] = [value]; |
|
| 刪除所有資料列(除了資料表本身) |
DELETE FROM [table]; |
此動作同時也會重置自動計數器——例如自動計數主鍵的 id 欄位 |
| 刪除所有資料列 |
truncate table [table]; |
|
| 刪除其中一欄 |
ALTER TABLE [table] DROP COLUMN [column]; |
|
| 刪除資料表 |
DROP TABLE [table]; |
|
| 刪除資料庫 |
DROP DATABASE [database]; |
|
| 功能說明 |
指令 |
備註 |
| 現在日期與時間 |
NOW() |
內建函式 |
| 匯出資料庫 |
mysqldump -u [username] -p [database] > db_backup.sql |
詳情看這裡 |
| 匯入資料庫 |
mysql -u [username] -p -h localhost [database] < db_backup.sql |
詳情看這裡 |
Use --lock-tables=false option for locked tables (more info here).
| 功能說明 |
指令 |
備註 |
| 選取不重複資料列 |
SELECT distinct name, email, acception FROM owners WHERE acception = 1 AND date >= 2015-01-01 00:00:00 |
|
| 計算資料筆數 |
SELECT SUM([column]) FROM [table]; |
|
計算由 [category-column] 所分群的 [column] 資料筆數 |
SELECT [category-column], SUM([column]) FROM [table] GROUP BY [category-column]; |
|
選取 [column] 的最大值 |
SELECT MAX([column]) FROM [table]; |
|
| 選取最小值 |
SELECT MIN([column]) FROM [table]; |
|
| 選取平均值 |
SELECT AVG([column]) FROM [table]; |
|
選取由 [category-column] 分組出來的 [column] 的平均值,並四捨五入到小數點下第二位 |
SELECT [category-column], ROUND(AVG([column]), 2) FROM [table] GROUP BY [category-column]; |
|
| 功能說明 |
指令 |
備註 |
| 從複數資料表中選取資料 |
SELECT [table1].[column], [table1].[another-column], [table2].[column] FROM [table1], [table2]; |
|
| 從不同資料表中整合資料列 |
SELECT * FROM [table1] INNER JOIN [table2] ON [table1].[column] = [table2].[column]; |
|
| 不使用 JOIN 條件的情況下整合不同資料表的資料列 |
SELECT * FROM [table1] LEFT OUTER JOIN [table2] ON [table1].[column] = [table2].[column]; |
左資料表 ( left table )為第一個出現在此陳述句的資料表 |
| 選取資料表、資料欄位的時候使用自定義的名稱 |
SELECT [table1].[column] AS '[value]', [table2].[column] AS '[value]' FROM [table1], [table2]; |
|
| 功能說明 |
指令 |
備註 |
| 列出所有使用者 |
SELECT User,Host FROM mysql.user; |
|
| 建立新使用者 |
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; |
|
讓 user'@'localhost 這個使用者獲取 database 資料庫中所有資料表的所有權限 |
GRANT ALL ON database.* TO 'user'@'localhost'; |
|
SHOW VARIABLES WHERE Variable_name = 'hostname'; (source)
英翻中