涵蓋庫/表/列/行操作、約束、查詢子句,適合開發/運維快速查閱。
-- 創建
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[DEFAULT] CHARACTER SET [=] charset_name
[DEFAULT] COLLATE [=] collation_name;
-- 刪除
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
-- 顯示
SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr];
-- 選擇
USE db_name;
-- 創建
CREATE TABLE [IF NOT EXISTS] tbl_name (
col_name data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'comment'], ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 刪除
DROP TABLE [IF EXISTS] tbl_name;
-- 顯示
SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr];
-- 重命名
RENAME TABLE old_name TO new_name;
-- 或
ALTER TABLE old_name RENAME new_name;
-- 添加
ALTER TABLE tbl_name ADD [COLUMN] col_name data_type
[FIRST | AFTER col_name];
-- 刪除
ALTER TABLE tbl_name DROP [COLUMN] col_name;
-- 修改類型/屬性
ALTER TABLE tbl_name MODIFY col_name new_data_type;
ALTER TABLE tbl_name CHANGE old_col new_col new_data_type;
-- 插入
INSERT [INTO] tbl_name [(col_list)] VALUES (val_list), (val_list), ...;
INSERT INTO tbl_name (col_list) SELECT col_list FROM other_tbl;
-- 刪除
DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT n];
-- 更新
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col1={expr1|DEFAULT} [, col2={expr2|DEFAULT}] ...
[WHERE where_condition] [ORDER BY ...] [LIMIT n];
-- 示例
UPDATE users SET age=18 WHERE age=17;
SELECT [DISTINCT] select_expr [, select_expr ...]
FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position} [ASC | DESC], ...]
[HAVING where_condition]
[ORDER BY {col_name | expr | position} [ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}];
-- 示例
SELECT name FROM users WHERE id = 3;
-- 建表去重
CREATE TABLE new_tbl SELECT DISTINCT * FROM old_tbl;
-- 復制表結構(不含數據)
CREATE TABLE new_tbl LIKE old_tbl;
-- 或
CREATE TABLE new_tbl SELECT * FROM old_tbl WHERE 1=0;
-- 查看表結構
DESC tbl_name;
SHOW CREATE TABLE tbl_name\G
-- 當前時間/用戶/版本/庫
SELECT NOW(), USER(), VERSION(), DATABASE();
生產環境 DDL 變更請使用
pt-online-schema-change或gh-ost避免鎖表。所有標識符建議加反引號`。