圖形工具雖直觀,但**命令行是理解 MySQL 內核機制的最短路徑**。本文系統整理庫/表/數據全生命周期操作,適合打印備查。
-- 1.1 創建庫(指定字符集排序規則) CREATE DATABASE firstDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 1.2 查看所有庫 SHOW DATABASES; -- 1.3 修改庫字符集 ALTER DATABASE testDB CHARACTER SET utf8mb4; -- 1.4 切換當前庫 USE firstDB; -- 1.5 查看當前庫 SELECT DATABASE(); -- 1.6 刪除庫(慎用!) 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 '出生日期' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='人員表';
SHOW TABLES; DESC PEOPLE; -- 或 DESCRIBE PEOPLE; SHOW COLUMNS FROM PEOPLE;
-- 2.3.1 添加列 ALTER TABLE PEOPLE ADD COLUMN star BOOL COMMENT '是否明星'; -- MySQL 內部 BOOL → TINYINT(1) -- 2.3.2 修改列(類型/長度/默認值/註釋) ALTER TABLE PEOPLE MODIFY COLUMN star INT COMMENT '改為整型'; -- 2.3.3 刪除列 ALTER TABLE PEOPLE DROP COLUMN star; -- 2.3.4 重命名表 RENAME TABLE PEOPLE TO NEW_PEOPLE; -- 或 ALTER TABLE PEOPLE RENAME TO NEW_PEOPLE; -- 2.3.5 修改表字符集(僅影響新列,存量需 CONVERT) ALTER TABLE NEW_PEOPLE CONVERT TO CHARACTER SET utf8mb4;
-- 僅結構 CREATE TABLE newTable LIKE PEOPLE; -- 結構+數據 CREATE TABLE newTable SELECT * FROM PEOPLE; -- 指定列+條件 CREATE TABLE young_people SELECT id, name FROM PEOPLE WHERE age < 30;
-- 全列插入(自增列填 NULL/DEFAULT/0)
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');
-- 條件刪除 DELETE FROM PEOPLE WHERE NAME = 'Lisa'; -- 全表清空(保留自增值、觸發器、權限) TRUNCATE TABLE PEOPLE; -- 等同 DROP + CREATE,極快,不可回滾
UPDATE PEOPLE SET NAME = 'Calvin' WHERE NAME = 'Garvey';
-- 全列 SELECT * FROM PEOPLE; -- 指定列 SELECT NAME, AGE, BIRTHDAY FROM PEOPLE; -- 去重 SELECT DISTINCT AGE FROM PEOPLE; -- 排序 SELECT * FROM PEOPLE ORDER BY AGE DESC, NAME ASC; -- 條件過濾 SELECT * FROM PEOPLE WHERE AGE >= 23 AND NAME LIKE 'N%'; -- 分頁 SELECT * FROM PEOPLE ORDER BY ID LIMIT 2, 2; -- 第 2 頁,每頁 2 條 -- 聚合 SELECT AGE, COUNT(*) AS cnt FROM PEOPLE GROUP BY AGE HAVING cnt > 1;
MySQL 命令**不區分大小寫**,但 Mac 終端 Tab 自動補全**只識別大寫關鍵字**。
# 輸入 SEL + Tab → 自動補全為 SELECT # 輸入 SHOW TAB + Tab → 自動補全為 SHOW TABLES # 建議:習慣大寫關鍵字,提升輸入效率
SELECT VERSION(); -- 版本 SELECT CURRENT_USER(); -- 當前用戶 SHOW PROCESSLIST; -- 當前線程 SHOW VARIABLES LIKE 'max_connections'; -- 參數查看 SHOW ENGINE INNODB STATUS; -- InnoDB 狀態
命令行操作覆蓋 MySQL 90%+ 日常管理場景。**熟練掌握 CREATE/ALTER/DROP、INSERT/DELETE/UPDATE/SELECT、SHOW/DESC/EXPLAIN** 這 12 個核心指令族,即可應對絕大多數開發運維需求。