Skip to content

Instantly share code, notes, and snippets.

@ZheRui-Yang
Forked from hofmannsven/README.md
Last active October 14, 2021 05:26
Show Gist options
  • Save ZheRui-Yang/08bd6659dcc93f50f775d79a46e1918e to your computer and use it in GitHub Desktop.
Save ZheRui-Yang/08bd6659dcc93f50f775d79a46e1918e to your computer and use it in GitHub Desktop.
MySQL CLI Cheatsheet

MySQL

目錄

首次使用

相關教學內容

工具

命列列指令及 Query 指令

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).

Aggregate functions

功能說明 指令 備註
選取不重複資料列 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';

查詢當前資料庫系統的 IP 位址

SHOW VARIABLES WHERE Variable_name = 'hostname'; (source)

alias mysql=/Applications/MAMP/Library/bin/mysql
[mysqld]
max_allowed_packet=64M
@ZheRui-Yang
Copy link
Author

英翻中

@ZheRui-Yang
Copy link
Author

表格化

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment