MySQL常用命令汇总
简介
MySQL是一个广泛使用的开源关系型数据库管理系统,由瑞典的MySQL AB公司开发,现属于Oracle公司。 MySQL支持SQL(结构化查询语言),这是数据库操作的标准语言,用户可以使用SQL进行数据查询、插入、更新和删除操作。
MySQL的主要特点包括:
- 开源:用户可以免费下载、使用和修改其源代码,尽管现在属于Oracle公司,但其社区版仍然保留开源模式。
- 高性能和扩展性:MySQL能够处理从小型应用程序到大型系统的多种数据工作负载,适合高并发的在线事务处理(OLTP)系统。
- 跨平台支持:MySQL支持多种操作系统,包括Linux、Windows和macOS,这使得它可以在不同的开发环境中广泛使用。
- 多种存储引擎:MySQL支持多种存储引擎,如InnoDB和MyISAM,用户可以根据具体需求选择适合的引擎。
MySQL的应用场景非常广泛,特别是在网络应用中十分流行。许多Web开发框架(如PHP、Python的Django)都可以与MySQL无缝集成,适用于内容管理系统(CMS)、电子商务、社交媒体平台等方面。
MySQL命令是很多的,如果全面列出的话,篇幅较长,我在这里面只是罗列了一些常用的,供大家参考。
1. 登录与退出
登录 MySQL
mysql [OPTIONS]mysql -uroot -p
选项 | 说明 | 示例 |
---|---|---|
-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 |
退出 MySQL
SQL> exit;
或:
SQL> quit;
2. 数据库管理
查看数据库列表
show databases;
创建数据库
CREATE DATABASE 数据库名 [OPTIONS];CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
选项 | 说明 | 示例 |
---|---|---|
DEFAULT CHARACTER SET | 设置数据库的默认字符集 | DEFAULT CHARACTER SET utf8mb4 |
DEFAULT COLLATE | 设置数据库的排序规则(与字符集匹配) | DEFAULT COLLATE utf8mb4_general_ci |
删除数据库
drop databases 数据库名;
使用指定数据库
USE 数据库名;
use mysql;
查看当前使用的数据库
SELECT DATABASE();
查看数据库大小
SELECT table_schema AS 数据库名,ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 大小_MB
FROM information_schema.tables
GROUP BY table_schema;
3. 表管理
查看当前数据库的所有表
SHOW TABLES;
查看表结构
DESC 表名;
或:
SHOW COLUMNS FROM 表名;
创建表
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;
选项 | 说明 | 示例 |
---|---|---|
ENGINE | 设置存储引擎(如 InnoDB、MyISAM) | ENGINE=InnoDB |
DEFAULT CHARSET | 设置表的默认字符集 | DEFAULT CHARSET=utf8mb4 |
AUTO_INCREMENT | 指定自增主键 | id INT AUTO_INCREMENT PRIMARY KEY |
查看表的创建语句
SHOW CREATE TABLE 表名;
修改表结构
添加列:
ALTER TABLE 表名 ADD 列名 数据类型 [位置];
位置:FIRST(在最前),AFTER 列名(在指定列后)。
修改列:
ALTER TABLE 表名 MODIFY 列名 数据类型;
删除列:
ALTER TABLE 表名 DROP 列名;
重命名列:
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型;
删除表
DROP TABLE 表名;
清空表(保留结构)
TRUNCATE TABLE 表名;
4. 数据操作
插入数据
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);INSERT INTO users (name, email) VALUES ('Alice', 'liyb@example.com');
批量插入
INSERT INTO 表名 (列名1, 列名2) VALUES
(值1, 值2),
(值3, 值4),
(值5, 值6);
查询数据
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;
常用子句:
子句 | 说明 | 示例 |
---|---|---|
WHERE | 指定条件 | WHERE age > 30 |
ORDER BY | 排序结果集 | ORDER BY name ASC |
LIMIT | 限制返回行数,支持偏移量 | LIMIT 5 OFFSET 10 |
GROUP BY | 按列分组 | GROUP BY department |
HAVING | 筛选分组结果 | HAVING COUNT(*) > 1 |
更新数据
UPDATE 表名 SET 列名1=值1, 列名2=值2 WHERE 条件;
示例:
UPDATE users SET email='new_email@example.com' WHERE name='Alice';
删除数据
DELETE FROM 表名 WHERE 条件;DELETE FROM users WHERE id=10;
5. 用户管理
创建用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'mypassword';
参数 | 说明 | 示例 |
---|---|---|
'用户名' | 用户名 | 'testuser' |
'主机' | 用户允许访问的主机(% 表示任意主机) | 'localhost' 或 '%' |
'密码' | 用户密码 | 'password123' |
修改用户密码
ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码';ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'newpassword123';
删除用户
DROP USER '用户名'@'主机';
授予权限
GRANT 权限列表 ON 数据库.表 TO '用户名'@'主机';
权限 | 说明 |
---|---|
ALL PRIVILEGES | 授予所有权限 |
SELECT | 允许读取表中的数据 |
INSERT | 允许向表中插入数据 |
UPDATE | 允许修改表中的数据 |
DELETE | 允许删除表中的数据 |
CREATE | 允许创建数据库和表 |
DROP | 允许删除数据库和表 |
GRANT SELECT, INSERT ON mydb.* TO 'testuser'@'localhost';
撤销权限
REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'主机';REVOKE INSERT ON mydb.* FROM 'testuser'@'localhost';
刷新权限
FLUSH PRIVILEGES;
6. 性能优化
查看查询执行计划
EXPLAIN SELECT 查询语句;
EXPLAIN SELECT * FROM users WHERE email='test@example.com';
优化表
OPTIMIZE TABLE 表名;
慢查询查看
SHOW VARIABLES LIKE 'slow_query_log';
启用慢查询:
SET GLOBAL slow_query_log=1;
检查表
CHECK TABLE 表名;
修复表
REPAIR TABLE 表名;