圖形工具 (Workbench、DBeaver) 雖便利,但**終端命令是理解 MySQL 內部機制的最短路徑**,也是自動化腳本、CI/CD、容器化部署的基礎。本文系統整理高頻操作,macOS/Linux/Windows 通用。
CREATE DATABASE firstDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 建議顯式指定 utf8mb4 (支援 Emoji),避免預設 latin1
SHOW DATABASES;
-- 系統庫:information_schema, mysql, performance_schema, sys
ALTER DATABASE testDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 僅影響後續新建表,現有表需單獨 ALTER TABLE ... CONVERT TO ...
USE firstDB;
SELECT DATABASE();
-- 或 SHOW TABLES; (顯示當前庫下的表)
DROP DATABASE firstDB;
-- 謹慎操作,不可恢復
CREATE TABLE PEOPLE (
ID INT AUTO_INCREMENT PRIMARY KEY COMMENT '主鍵',
NAME VARCHAR(20) NOT NULL COMMENT '姓名',
AGE INT NOT NULL COMMENT '年齡',
BIRTHDAY DATETIME COMMENT '生日',
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人員表';
SHOW TABLES;
DESC PEOPLE;
-- 或更詳細
SHOW CREATE TABLE PEOPLE\G
-- 修改表編碼
ALTER TABLE PEOPLE CONVERT TO CHARACTER SET utf8mb4;
-- 新增欄位
ALTER TABLE PEOPLE ADD COLUMN STAR BOOLEAN DEFAULT FALSE COMMENT '是否明星';
-- 注意:MySQL 無 BOOLEAN,實為 TINYINT(1)
-- 修改欄位類型/屬性
ALTER TABLE PEOPLE MODIFY COLUMN STAR INT COMMENT '改為整型';
-- 刪除欄位
ALTER TABLE PEOPLE DROP COLUMN STAR;
-- 重命名表
RENAME TABLE PEOPLE TO NEW_PEOPLE;
-- 或
ALTER TABLE PEOPLE RENAME TO NEW_PEOPLE;
CREATE TABLE newTable AS SELECT * FROM PEOPLE;
-- 結構+數據複製,但不複製索引/外鍵/觸發器
-- 完整複製結構:
CREATE TABLE newTable LIKE PEOPLE;
INSERT INTO newTable SELECT * FROM PEOPLE;
-- 全欄位插入 (ID 自增傳 NULL/0/DEFAULT)
INSERT INTO PEOPLE VALUES (NULL, 'Anny', 22, '1992-05-22');
-- 指定欄位插入 (推薦,防結構變更報錯)
INSERT INTO PEOPLE (NAME, AGE, BIRTHDAY) VALUES ('Garvey', 23, '1991-05-22');
-- 批量插入 (高效)
INSERT INTO PEOPLE (NAME, AGE, BIRTHDAY) VALUES
('Lisa', 25, '1989-05-22'), ('Nick', 24, '1990-05-22'), ('Rick', 24, '1991-05-22');
-- 條件刪除 (務必加 WHERE,否則全表清空)
DELETE FROM PEOPLE WHERE NAME = 'Lisa';
-- 刪除所有數據 (保留結構、自增計數器)
DELETE FROM PEOPLE;
-- 或截斷表 (重置自增、釋放空間、不可回滾)
TRUNCATE TABLE PEOPLE;
UPDATE PEOPLE SET NAME = 'Calvin' WHERE NAME = 'Garvey';
-- 多欄位更新
UPDATE PEOPLE SET AGE = AGE + 1, UPDATED_AT = NOW() WHERE ID > 0;
-- 全欄位
SELECT * FROM PEOPLE;
-- 指定欄位
SELECT NAME, AGE, BIRTHDAY FROM PEOPLE;
-- 條件過濾
SELECT * FROM PEOPLE WHERE AGE > 22 AND NAME LIKE 'A%';
-- 排序
SELECT * FROM PEOPLE ORDER BY AGE DESC, ID ASC;
-- 分頁
SELECT * FROM PEOPLE LIMIT 10 OFFSET 0; -- 第 1 頁
SELECT * FROM PEOPLE LIMIT 10 OFFSET 10; -- 第 2 頁
-- 去重
SELECT DISTINCT AGE FROM PEOPLE;
-- 聚合
SELECT COUNT(*) AS total, AVG(AGE) AS avg_age FROM PEOPLE;
SEL+Tab→SELECT)\G 結尾垂直顯示,適合寬表;pager less -SFX 設定分頁器SET SQL_SAFE_UPDATES=0 允許無鍵 UPDATE/DELETE (慎用)mysqldump -u root -p db > backup.sql / mysql -u root -p db < backup.sql下一步進階: 多表 JOIN、子查詢、窗口函數 (8.0+)、CTE、索引優化、EXPLAIN 分析——敬請關注後續專題。