在 Windows 環境下管理 MySQL,熟練掌握命令列工具與 SQL 語法是 DBA 與開發者的基本功。本文彙整資料庫匯入匯出、服務控制、庫表操作、資料操作、使用者授權、備份還原等高頻命令,附帶實戰範例供快速查閱。
mysqldump -u 用戶名 -p --default-character-set=latin1 資料庫名 > 匯出檔案.sql
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
mysqldump -u 用戶名 -p 資料庫名 表名 > 匯出檔案.sql
mysqldump -u wcnc -p smgp_apps_wcnc users > wcnc_users.sql
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc > wcnc_db.sql
# -d: 無資料;--add-drop-table: 每個 CREATE 前加 DROP TABLE
# 方式 A:source 指令(進入 mysql 控制台後)
mysql -u root -p
mysql> USE 資料庫名;
mysql> SOURCE 匯入檔案.sql;
# 方式 B:mysqldump 重導向
mysqldump -u username -p dbname < filename.sql
# 方式 C:mysql 指令重導向
mysql -u username -p -D dbname < filename.sql
# 進入命令列客戶端
mysql -u root -p
# 退出
QUIT; 或 EXIT;
CREATE DATABASE xhkdb;
SHOW DATABASES;
DROP DATABASE xhkdb;
USE xhkdb;
SELECT DATABASE(); -- 查看目前使用的資料庫
SHOW TABLES; -- 查看目前資料庫的所有表
CREATE TABLE MyClass(
id INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name CHAR(20) NOT NULL,
sex INT(4) NOT NULL DEFAULT '0',
degree DOUBLE(16,2)
);
DESCRIBE MyClass;
DESC MyClass;
SHOW COLUMNS FROM MyClass;
DROP TABLE MyClass;
INSERT INTO MyClass VALUES(1,'Tom',96.45),(2,'Joan',82.99),(3,'Wang',96.59);
SELECT * FROM MyClass;
SELECT * FROM MyClass ORDER BY id LIMIT 0,2; -- 前 2 筆
DELETE FROM MyClass WHERE id=1;
UPDATE MyClass SET name='Mary' WHERE id=1;
ALTER TABLE MyClass ADD passtest INT(4) DEFAULT '0';
RENAME TABLE MyClass TO YouClass;
UPDATE 表名 SET 欄位名 = REPLACE(欄位名, '舊內容', '新內容');
UPDATE article SET content = CONCAT(' ', content); -- 文章前加 4 空格
| 型別 | 說明 |
|---|---|
| INT[(M)] | 正常大小整數 |
| DOUBLE[(M,D)] | 雙精度浮點數 |
| DATE | 日期 1000-01-01 至 9999-12-31,顯示 YYYY-MM-DD |
| CHAR(M) | 定長字串,右側空格填充 |
| VARCHAR(M) | 變長字串 |
| BLOB/TEXT | 最大 65,535 字元 |
-- 建立用戶並授權
GRANT USAGE ON test.* TO testuser@localhost IDENTIFIED BY 'password';
GRANT SELECT, INSERT, DELETE, UPDATE ON test.* TO testuser@localhost;
-- 移除匿名用戶、設定 root 密碼
USE mysql;
DELETE FROM User WHERE User='';
UPDATE User SET Password=PASSWORD('newpassword') WHERE User='root';
FLUSH PRIVILEGES;
# 建立資料庫並匯入
mysqladmin -u root -p CREATE auction
mysql -u root -p auction < auction.sql
# 完整備份
mysqldump --opt school > school.bbb
SELECT TOP 10 b.* FROM (
SELECT TOP 20 主鍵, 排序欄位 FROM 表名 ORDER BY 排序欄位 DESC
) a, 表名 b WHERE b.主鍵 = a.主鍵 ORDER BY a.排序欄位;
DELETE FROM 表名 WHERE id NOT IN (
SELECT MAX(id) FROM 表名 GROUP BY col1, col2, ...
);
MySQL: SELECT * FROM 表名 ORDER BY RAND() LIMIT n;
SQL Server: SELECT TOP n * FROM 表名 ORDER BY NEWID();
Access: SELECT TOP n * FROM 表名 ORDER BY RND(id);
SELECT type,
SUM(CASE vender WHEN 'A' THEN pcs ELSE 0 END) AS A_pcs,
SUM(CASE vender WHEN 'B' THEN pcs ELSE 0 END) AS B_pcs
FROM 表名 GROUP BY type;
; 再按 Enter 即可結束指令。掌握上述命令與語法,即可應付 Windows 下 MySQL 絕大多數日常運維與開發需求。