首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 核心命令大全:安裝配置、庫表操作、數據增刪改查、備份恢復、用戶權限、引擎事務

     編輯:MySQL 綜合教學

桌面級 MySQL 命令速查手冊(持續更新版)

涵蓋從安裝部署到日常運維的高頻命令,分類清晰、語法標準、備註實用,建議收藏為 mysql-cheatsheet.md。

服務管理


# 啟動/停止/重啟
net start mysql
net stop mysql
systemctl start|stop|restart mysqld
service mysql start|stop|restart

# 開機自啟
chkconfig mysql on
systemctl enable mysqld

連接與基礎信息


mysql -h host -P port -u user -p -D db
# 登入後
SELECT VERSION(), CURRENT_DATE, USER(), DATABASE();
SHOW VARIABLES LIKE 'char%';  -- 字符集
SHOW ENGINES;  -- 引擎支持

庫操作


CREATE DATABASE [IF NOT EXISTS] db_name CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
SHOW DATABASES;
SHOW CREATE DATABASE db_name;
ALTER DATABASE db_name CHARSET utf8mb4;
DROP DATABASE [IF EXISTS] db_name;
USE db_name;
SELECT DATABASE();  -- 當前庫

表操作


# 創建
CREATE TABLE [IF NOT EXISTS] tbl (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(64) NOT NULL DEFAULT '',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB CHARSET=utf8mb4;

# 查看
SHOW TABLES;
SHOW CREATE TABLE tbl;
DESC tbl;  -- 或 DESCRIBE/EXPLAIN/SHOW COLUMNS
SHOW TABLE STATUS LIKE 'tbl';

# 修改
ALTER TABLE tbl RENAME TO new_tbl;
ALTER TABLE tbl ENGINE=InnoDB;
ALTER TABLE tbl ADD COLUMN col VARCHAR(32) NOT NULL DEFAULT '' AFTER name;
ALTER TABLE tbl DROP COLUMN col;
ALTER TABLE tbl MODIFY COLUMN col VARCHAR(64) NOT NULL DEFAULT '';
ALTER TABLE tbl CHANGE COLUMN old_col new_col VARCHAR(64) NOT NULL DEFAULT '';
ALTER TABLE tbl ADD PRIMARY KEY (col);
ALTER TABLE tbl ADD UNIQUE INDEX uk_col (col);
ALTER TABLE tbl ADD INDEX idx_col (col);
ALTER TABLE tbl DROP PRIMARY KEY;
ALTER TABLE tbl DROP INDEX idx_col;
ALTER TABLE tbl AUTO_INCREMENT = 1000;

# 刪除/清空
DROP TABLE [IF EXISTS] tbl;
TRUNCATE TABLE tbl;  -- 重建表,重置自增,不可回滾

# 復制
CREATE TABLE new_tbl LIKE old_tbl;  -- 結構
CREATE TABLE new_tbl AS SELECT * FROM old_tbl;  -- 結構+數據

數據操作 (DML)


# 增
INSERT INTO tbl (col1, col2) VALUES (val1, val2), (val3, val4);
INSERT INTO tbl SET col1=val1, col2=val2;
REPLACE INTO tbl ...  -- 主鍵/唯一鍵衝突則刪舊插新
INSERT IGNORE INTO tbl ...  -- 忽略重複鍵錯誤
INSERT ... ON DUPLICATE KEY UPDATE col2=VALUES(col2);  -- 衝突更新

# 刪
DELETE FROM tbl WHERE condition [ORDER BY ...] [LIMIT n];
# 多表刪除
DELETE t1 FROM t1 JOIN t2 ON t1.id=t2.t1_id WHERE t2.status=0;

# 改
UPDATE tbl SET col1=val1, col2=val2 WHERE condition [ORDER BY ...] [LIMIT n];
# 多表更新
UPDATE t1 JOIN t2 ON t1.id=t2.t1_id SET t1.col=t2.col WHERE t2.type=1;

# 查
SELECT [DISTINCT] col1, col2 FROM tbl [WHERE ...] [GROUP BY ...] [HAVING ...] [ORDER BY ...] [LIMIT offset, count];

字符集與校對


SHOW CHARACTER SET;  -- 所有字符集
SHOW COLLATION;      -- 所有校對集
SET NAMES utf8mb4;   -- 連接層三件套
SET character_set_client=utf8mb4, character_set_results=utf8mb4, character_set_connection=utf8mb4;

數據類型速查


# 整數
TINYINT(1)  -- 布爾
SMALLINT, MEDIUMINT, INT, BIGINT
UNSIGNED  -- 非負翻倍

# 浮點/定點
FLOAT(M,D), DOUBLE(M,D)  -- 近似
DECIMAL(M,D)  -- 精確,金額必用

# 字符串
CHAR(M), VARCHAR(M), TEXT, BLOB
BINARY, VARBINARY  -- 二進制

# 日期時間
DATE, TIME, DATETIME(8B), TIMESTAMP(4B, 時區), YEAR

# 枚舉/集合(慎用)
ENUM('a','b'), SET('a','b')

列約束


PRIMARY KEY          -- 主鍵
UNIQUE               -- 唯一
NOT NULL             -- 非空
DEFAULT expr         -- 默認值
AUTO_INCREMENT       -- 自增(需索引)
COMMENT 'text'       -- 註釋
FOREIGN KEY (fk) REFERENCES parent(pk) ON DELETE CASCADE ON UPDATE SET NULL  -- 僅 InnoDB

備份恢復


# mysqldump 邏輯備份
mysqldump -u user -p db tbl1 tbl2 > backup.sql
mysqldump -u user -p -B db1 db2 > dbs.sql  -- 含 CREATE DATABASE
mysqldump -u user -p --single-transaction --routines --triggers --events db > full.sql

# 導入
mysql -u user -p db < backup.sql
SOURCE /path/backup.sql  -- 客戶端內

視圖


CREATE [OR REPLACE] VIEW v_name [(col_list)] AS SELECT ...;
SHOW CREATE VIEW v_name;
DROP VIEW [IF EXISTS] v_name;
ALTER VIEW v_name AS SELECT ...;

事務


START TRANSACTION;  -- BEGIN
COMMIT;
ROLLBACK;
SAVEPOINT name;
ROLLBACK TO SAVEPOINT name;
RELEASE SAVEPOINT name;
SET autocommit=0|1;

鎖表


LOCK TABLES t1 READ, t2 WRITE;
UNLOCK TABLES;

觸發器


CREATE TRIGGER name BEFORE/AFTER INSERT/UPDATE/DELETE ON tbl FOR EACH ROW BEGIN ... END;
DROP TRIGGER name;

用戶權限


CREATE USER 'u'@'%' IDENTIFIED BY 'pwd';
GRANT priv_list ON db.tbl TO 'u'@'%' [IDENTIFIED BY 'pwd'];
SHOW GRANTS FOR 'u'@'%';
REVOKE priv_list ON db.tbl FROM 'u'@'%';
DROP USER 'u'@'%';
FLUSH PRIVILEGES;

表維護


ANALYZE TABLE tbl;      -- 更新統計信息
CHECK TABLE tbl [QUICK|FAST|MEDIUM|EXTENDED|CHANGED];
OPTIMIZE TABLE tbl;     -- 整理碎片
REPAIR TABLE tbl;       -- 修復 MyISAM

雜項


# 反引號包裹標識符
SELECT `select`, `from` FROM `table`;

# 注釋
-- 註釋 (需空格)
# 註釋
/* 多行註釋 */

# 通配符
_ 單字符
% 多字符

# 語句結束符
;  \G  \g
DELIMITER // ... DELIMITER ;

# 清除當前語句
\c

這份速查表覆蓋 90%+ 日常操作場景,建議打印 A4 雙面放工位,或導入 IDE Live Templates 實現幾鍵輸入。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved