MySQL 提供了丰富的命令集,用于管理数据库、表、用户权限等。以下是 MySQL 命令的详细分类和常用命令,帮助你深入理解如何管理和操作 MySQL 数据库。
1. 数据库管理命令
1.1 CREATE DATABASE
用于创建一个新的数据库。
CREATE DATABASE my_database;
1.2 USE
选择当前操作的数据库。
USE my_database;
1.3 SHOW DATABASES
列出当前 MySQL 实例中的所有数据库。
SHOW DATABASES;
1.4 DROP DATABASE
删除一个现有的数据库。
DROP DATABASE my_database;
1.5 ALTER DATABASE
修改数据库的属性(如字符集、排序规则等)。
ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2. 表管理命令
2.1 CREATE TABLE
用于创建一个新表。
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
2.2 SHOW TABLES
列出当前数据库中的所有表。
SHOW TABLES;
2.3 DESCRIBE
显示表的结构,包括列名、数据类型、是否为空、键等信息。
DESCRIBE employees;
2.4 DROP TABLE
删除一个现有的表。
DROP TABLE employees;
2.5 ALTER TABLE
修改现有表的结构,例如添加、删除列,修改列数据类型等。
ALTER TABLE employees ADD COLUMN department VARCHAR(100);
2.6 TRUNCATE TABLE
删除表中的所有数据,但保留表结构。
TRUNCATE TABLE employees;
3. 数据操作命令
3.1 SELECT
查询数据,从表中选择行。
SELECT * FROM employees WHERE salary > 5000;
3.2 INSERT INTO
向表中插入数据。
INSERT INTO employees (name, salary) VALUES ('John Doe', 6000);
3.3 UPDATE
更新表中的现有数据。
UPDATE employees SET salary = 7000 WHERE id = 1;
3.4 DELETE
删除表中的数据。
DELETE FROM employees WHERE id = 1;
3.5 REPLACE INTO
插入数据,如果该行已经存在,则替换。
REPLACE INTO employees (id, name, salary) VALUES (1, 'John Doe', 7000);
3.6 INSERT IGNORE INTO
插入数据,如果已存在相同主键或唯一索引的行,则忽略插入。
INSERT IGNORE INTO employees (name, salary) VALUES ('Jane Doe', 6000);
4. 索引管理命令
4.1 CREATE INDEX
创建一个新的索引。
CREATE INDEX idx_salary ON employees (salary);
4.2 SHOW INDEXES
显示表中所有索引的信息。
SHOW INDEXES FROM employees;
4.3 DROP INDEX
删除索引。
DROP INDEX idx_salary ON employees;
5. 视图管理命令
5.1 CREATE VIEW
创建视图。
CREATE VIEW employee_view AS
SELECT name, salary FROM employees WHERE salary > 5000;
5.2 SHOW VIEWS
显示当前数据库中的所有视图。
SHOW VIEWS;
5.3 DROP VIEW
删除视图。
DROP VIEW employee_view;
6. 用户管理命令
6.1 CREATE USER
创建新用户。
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
6.2 SHOW USERS
显示 MySQL 中的所有用户。
SELECT User, Host FROM mysql.user;
6.3 GRANT
赋予用户权限。
GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';
6.4 REVOKE
撤销用户的权限。
REVOKE ALL PRIVILEGES ON my_database.* FROM 'new_user'@'localhost';
6.5 DROP USER
删除用户。
DROP USER 'new_user'@'localhost';
7. 权限管理命令
7.1 SHOW GRANTS
显示用户的权限。
SHOW GRANTS FOR 'new_user'@'localhost';
7.2 FLUSH PRIVILEGES
重新加载权限表。
FLUSH PRIVILEGES;
8. 备份与恢复命令
8.1 mysqldump
使用 mysqldump 命令行工具进行数据库备份。
mysqldump -u root -p my_database > backup.sql
8.2 mysql
使用 mysql 命令行工具导入备份文件。
mysql -u root -p my_database < backup.sql
9. 事务命令
9.1 START TRANSACTION
开始一个事务。
START TRANSACTION;
9.2 COMMIT
提交事务。
COMMIT;
9.3 ROLLBACK
回滚事务。
ROLLBACK;
9.4 SAVEPOINT
设置事务的保存点。
SAVEPOINT save_point_name;
9.5 RELEASE SAVEPOINT
释放保存点。
RELEASE SAVEPOINT save_point_name;
10. 复制命令
10.1 SHOW MASTER STATUS
显示主服务器的状态信息。
SHOW MASTER STATUS;
10.2 SHOW SLAVE STATUS
显示从服务器的状态信息。
SHOW SLAVE STATUS;
10.3 CHANGE MASTER TO
配置从服务器连接到主服务器。
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replica_user', MASTER_PASSWORD='password';
11. 系统变量命令
11.1 SHOW VARIABLES
显示 MySQL 系统变量。
SHOW VARIABLES;
11.2 SET
设置系统变量。
SET GLOBAL max_connections = 200;
11.3 SHOW STATUS
显示 MySQL 服务器的状态信息。
SHOW STATUS;
11.4 SHOW PROCESSLIST
显示当前所有活动的线程。
SHOW PROCESSLIST;
12. 查询优化命令
12.1 EXPLAIN
查看查询的执行计划。
EXPLAIN SELECT * FROM employees WHERE salary > 5000;
12.2 OPTIMIZE TABLE
优化表,整理碎片。
OPTIMIZE TABLE employees;
13. 备份与恢复
13.1 BACKUP TABLE
备份表。
BACKUP TABLE employees TO '/backup';
13.2 RESTORE TABLE
恢复备份的表。
RESTORE TABLE employees FROM '/backup';
14. 总结
MySQL 提供的命令范围非常广泛,可以进行数据库和表的管理、数据操作、用户权限管理、事务控制、备份恢复等多项操作。熟练掌握这些命令对于日常的数据库管理和优化非常重要。通过不断练习和实践,你将能够高效地管理 MySQL 数据库及其相关功能。