萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 常用 SQL 指令速查手冊:DDL、DML、索引與權限操作

無論是開發測試、上線部署還是緊急搶修,熟練掌握核心 SQL 指令都是 MySQL 工程師的基本功。本文將高頻指令按功能分類,附上標準語法與實戰範例,建議收藏備查。

資料庫與資料表檢視

SHOW DATABASES;                    -- 列出所有資料庫
USE db_name;                       -- 切換預設資料庫
SHOW TABLES;                       -- 列出當前資料庫所有表
DESCRIBE table_name;               -- 查看表結構(欄位、型別、索引、預設值)
SHOW CREATE TABLE table_name;      -- 顯示建表完整 SQL(含引擎、字元集、分區等)

資料定義語言 (DDL)

修改表名

ALTER TABLE old_name RENAME TO new_name;

新增/刪除欄位

ALTER TABLE tbl ADD COLUMN col_name col_type [constraints];
ALTER TABLE tbl DROP COLUMN col_name;

索引操作

-- 普通索引
ALTER TABLE tbl ADD INDEX idx_name (col1, col2);
-- 唯一索引
ALTER TABLE tbl ADD UNIQUE INDEX uk_name (col);
-- 主鍵
ALTER TABLE tbl ADD PRIMARY KEY (col);
-- 刪除索引
ALTER TABLE tbl DROP INDEX idx_name;

修改欄位定義

-- CHANGE:可同時改名與型別
ALTER TABLE tbl CHANGE old_col new_col VARCHAR(200);
-- MODIFY:僅改型別/屬性,名稱不變
ALTER TABLE tbl MODIFY col VARCHAR(200);

資料操作語言 (DML)

插入資料

INSERT INTO tbl (col1, col2) VALUES ('val1', 123);
-- 批次插入
INSERT INTO tbl (col1, col2) VALUES ('a',1), ('b',2), ('c',3);

更新資料

UPDATE tbl SET col1 = 1 WHERE col2 = 3;

刪除資料

DELETE FROM tbl WHERE condition;
TRUNCATE TABLE tbl;  -- 快速清空表(不記錄行日誌、重置自增 ID)

資料庫/資料表刪除

DROP TABLE tbl_name;
DROP DATABASE db_name;

使用者與權限管理

建立用戶並授權

-- 本機完整權限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION;
-- 任意主機完整權限
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
-- 特定資料庫、特定主機、特定權限
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP 
  ON db_name.* TO 'user'@'host' IDENTIFIED BY 'pass';

撤銷權限與刪除用戶

REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'%';
DELETE FROM mysql.user WHERE user='user' AND host='%';
FLUSH PRIVILEGES;

備份與還原

mysqldump 完整備份

# 備份單一資料庫
mysqldump -h host -u root -p db_name > backup.sql
# 備份多個資料庫
mysqldump -u root -p --databases db1 db2 > backup.sql
# 備份所有資料庫
mysqldump -u root -p --all-databases > full_backup.sql

僅匯出結構 / 僅匯出資料

# 只要結構
mysqldump -u root -p -d db_name > schema.sql
# 只要資料(不含建表語句)
mysqldump -u root -p -t db_name > data.sql
# 純文字格式(每表產生 .sql 與 .txt)
mysqldump -T /export/path db_name table_name

還原資料庫

# 建立空資料庫
mysqladmin -h host -u root -p create db_name
# 匯入
mysql -h host -u root -p db_name < backup.sql

修改 root 密碼

mysql -u root -p
UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;

版本與日期查詢

SELECT VERSION(), CURRENT_DATE;

小貼士:生產環境執行 DDL 前請先在測試環境驗證,並確認備份可用。大表 ALTER TABLE 可能鎖表較久,MySQL 5.6+ 支援 ALGORITHM=INPLACE、LOCK=NONE 線上變更,視引擎與版本而定。

copyright © 萬盛學電腦網 all rights reserved