MySQL 常用的操作命令(会不断补充)

mysql命令2个月前更新 xiao
24 0

MySQL 常用操作命令

1. 连接数据库

mysql -u 用户名 -p

2. 查看数据库列表

SHOW DATABASES;

3. 创建数据库

CREATE DATABASE 数据库名;

4. 删除数据库

DROP DATABASE 数据库名;

5. 使用数据库

USE 数据库名;

6. 查看当前使用的数据库

SELECT DATABASE();

7. 查看数据库中的表

SHOW TABLES;

8. 创建表

CREATE TABLE 表名 (
    列名1 数据类型 [约束],
    列名2 数据类型 [约束],
    ...
);

9. 删除表

DROP TABLE 表名;

10. 查看表结构

DESCRIBE 表名;

11. 查看表的详细信息

SHOW CREATE TABLE 表名;

12. 插入数据

INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);

13. 更新数据

UPDATE 表名 SET 列1 = 值1, 列2 = 值2 WHERE 条件;

14. 删除数据

DELETE FROM 表名 WHERE 条件;

15. 查询数据

SELECT 列1, 列2, ... FROM 表名 WHERE 条件;

16. 条件查询(常见操作符)

SELECT * FROM 表名 WHERE 列1 = 值1 AND 列2 > 值2;

常见操作符:
=: 等于
>: 大于
<: 小于
>=: 大于等于
<=: 小于等于
!=<>: 不等于
LIKE: 模糊匹配
BETWEEN: 范围查询
IN: 在指定值范围内

17. 排序

SELECT * FROM 表名 ORDER BY 列名 ASC;   -- 升序
SELECT * FROM 表名 ORDER BY 列名 DESC;  -- 降序

18. 分页查询

SELECT * FROM 表名 LIMIT 偏移量, 条数;
-- 示例:获取第2页,每页10条数据
SELECT * FROM 表名 LIMIT 10, 10;

19. 聚合函数

SELECT COUNT(*) FROM 表名;          -- 计算记录数
SELECT AVG(列名) FROM 表名;         -- 计算平均值
SELECT SUM(列名) FROM 表名;         -- 计算总和
SELECT MAX(列名) FROM 表名;         -- 计算最大值
SELECT MIN(列名) FROM 表名;         -- 计算最小值

20. 分组查询

SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;

21. 条件分组查询

SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING COUNT(*) > 1;

22. 联接查询(JOIN)

-- 内连接 (INNER JOIN)
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列名 = 表2.列名;

-- 左连接 (LEFT JOIN)
SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名;

-- 右连接 (RIGHT JOIN)
SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列名 = 表2.列名;

23. 索引操作

-- 创建索引
CREATE INDEX 索引名 ON 表名 (列名);

-- 删除索引
DROP INDEX 索引名 ON 表名;

24. 修改表结构

-- 添加列
ALTER TABLE 表名 ADD 列名 数据类型;

-- 删除列
ALTER TABLE 表名 DROP COLUMN 列名;

-- 修改列
ALTER TABLE 表名 MODIFY 列名 新数据类型;

25. 查看当前用户权限

SHOW GRANTS FOR 当前用户;

26. 修改用户权限

GRANT 权限 ON 数据库.* TO '用户名'@'主机';

27. 删除用户

DROP USER '用户名'@'主机';

28. 退出 MySQL

EXIT;

在 MySQL 中,常用的数据库备份和导入命令包括使用 mysqldump 进行备份以及使用 mysql 进行导入。下面是相关命令的详细说明:

29. 数据库备份命令(使用 mysqldump

备份整个数据库

mysqldump -u 用户名 -p 数据库名 > 备份文件.sql
  • -u 用户名: 指定 MySQL 用户名
  • -p: 提示输入密码
  • 数据库名: 要备份的数据库名称
  • 备份文件.sql: 保存备份的文件名及路径

示例:

mysqldump -u root -p my_database > /path/to/backup/my_database_backup.sql

备份多个数据库

mysqldump -u 用户名 -p --databases 数据库1 数据库2 ... > 备份文件.sql
  • --databases 后跟多个数据库名称,用空格隔开。

示例:

mysqldump -u root -p --databases db1 db2 > /path/to/backup/multiple_databases_backup.sql

备份所有数据库

mysqldump -u 用户名 -p --all-databases > 备份文件.sql
  • --all-databases 表示备份所有数据库。

示例:

mysqldump -u root -p --all-databases > /path/to/backup/all_databases_backup.sql

备份数据库的某个表

mysqldump -u 用户名 -p 数据库名 表名 > 备份文件.sql
  • 数据库名: 数据库名称
  • 表名: 需要备份的表名称

示例:

mysqldump -u root -p my_database my_table > /path/to/backup/my_table_backup.sql

备份时不包括数据(仅备份结构)

mysqldump -u 用户名 -p -d 数据库名 > 备份文件.sql
  • -d--no-data 表示只备份表结构,不备份数据。

示例:

mysqldump -u root -p -d my_database > /path/to/backup/my_database_structure_backup.sql

备份时压缩文件(使用 gzip

mysqldump -u 用户名 -p 数据库名 | gzip > 备份文件.sql.gz
  • 使用管道 (|) 将备份数据传递给 gzip,然后进行压缩。

示例:

mysqldump -u root -p my_database | gzip > /path/to/backup/my_database_backup.sql.gz

2. 数据库导入命令(使用 mysql

导入数据库

mysql -u 用户名 -p 数据库名 < 备份文件.sql
  • 数据库名: 要导入的目标数据库名称
  • <: 将 SQL 文件中的内容导入到指定数据库

示例:

mysql -u root -p my_database < /path/to/backup/my_database_backup.sql

导入压缩的备份文件

如果备份文件是 .gz 格式,可以通过管道命令进行解压并导入:

gunzip < 备份文件.sql.gz | mysql -u 用户名 -p 数据库名
  • gunzip < 备份文件.sql.gz:解压 .gz 文件
  • | mysql -u 用户名 -p 数据库名:将解压后的 SQL 内容导入数据库

示例:

gunzip < /path/to/backup/my_database_backup.sql.gz | mysql -u root -p my_database

导入多个数据库(如果备份时使用了 --databases

mysql -u 用户名 -p < 备份文件.sql
  • 备份文件.sql 包含多个数据库的备份文件,可以直接导入。

示例:

mysql -u root -p < /path/to/backup/multiple_databases_backup.sql

创建数据库并导入

如果你想导入的数据库还未创建,可以先手动创建数据库,然后导入备份数据:

  1. 创建数据库:
    CREATE DATABASE 数据库名;
    
  2. 导入备份:
    mysql -u 用户名 -p 数据库名 < 备份文件.sql
    

示例:

mysql -u root -p -e "CREATE DATABASE new_database;"
mysql -u root -p new_database < /path/to/backup/new_database_backup.sql

这些是常见的 MySQL 数据库备份与恢复命令。mysqldump 提供了强大的备份功能,而 mysql 命令用于从 SQL 文件导入数据。如果你需要定期备份,建议结合脚本自动化这些操作。

© 版权声明

相关文章

没有相关内容!

暂无评论

暂无评论...