50 条 MySQL 常用命令汇总,入门必学!

MySQL命令是很多的,如果全面列出的话,篇幅较长,我在这里面只是罗列了一些常用的,供大家参考。

1. 登录与退出

(1) 登录 MySQL

复制
mysql [OPTIONS] mysql -uroot -p1.2.3.

选项

说明

示例

-u

指定用户名

-u root

-p

提示输入密码(密码可跟在后面但不安全)

-p1234 或 -p

-h

指定主机名(默认 localhost)

-h 192.168.1.100

-P

指定端口(默认 3306)

-P 3307

--ssl

启用 SSL 安全连接

--ssl

--socket

指定套接字文件

--socket=/tmp/mysql.sock

--database

登录后直接使用指定数据库

--database=testdb

(2) 退出 MySQL

复制
SQL> exit;1.

或:

复制
SQL> quit;1.
2. 数据库管理

(1) 查看数据库列表

复制
show databases;1.

(2) 创建数据库

复制
CREATE DATABASE 数据库名 [OPTIONS]; CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;1.2.3.

选项

说明

示例

DEFAULT CHARACTER SET

设置数据库的默认字符集

DEFAULT CHARACTER SET utf8mb4

DEFAULT COLLATE

设置数据库的排序规则(与字符集匹配)

DEFAULT COLLATE utf8mb4_general_ci

(3) 删除数据库

复制
drop databases 数据库名;1.

(4) 使用指定数据库

复制
USE 数据库名; use mysql;1.2.

(5) 查看当前使用的数据库

复制
SELECT DATABASE();1.

(66) 查看数据库大小

复制
SELECT table_schema AS 数据库名, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 大小_MB FROM information_schema.tables GROUP BY table_schema;1.2.3.4.
3. 表管理

(1) 查看当前数据库的所有表

复制
SHOW TABLES;1.

(2) 查看表结构

复制
DESC 表名;1.

或:

复制
SHOW COLUMNS FROM 表名;1.

(3) 创建表

复制
CREATE TABLE 表名 ( 列名 数据类型 [约束条件], ... ) [OPTIONS]; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;1.2.3.4.5.6.7.8.9.10.11.

选项

说明

示例

ENGINE

设置存储引擎(如 InnoDB、MyISAM)

ENGINE=InnoDB

DEFAULT CHARSET

设置表的默认字符集

DEFAULT CHARSET=utf8mb4

AUTO_INCREMENT

指定自增主键

id INT AUTO_INCREMENT PRIMARY KEY

(4) 查看表的创建语句

复制
SHOW CREATE TABLE 表名;1.

(5) 修改表结构

添加列:

复制
ALTER TABLE 表名 ADD 列名 数据类型 [位置];1.

位置:FIRST(在最前),AFTER 列名(在指定列后)。

修改列:

复制
ALTER TABLE 表名 MODIFY 列名 数据类型;1.

删除列:

复制
ALTER TABLE 表名 DROP 列名;1.

重命名列:

复制
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型;1.

(6) 删除表

复制
DROP TABLE 表名;1.

(7) 清空表(保留结构)

复制
TRUNCATE TABLE 表名;1.
4. 数据操作

(1) 插入数

复制
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (1,2, ...); INSERT INTO users (name, email) VALUES (Alice, liyb@example.com);1.2.3.

(2) 批量插入

复制
INSERT INTO 表名 (列名1, 列名2) VALUES (1,2), (3,4), (5,6);1.2.3.4.

(3) 查询数

复制
SELECT 列名1, 列名2, ... FROM 表名 [WHERE 条件] [ORDER BY 列名 ASC|DESC] [LIMIT 偏移量, 行数]; SELECT * FROM users WHERE email LIKE %example.com ORDER BY created_at DESC LIMIT 10;1.2.3.

常用子句:

子句

说明

示例

WHERE

指定条件

WHERE age > 30

ORDER BY

排序结果集

ORDER BY name ASC

LIMIT

限制返回行数,支持偏移量

LIMIT 5 OFFSET 10

GROUP BY

按列分组

GROUP BY department

HAVING

筛选分组结果

HAVING COUNT(*) > 1

(4) 更新数据

复制
UPDATE 表名 SET 列名1=1, 列名2=2 WHERE 条件;1.

示例:

复制
UPDATE users SET email=new_email@example.com WHERE name=Alice;1.

(5) 删除数据

复制
DELETE FROM 表名 WHERE 条件; DELETE FROM users WHERE id=10;1.2.3.
5. 用户管理

(1) 创建用户

复制
CREATE USER 用户名@主机 IDENTIFIED BY 密码; CREATE USER testuser@localhost IDENTIFIED BY mypassword;1.2.3.

参数

说明

示例

用户名

用户名

testuser

主机

用户允许访问的主机(% 表示任意主机)

localhost 或 %

密码

用户密码

password123

(2) 修改用户密码

复制
ALTER USER 用户名@主机 IDENTIFIED BY 新密码; ALTER USER testuser@localhost IDENTIFIED BY newpassword123;1.2.3.

(3) 删除用户

复制
DROP USER 用户名@主机;1.

(4) 授予权限

复制
GRANT 权限列表 ON 数据库.TO 用户名@主机;1.

权限

说明

ALL PRIVILEGES

授予所有权限

SELECT

允许读取表中的数据

INSERT

允许向表中插入数据

UPDATE

允许修改表中的数据

DELETE

允许删除表中的数据

CREATE

允许创建数据库和表

DROP

允许删除数据库和表

复制
GRANT SELECT, INSERT ON mydb.* TO testuser@localhost;1.

(5) 撤销权限

复制
REVOKE 权限列表 ON 数据库.FROM 用户名@主机; REVOKE INSERT ON mydb.* FROM testuser@localhost;1.2.3.

(6) 刷新权限

复制
FLUSH PRIVILEGES;1.
6. 性能优化

(1) 查看查询执行计划

复制
EXPLAIN SELECT 查询语句;1.
复制
EXPLAIN SELECT * FROM users WHERE email=test@example.com;1.

(2) 优化表

复制
OPTIMIZE TABLE 表名;1.

(3) 查看慢查询

复制
SHOW VARIABLES LIKE slow_query_log;1.

(4) 启用慢查询:

复制
SET GLOBAL slow_query_log=1;1.

(5) 检查表

复制
CHECK TABLE 表名;1.

(6) 修复表

复制
REPAIR TABLE 表名;1.

阅读剩余
THE END