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
或:
2. 数据库管理
(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) 删除数据库
(4) 使用指定数据库
复制
USE 数据库名;
use mysql;1.2.
(5) 查看当前使用的数据库
(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) 查看当前数据库的所有表
(2) 查看表结构
或:
复制
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) 删除表
(7) 清空表(保留结构)
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) 删除用户
(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) 刷新权限
6. 性能优化
(1) 查看查询执行计划
复制
EXPLAIN SELECT * FROM users WHERE email=test@example.com;1.
(2) 优化表
(3) 查看慢查询
复制
SHOW VARIABLES LIKE slow_query_log;1.
(4) 启用慢查询:
复制
SET GLOBAL slow_query_log=1;1.
(5) 检查表
(6) 修复表