MySQL常用命令
MySQL常用命令
MySQL 是很多开发者的老朋友了,不论是中小型项目还是大型企业级系统,它总能稳稳撑住不少关键场景。
尽管大家都知道 MySQL 的核心命令不复杂,但往往遇到问题时,能快速用对命令、定位问题、优化性能才是真功夫。
今天,我就从一个开发者常见的实际问题出发,整理出 MySQL 中最常用的 60 个命令,从基础到进阶,力求让你能学得明白、用得熟练。
一、数据库操作(10个基础命令)
这部分命令适合刚接触 MySQL 的小伙伴,也适合日常频繁操作时查漏补缺。特别是一些高危操作,千万别手抖,记得做好备份!
1. 查看所有数据库
SHOW DATABASES;
场景:
刚拿到项目的时候,第一步通常是看看系统里有哪些数据库,搞清楚环境。
2. 创建数据库
CREATE DATABASE mydb;
如果需要指定字符集,推荐这样写:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
注意:utf8mb4
是最推荐的字符集,特别是需要存储 emoji 表情时,一定要用这个。
3. 删除数据库
DROP DATABASE mydb;
提醒:
高危操作,线上环境操作前必须三思,确保没有重要数据,做好备份!
4. 切换数据库
USE mydb;
场景:
当我们操作某个数据库时,记得先切换到它,否则容易在错误的库中执行命令。
5. 查看当前使用的数据库
SELECT DATABASE();
6. 查看数据库的创建信息
SHOW CREATE DATABASE mydb;
这个命令非常有用,可以看到数据库的字符集、排序规则等配置信息。
7. 备份数据库
mysqldump -u root -p mydb > mydb_backup.sql
场景:
在执行高危操作(比如删除库、删除表)之前,千万别忘记备份。
8. 恢复数据库
mysql -u root -p mydb < mydb_backup.sql
9. 查看数据库大小
SELECT table_schema AS 'Database',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
FROM information_schema.tables
GROUP BY table_schema;
10. 修改数据库字符集
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
二、表操作(15个命令)
接下来的命令主要是围绕表的创建、修改和删除展开,这些操作在项目开发中几乎天天用。
11. 查看所有表
SHOW TABLES;
12. 创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
13. 删除表
DROP TABLE users;
14. 修改表名
RENAME TABLE users TO customers;
15. 添加字段
ALTER TABLE users ADD COLUMN age INT;
16. 删除字段
ALTER TABLE users DROP COLUMN age;
17. 修改字段类型
ALTER TABLE users MODIFY COLUMN username VARCHAR(100);
18. 添加索引
CREATE INDEX idx_username ON users(username);
19. 删除索引
DROP INDEX idx_username ON users;
20. 查看表结构
DESCRIBE users;
或者更详细一点:
SHOW COLUMNS FROM users;
21. 查看表的创建信息
SHOW CREATE TABLE users;
22. 复制表结构
CREATE TABLE new_users LIKE users;
23. 复制表数据
INSERT INTO new_users SELECT * FROM users;
24. 统计表行数
SELECT COUNT(*) FROM users;
25. 清空表数据
TRUNCATE TABLE users;
注意:TRUNCATE
比 DELETE FROM users
更快,但不支持回滚。
三、数据操作(15个命令)
数据操作是每个开发者的核心技能,尤其是增删改查,写得又快又准才是真本事。
26. 插入数据
INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
27. 批量插入
INSERT INTO users (username, email) VALUES
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com');
28. 更新数据
UPDATE users SET email = 'newemail@example.com' WHERE username = 'Alice';
29. 删除数据
DELETE FROM users WHERE username = 'Charlie';
30. 查询所有数据
SELECT * FROM users;
31. 条件查询
SELECT * FROM users WHERE email LIKE '%example.com';
32. 分页查询
SELECT * FROM users LIMIT 10 OFFSET 20;
33. 排序查询
SELECT * FROM users ORDER BY created_at DESC;
34. 分组统计
SELECT email, COUNT(*) FROM users GROUP BY email;
35. 去重查询
SELECT DISTINCT email FROM users;
36. 模糊查询
SELECT * FROM users WHERE username LIKE 'A%';
37. 子查询
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
38. 联合查询
SELECT * FROM users u JOIN orders o ON u.id = o.user_id;
39. 计算字段
SELECT username, LENGTH(username) AS username_length FROM users;
40. 插入查询结果
INSERT INTO archive_users SELECT * FROM users WHERE created_at < '2023-01-01';
四、高级操作与优化(20个命令)
这部分是针对稍微复杂的场景,比如性能优化、权限管理等。
41. 查看执行计划
EXPLAIN SELECT * FROM users WHERE username = 'Alice';
42. 查看慢查询日志
SHOW VARIABLES LIKE 'slow_query_log';
43. 设置慢查询阈值
SET GLOBAL long_query_time = 1;
44. 查看表状态
SHOW TABLE STATUS LIKE 'users';
45. 强制使用索引
SELECT * FROM users FORCE INDEX (idx_username) WHERE username = 'Alice';
46. 添加外键
ALTER TABLE orders ADD CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES users(id);
47. 删除外键
ALTER TABLE orders DROP FOREIGN KEY fk_user_id;
48. 锁表
LOCK TABLES users WRITE;
49. 解锁表
UNLOCK TABLES;
50. 事务操作
START TRANSACTION;
UPDATE users SET email = 'test@example.com' WHERE username = 'Alice';
COMMIT;
或者回滚:
ROLLBACK;
51. 查看所有进程
SHOW PROCESSLIST;
52. 杀死进程
KILL 12345;
53. 刷新权限
FLUSH PRIVILEGES;
54. 查看用户权限
SHOW GRANTS FOR 'root'@'localhost';
55. 创建用户
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
56. 删除用户
DROP USER 'new_user'@'localhost';
57. 授予权限
GRANT SELECT, INSERT ON mydb.* TO 'new_user'@'localhost';
58. 撤销权限
REVOKE INSERT ON mydb.* FROM 'new_user'@'localhost';
59. 重置自增主键
ALTER TABLE users AUTO_INCREMENT = 1;
60. 优化表
OPTIMIZE TABLE users;
五、总结
上面列出的 60 个 MySQL 命令,几乎覆盖了从日常操作到性能优化、权限管理的方方面面。
如果能把这些命令熟练掌握,相信你在开发和运维过程中会更得心应手。
MySQL 的命令简单,但用得好却不容易。
建议大家在实际场景中多练、多用,慢慢找到属于自己的技巧,最终成为一个能驾驭 MySQL 的高手!