1. 連接與元信息
# 版本與時間
SELECT VERSION(), CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
# 提示符含義
mysql> 新命令
-> 多行命令續行
'> 等待單引號閉合
"> 等待雙引號閉合
`> 等待反引號閉合
/*> 等待註釋閉合
2. 數據庫操作
SHOW DATABASES;
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE db_name;
DROP DATABASE db_name;
3. 表操作核心語法
創建表 (精簡版)
CREATE TABLE tbl_name (
col1 TYPE [NOT NULL | NULL] [DEFAULT val] [AUTO_INCREMENT],
col2 TYPE ...,
PRIMARY KEY (col1),
UNIQUE KEY uk_name (col2),
INDEX idx_name (col3)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
查看結構
SHOW COLUMNS FROM tbl_name;
DESC tbl_name; -- 等價
SHOW CREATE TABLE tbl_name; -- 完整 DDL
修改結構 (ALTER TABLE)
-- 增加列
ALTER TABLE tbl ADD col_new INT DEFAULT 0 AFTER col1;
ALTER TABLE tbl ADD col_new INT DEFAULT 0 FIRST;
-- 修改列類型/屬性
ALTER TABLE tbl MODIFY col_new BIGINT NOT NULL;
ALTER TABLE tbl CHANGE old_col new_col VARCHAR(100) NOT NULL;
-- 刪除列
ALTER TABLE tbl DROP COLUMN col_new;
-- 索引操作
ALTER TABLE tbl ADD INDEX idx_col (col);
ALTER TABLE tbl ADD UNIQUE uk_col (col);
ALTER TABLE tbl ADD PRIMARY KEY (col);
ALTER TABLE tbl DROP INDEX idx_col;
ALTER TABLE tbl DROP PRIMARY KEY;
-- 重命名表
RENAME TABLE old_name TO new_name;
-- 或
ALTER TABLE old_name RENAME new_name;
刪除表
DROP TABLE tbl_name;
DROP TABLE IF EXISTS tbl_name; -- 安全寫法
4. 數據操作 (DML)
-- 插入
INSERT INTO tbl (col1, col2) VALUES ('a', 1), ('b', 2);
-- 查詢
SELECT col1, col2 FROM tbl WHERE col1 = 'a' ORDER BY col2 LIMIT 10;
-- 更新
UPDATE tbl SET col2 = col2 + 1 WHERE col1 = 'a';
-- 刪除
DELETE FROM tbl WHERE col1 = 'a';
TRUNCATE TABLE tbl; -- 清空表,重置自增,速度快、不可回滾
5. 關鍵屬性說明表
| 屬性 | 含義 |
| NOT NULL | 禁止 NULL |
| DEFAULT val | 默認值 |
| AUTO_INCREMENT | 自增 (每表僅一列,通常配合 PK) |
| PRIMARY KEY | 主鍵 (唯一、非空、聚簇索引) |
| UNIQUE KEY | 唯一索引 (允許一個 NULL) |
| INDEX / KEY | 普通索引 |
6. 避坑提示
- `CHANGE` 需指定完整列定義;`MODIFY` 僅改類型/屬性
- 外鍵需引用表有索引,`ALTER TABLE ... ADD FOREIGN KEY`
- 大表 `ALTER TABLE` 會鎖表,生產用 `pt-online-schema-change`
- `TRUNCATE` 非事務、不觸發 Trigger、重置 `AUTO_INCREMENT`