整理開發與運維高頻使用的 MySQL 命令,涵蓋表結構變更、索引管理、用戶授權、資料類型對照,適合離線備查。
-- 修改欄位型別
ALTER TABLE `table_name` MODIFY COLUMN `ip` VARCHAR(50);
-- 新增欄位
ALTER TABLE `table_name` ADD `ip` VARCHAR(50);
-- 新增主鍵
ALTER TABLE `table_name` ADD PRIMARY KEY (`ip`);
-- 新增唯一索引
ALTER TABLE `table_name` ADD UNIQUE (`ip`);
-- 新增普通索引
ALTER TABLE `table_name` ADD INDEX `idx_ip` (`ip`);
-- 新增聯合索引
ALTER TABLE `table_name` ADD INDEX `idx_userip` (`ip`, `name`);
-- 新增全文索引
ALTER TABLE `table_name` ADD FULLTEXT (`column`);
-- 刪除索引
ALTER TABLE `table_name` DROP INDEX `ip`;
-- 授予 root 遠程連線權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.150' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
-- 建立用戶 (舊版語法,5.7+ 建議用 CREATE USER)
INSERT INTO mysql.user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject)
VALUES ('localhost', 'test', PASSWORD('123'), '', '', '');
FLUSH PRIVILEGES;
-- 授權範例
-- 全庫全權限
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY '123';
-- 全庫全權限 + 授權權限
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY '123' WITH GRANT OPTION;
-- 單庫唯讀
GRANT SELECT ON `testdb`.* TO 'test'@'localhost' IDENTIFIED BY '123';
FLUSH PRIVILEGES;
| 型別 | 儲存空間 | 有號範圍 | 無號範圍 | |
|---|---|---|---|---|
| TINYINT | 1 Byte | -128 ~ 127 | 0 ~ 255 | |
| SMALLINT | 2 Bytes | -32,768 ~ 32,767 | 0 ~ 65,535 | |
| MEDIUMINT | 3 Bytes | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | |
| INT | 4 Bytes | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | |
| BIGINT | 8 Bytes | -9.22e18 ~ 9.22e18 | 0 ~ 1.84e19 | |
| FLOAT | 4 Bytes | ±1.17e-38 ~ ±3.40e+38 | 單精度浮點數 | |
| DOUBLE | 8 Bytes | ±2.22e-308 ~ ±1.79e+308 | 雙精度浮點數 | |
| DECIMAL(M,D) | M+2 Bytes | 精確定點數,以字串儲存 | ||
| 型別 | 最大長度 | 儲存開銷 | 特性 |
|---|---|---|---|
| CHAR(M) | 255 字元 | M Bytes | 定長,不足補空格 |
| VARCHAR(M) | 65,535 字元 | L+1/2 Bytes | 變長,L 為實際長度 |
| TINYBLOB/TEXT | 255 字元 | L+1 Bytes | 小型二進制/文字 |
| BLOB/TEXT | 65,535 字元 | L+2 Bytes | 標準二進制/文字 |
| MEDIUMBLOB/TEXT | 16,777,215 字元 | L+3 Bytes | 中型二進制/文字 |
| LONGBLOB/TEXT | 4,294,967,295 字元 | L+4 Bytes | 大型二進制/文字 |
| ENUM | 65,535 成員 | 1-2 Bytes | 單選列舉 |
| SET | 64 成員 | 1-8 Bytes | 多選集合 |
註:一個漢字佔 2 字元 (UTF8 為 3 Bytes),設計欄位長度時需考慮字符集編碼。