在实际的开发和运维工作中,我们经常需要与 MySQL 数据库打交道。无论是进行数据查询、数据导入导出、还是数据库的备份恢复,都需要用到各种各样的 MySQL 命令。很多开发者经常需要 Google 这些命令,效率不高。本文将总结 MySQL 常用命令,并提供详细的示例和注意事项,帮助大家提高工作效率。
基础连接与认证
首先,我们需要连接到 MySQL 服务器。最常用的命令是 mysql 命令。
mysql -u 用户名 -p 密码 -h 主机名 -P 端口号
-u:指定用户名。-p:指定密码。为了安全起见,建议在提示符下输入密码,而不是直接在命令行中输入。-h:指定主机名。如果是本地服务器,可以省略或使用localhost。-P:指定端口号。默认端口号是 3306,如果 MySQL 服务器使用了非默认端口,需要指定。
如果密码存储在环境变量中,可以使用以下方式连接:
mysql --login-path=local
需要在 .my.cnf 文件中配置 login-path。
数据库管理
连接到 MySQL 服务器后,我们可以进行数据库的管理操作,例如创建、删除、选择数据库等。
创建数据库
CREATE DATABASE 数据库名;
例如:
CREATE DATABASE my_database;
删除数据库
注意:删除数据库会删除数据库中的所有数据,请谨慎操作。
DROP DATABASE 数据库名;
例如:
DROP DATABASE my_database;
选择数据库
USE 数据库名;
例如:
USE my_database;
查看数据库列表
SHOW DATABASES;
表管理
表是数据库中存储数据的基本单元。我们可以使用 MySQL 命令进行表的创建、删除、修改等操作。
创建表
CREATE TABLE 表名 (
列名 数据类型 [约束],
...
);
例如:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
删除表
注意:删除表会删除表中的所有数据,请谨慎操作。
DROP TABLE 表名;
例如:
DROP TABLE users;
修改表结构
可以使用 ALTER TABLE 命令修改表结构,例如添加列、删除列、修改列的数据类型等。
添加列:
ALTER TABLE 表名 ADD 列名 数据类型 [约束];
例如:
ALTER TABLE users ADD phone VARCHAR(20);
删除列:
ALTER TABLE 表名 DROP COLUMN 列名;
例如:
ALTER TABLE users DROP COLUMN phone;
修改列的数据类型:
ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型 [约束];
例如:
ALTER TABLE users MODIFY COLUMN username VARCHAR(50);
查看表结构
DESCRIBE 表名;
或者
SHOW COLUMNS FROM 表名;
例如:
DESCRIBE users;
数据操作(CRUD)
CRUD 是 Create, Read, Update, Delete 的缩写,分别对应数据的创建、读取、更新和删除操作。
插入数据
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
例如:
INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com');
查询数据
SELECT 列名1, 列名2, ... FROM 表名 [WHERE 条件] [ORDER BY 列名 [ASC|DESC]] [LIMIT [offset,] row_count];
例如:
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;
更新数据
UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2, ... WHERE 条件;
例如:
UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
删除数据
注意:删除数据会永久删除,请谨慎操作。
DELETE FROM 表名 WHERE 条件;
例如:
DELETE FROM users WHERE id = 1;
实战避坑:慢查询优化
在实际使用中,经常会遇到慢查询的问题。可以使用 EXPLAIN 命令分析 SQL 语句的执行计划,找出性能瓶颈。例如:
EXPLAIN SELECT * FROM users WHERE username = 'testuser';
通过分析 EXPLAIN 的输出,可以判断是否使用了索引,以及索引的使用情况,从而进行相应的优化,例如添加索引、优化 SQL 语句等。
另外,要关注 MySQL 的慢查询日志,长时间运行的 SQL 语句会被记录到该日志中,通过分析慢查询日志可以发现潜在的性能问题。 此外,合理配置 MySQL 的 buffer pool size,也能显著提升查询性能。 涉及到高并发场景,可以考虑使用 Nginx 做反向代理和负载均衡,同时优化 MySQL 的并发连接数配置。 使用宝塔面板可以简化服务器管理和 MySQL 的配置。
常用命令总结
以下是常用 MySQL 命令的汇总表:
| 命令 | 描述 | 示例 |
|---|---|---|
mysql | 连接到 MySQL 服务器 | mysql -u root -p |
CREATE DATABASE | 创建数据库 | CREATE DATABASE my_database; |
DROP DATABASE | 删除数据库 | DROP DATABASE my_database; |
USE | 选择数据库 | USE my_database; |
SHOW DATABASES | 查看数据库列表 | SHOW DATABASES; |
CREATE TABLE | 创建表 | CREATE TABLE users (...); |
DROP TABLE | 删除表 | DROP TABLE users; |
ALTER TABLE | 修改表结构 | ALTER TABLE users ADD phone VARCHAR(20); |
DESCRIBE / SHOW COLUMNS | 查看表结构 | DESCRIBE users; |
INSERT INTO | 插入数据 | INSERT INTO users (...) VALUES (...); |
SELECT | 查询数据 | SELECT * FROM users; |
UPDATE | 更新数据 | UPDATE users SET ... WHERE ...; |
DELETE FROM | 删除数据 | DELETE FROM users WHERE ...; |
EXPLAIN | 分析 SQL 语句执行计划 | EXPLAIN SELECT * FROM users WHERE ...; |
数据备份与恢复
为了保证数据的安全性,我们需要定期备份数据库。MySQL 提供了 mysqldump 命令进行数据库备份。
备份数据库
mysqldump -u 用户名 -p 密码 数据库名 > 备份文件.sql
例如:
mysqldump -u root -p my_database > my_database.sql
恢复数据库
mysql -u 用户名 -p 密码 数据库名 < 备份文件.sql
例如:
mysql -u root -p my_database < my_database.sql
或者,在 MySQL 命令行中执行:
SOURCE 备份文件.sql;
例如:
SOURCE /path/to/my_database.sql;
希望这份 MySQL 常用命令全攻略 能帮助你更高效地进行 MySQL 数据库的管理和操作。熟练掌握这些命令,能让你在后端架构设计和开发中更加得心应手。
冠军资讯
半杯凉茶