跳至主要內容

MySQL常用命令

Java突击队大约 5 分钟

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;

注意:
TRUNCATEDELETE 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 的高手!