MySQL是大厂必备技能,下面我详解MySQL命令大全@mikechen
一、连接 MySQL
1、连接数据库
mysql -u root -p
含义:
u:用户名;p:输入密码;
示例:
mysql -u root -p123456
远程连接:
mysql -h 192.168.1.10 -P 3306 -u root -p
参数说明:
h:主机地址;P:端口号;
二、数据库操作命令
2、查看所有数据库
SHOW DATABASES;
作用:
查看 MySQL 实例中所有数据库。
3、创建数据库
CREATE DATABASE test_db;
指定字符集:
CREATE DATABASE test_db
CHARACTER SET utf8mb4;
为什么用 utf8mb4?
因为:
- utf8 不支持 emoji
- utf8mb4 才是真正完整 UTF-8
4、删除数据库
DROP DATABASE test_db;
危险操作。
生产环境慎用。
5、切换数据库
USE test_db;
后续所有 SQL 都会在当前库执行。
三、表操作命令
6、查看当前数据库所有表
SHOW TABLES;
7、创建表
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
age INT,
create_time DATETIME
);
核心点:
PRIMARY KEY:主键;AUTO_INCREMENT:自增;VARCHAR:变长字符串;
8、查看表结构
DESC user;
或者:
SHOW CREATE TABLE user;
区别:
DESC:查看字段SHOW CREATE TABLE:查看完整建表 SQL
这个命令线上极其常用。
9、删除表
DROP TABLE user;
删除后数据不可恢复。
四、数据操作命令(CRUD)
10、插入数据(INSERT)
INSERT INTO user(name, age)
VALUES('张三', 20);
批量插入:
INSERT INTO user(name, age)
VALUES
('张三', 20),
('李四', 21),
('王五', 22);
批量插入性能更高。
因为:
减少网络 IO 与事务提交次数。
11、查询数据(SELECT)
查询全部:
SELECT * FROM user;
条件查询:
SELECT * FROM user
WHERE age > 20;
分页查询:
SELECT * FROM user
LIMIT 0,10;
排序:
SELECT * FROM user
ORDER BY id DESC;
线上最危险的是:
SELECT *;
原因:
- 回表更多;
- 网络传输更大;
- 容易拖垮数据库;
大厂一般禁止无脑 SELECT *。
12、更新数据(UPDATE)
UPDATE user
SET age = 30
WHERE id = 1;
重点:
必须加 WHERE。
否则:
UPDATE user SET age = 30;
会更新整张表。
13、删除数据(DELETE)
DELETE FROM user
WHERE id = 1;
同样:
必须加 WHERE。
五、索引与性能命令
14、查看索引
SHOW INDEX FROM user;
重点关注:
- Key_name
- Cardinality
- Index_type
15、创建索引
CREATE INDEX idx_name
ON user(name);
联合索引:
CREATE INDEX idx_name_age
ON user(name, age);
核心:
联合索引遵循最左匹配原则。
16、分析 SQL 执行计划(EXPLAIN)
EXPLAIN
SELECT * FROM user
WHERE name = '张三';
这是 MySQL 性能优化核心命令。
重点看:
- type
- key
- rows
- Extra
性能从差到好:
ALL > index > range > ref > eq_ref > const
如果出现:
type = ALL
通常意味着:
全表扫描。
六、事务命令
17、开启事务
BEGIN;
或者:
START TRANSACTION;
提交事务:
COMMIT;
回滚事务:
ROLLBACK;
事务核心特性:
- 原子性
- 一致性
- 隔离性
- 持久性
即:
ACID。
七、用户与权限命令
18、创建用户并授权
创建用户:
CREATE USER 'dev'
IDENTIFIED BY '123456';
授权:
GRANT ALL PRIVILEGES
ON test_db.*
TO 'dev';
刷新权限:
FLUSH PRIVILEGES;
八、线上排障高频命令
19、查看当前连接与执行 SQL
查看连接:
SHOW PROCESSLIST;
这是线上排查最核心命令之一。
可以看到:
- 哪些 SQL 正在执行;
- 哪些连接被阻塞;
- 哪些慢 SQL 卡住了数据库;
如果看到:
Locked
通常意味着:
发生锁等待。
如果看到:
Sending data
可能是:
- 大查询;
- 全表扫描;
- 未命中索引;