MySQL 是全球最主流的开源关系型数据库管理系统。本速查表汇总日常开发与运维中最常用的 SQL 语句、表维护、性能调优及权限管理命令。
连接与服务状态
| 命令 | 说明 | 示例 |
|---|---|---|
mysql -u root -p | 登录 MySQL 命令行客户端 | mysql -h localhost -u root -p |
exit / quit | 退出客户端 | exit |
SHOW DATABASES; | 列出所有数据库 | SHOW DATABASES; |
USE <database>; | 切换到指定数据库 | USE my_app; |
STATUS; | 查看当前连接状态与服务器版本信息 | STATUS; |
数据库与数据表维护 (DDL)
| 命令 | 说明 | 示例 |
|---|---|---|
CREATE DATABASE | 创建新数据库 | CREATE DATABASE test_db; |
DROP DATABASE | 删除数据库及所有表 | DROP DATABASE test_db; |
SHOW TABLES; | 查看当前库下的所有表 | SHOW TABLES; |
DESCRIBE <table>; | 查看指定表的结构定义 | DESCRIBE users; |
CREATE TABLE | 创建新表 | CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50)); |
DROP TABLE | 永久删除数据表 | DROP TABLE old_logs; |
TRUNCATE TABLE | 清空表中全部记录并重置自增主键 | TRUNCATE TABLE temp_sessions; |
数据操作 (CRUD / DML)
插入数据
INSERT INTO users (name, age, email) VALUES
('Alice', 25, 'alice@example.com'),
('Bob', 30, 'bob@example.com');
查询数据
-- 条件筛选、排序与分页查询
SELECT id, name, age FROM users
WHERE age >= 21 AND status = 'active'
ORDER BY age DESC
LIMIT 10 OFFSET 0;
-- 聚合函数统计
SELECT COUNT(*), AVG(age) FROM users;
更新数据
UPDATE users
SET age = 26, updated_at = NOW()
WHERE name = 'Alice';
删除数据
DELETE FROM users WHERE id = 10;
多表连接查询 (JOIN)
| 连接类型 | 说明 |
|---|---|
INNER JOIN | 内连接,仅返回两张表中完全匹配关联条件的记录 |
LEFT JOIN | 左外连接,返回左表全部记录及右表中匹配的记录 |
RIGHT JOIN | 右外连接,返回右表全部记录及左表中匹配的记录 |
CROSS JOIN | 笛卡尔积,返回两表的组合乘积结果 |
SELECT u.name, o.order_number, o.total_amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.status = 'completed';
索引管理
| 命令 | 说明 |
|---|---|
CREATE INDEX idx_name ON table(col); | 创建普通 B-Tree 索引 |
CREATE UNIQUE INDEX idx_email ON table(col); | 创建唯一约束索引 |
SHOW INDEX FROM table; | 查看指定表上的全部索引 |
DROP INDEX idx_name ON table; | 删除指定名称的索引 |
查询优化与性能分析
| 命令 | 说明 |
|---|---|
EXPLAIN SELECT ... | 分析并输出 SQL 查询的执行计划(索引使用情况) |
ANALYZE TABLE <table>; | 重新分析并更新优化器表统计信息 |
OPTIMIZE TABLE <table>; | 整理表碎片并回收未使用的物理存储空间 |
用户与权限管理 (DCL)
| 命令 | 说明 |
|---|---|
CREATE USER 'app'@'%' IDENTIFIED BY 'secret'; | 创建新用户账号 |
GRANT SELECT, INSERT ON db.* TO 'app'@'%'; | 为用户授予指定库表的特定权限 |
GRANT ALL PRIVILEGES ON db.* TO 'admin'@'%'; | 授予所有权限 |
REVOKE INSERT ON db.* FROM 'app'@'%'; | 撤销指定权限 |
FLUSH PRIVILEGES; | 刷新权限配置使修改立即生效 |
DROP USER 'app'@'%'; | 删除指定用户账号 |
备份与恢复
| 命令 | 说明 |
|---|---|
mysqldump -u root -p db_name > backup.sql | 导出数据库备份文件(在终端中运行) |
mysql -u root -p db_name < backup.sql | 从 SQL 备份文件恢复导入数据 |