菜鸟科技网

MySQL常用命令有哪些?

MySQL作为最流行的开源关系型数据库管理系统之一,广泛应用于各类Web应用和企业级系统中,掌握MySQL常用命令是数据库管理员和开发人员的基本技能,涵盖了数据库的连接、操作、管理等多个方面,以下从数据库连接、数据操作、表管理、用户权限、数据备份与恢复、性能优化等多个维度,详细汇总MySQL常用命令。

MySQL常用命令有哪些?-图1
(图片来源网络,侵删)

数据库连接与退出

连接MySQL服务器需要使用mysql命令,基本语法为mysql -h主机名 -u用户名 -p密码,本地连接可简化为mysql -u root -p,输入密码后进入MySQL命令行界面,若需连接到远程服务器,需指定主机IP,如mysql -h 192.168.1.100 -u admin -p,退出MySQL环境使用exitquit命令,也可通过快捷键Ctrl+D直接退出,连接时可通过--default-character-set=utf8指定字符集,避免中文乱码问题。

数据库操作

数据库操作包括创建、查看、选择和删除数据库,创建数据库使用CREATE DATABASE 数据库名 [CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci],例如CREATE DATABASE mydb CHARACTER SET utf8mb4,查看所有数据库命令为SHOW DATABASES,查看特定数据库创建语句使用SHOW CREATE DATABASE 数据库名,选择数据库通过USE 数据库名,之后的所有操作将针对该数据库,删除数据库需谨慎,使用DROP DATABASE 数据库名,该操作不可逆,会删除数据库中的所有数据表和数据。

数据表操作

数据表操作是MySQL核心功能之一,创建表时需定义表结构,包括字段名、数据类型、约束条件等,

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    age INT DEFAULT 18,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

查看所有数据表使用SHOW TABLES,查看表结构可通过DESCRIBE 表名SHOW COLUMNS FROM 表名,修改表结构时,添加字段使用ALTER TABLE 表名 ADD 字段名 数据类型 [约束],删除字段用ALTER TABLE 表名 DROP 字段名,修改字段类型或约束使用ALTER TABLE 表名 MODIFY 字段名 新数据类型 [新约束]CHANGE 旧字段名 新字段名 新数据类型 [新约束],删除表使用DROP TABLE 表名,若需删除表并重新创建(清空数据),可使用TRUNCATE TABLE 表名,该操作速度比DELETE FROM 表名更快,且不触发触发器。

MySQL常用命令有哪些?-图2
(图片来源网络,侵删)

数据操作语言(DML)

数据操作语言包括插入、查询、更新和删除数据,插入数据使用INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2),若插入所有字段,可省略字段列表,如INSERT INTO users VALUES (1, '张三', 'zhangsan@example.com', 20, NOW()),批量插入时,可在VALUES后添加多组值,用逗号分隔,如INSERT INTO users (username, email) VALUES ('李四', 'lisi@example.com'), ('王五', 'wangwu@example.com'),查询数据是常用操作,基础语法为SELECT 字段列表 FROM 表名 WHERE 条件 GROUP BY 分组字段 HAVING 分组条件 ORDER BY 排序字段 LIMIT 记录数,查询年龄大于18的用户并按年龄降序排列:SELECT id, username, age FROM users WHERE age > 18 ORDER BY age DESC LIMIT 10,更新数据使用UPDATE 表名 SET 字段1=新值1, 字段2=新值2 WHERE 条件,注意WHERE条件不可省略,否则将更新所有记录,删除数据使用DELETE FROM 表名 WHERE 条件,同样需指定条件,避免误删全表数据。

用户与权限管理

MySQL用户管理确保数据库安全,创建用户使用CREATE USER '用户名'@'主机' IDENTIFIED BY '密码',例如CREATE USER 'dev'@'localhost' IDENTIFIED BY 'DevPass123!',主机可以是localhost(仅本地连接)、%(任意主机)或具体IP地址,授权使用GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机',权限包括SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES等,例如GRANT SELECT, INSERT ON mydb.* TO 'dev'@'localhost',刷新权限使授权生效,使用FLUSH PRIVILEGES,查看用户权限可通过SHOW GRANTS FOR '用户名'@'主机',撤销权限使用REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'主机',删除用户使用DROP USER '用户名'@'主机'

数据备份与恢复

备份是数据库管理的重要环节,使用mysqldump工具可备份数据库,基本语法为mysqldump -u用户名 -p密码 数据库名 > 备份文件.sql,备份所有数据库使用--all-databases参数,备份特定表需在数据库名后添加表名,如mysqldump -u root -p mydb users > users_backup.sql,恢复数据时,需先确保目标数据库存在,可通过mysql -u用户名 -p密码 数据库名 < 备份文件.sql导入数据,对于大型数据库,可使用--single-transaction参数避免锁表,如mysqldump -u root -p --single-transaction mydb > mydb_backup.sql

性能与维护命令

MySQL性能优化涉及多个命令,查看当前运行的进程使用SHOW PROCESSLIST,杀死进程通过KILL 进程ID,分析查询性能使用EXPLAIN SELECT 查询语句,可查看查询是否使用了索引、扫描的行数等信息,优化表使用OPTIMIZE TABLE 表名,可回收碎片空间,提升查询效率,查看服务器状态通过SHOW STATUS,例如SHOW STATUS LIKE 'Threads%'可查看线程相关信息,对于InnoDB引擎,可通过SHOW ENGINE INNODB STATUS查看详细状态信息。

事务控制

事务确保数据一致性,常用命令包括START TRANSACTIONBEGIN开启事务,COMMIT提交事务,ROLLBACK回滚事务。

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
COMMIT;

若执行过程中发生错误,可执行ROLLBACK撤销所有未提交的操作,设置事务隔离级别使用SET TRANSACTION ISOLATION LEVEL READ COMMITTED;,常用隔离级别包括READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。

索引操作

索引提升查询速度,创建索引使用CREATE INDEX 索引名 ON 表名 (字段名),或直接在创建表时定义索引,查看索引通过SHOW INDEX FROM 表名,删除索引使用DROP INDEX 索引名 ON 表名,为users表的username字段创建唯一索引:CREATE UNIQUE INDEX idx_username ON users (username)

相关问答FAQs

Q1: 如何忘记MySQL root密码?
A1: 若忘记root密码,可通过以下步骤重置:1. 停止MySQL服务,命令为sudo systemctl stop mysql(Linux系统);2. 以安全模式启动MySQL,添加--skip-grant-tables参数,如sudo mysqld_safe --skip-grant-tables &;3. 无密码登录MySQL,使用mysql -u root;4. 执行UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';刷新权限;5. 重启MySQL服务,使用新密码登录。

Q2: 如何优化慢查询SQL?
A2: 优化慢查询SQL可从以下方面入手:1. 使用EXPLAIN分析查询执行计划,检查是否使用了索引,如EXPLAIN SELECT * FROM users WHERE age > 30;;2. 为WHERE、JOIN、ORDER BY等条件的字段创建合适索引;3. 避免在索引字段上使用函数或表达式,如WHERE YEAR(created_at) = 2023会导致索引失效;4. 减少SELECT *,只查询必要字段;5. 对大表进行分页查询时,使用LIMIT offset, size时确保offset字段有索引,或使用WHERE id > last_id LIMIT size方式优化;6. 定期使用ANALYZE TABLE更新表统计信息,确保优化器选择正确执行计划。

分享:
扫描分享到社交APP
上一篇
下一篇