MySQL 数据库基础操作知识点整理(最新推荐)

 更新时间:2026年07月17日 09:33:28   作者:91刘仁德  
MySQL 数据库是一种广泛使用的关系型数据库管理系统,它支持多种操作系统,并以其高性能、可靠性和易用性而闻名,本文给大家介绍MySQL 数据库基础操作知识点整理,感兴趣的朋友跟随小编一起看看吧

一、数据库的创建

1. 语法格式

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

2. 参数说明

  • 大写单词为 SQL 关键字,实际编写不强制大小写,但规范建议大写
  • [] 表示可选项,编写时可省略
  • IF NOT EXISTS:仅当数据库不存在时执行创建,若已存在则不执行、不报错
  • CHARACTER SET / CHARSET:指定数据库的字符集,决定数据的存储编码格式
  • COLLATE:指定字符集的校验规则,决定数据比较、排序、查询时的编码比对规则

3. 创建案例

创建名为 db1 的数据库,使用默认字符集和校验规则:

CREATE DATABASE db1;

执行结果:

Query OK, 1 row affected (0.01 sec)

未指定时,MySQL 默认字符集为 utf8,默认校验规则为 utf8_general_ci。

创建使用 utf8 字符集的 db2 数据库:

CREATE DATABASE db2 CHARSET=utf8;

执行结果:

Query OK, 1 row affected (0.00 sec)

创建使用 utf8 字符集、utf8_general_ci 校验规则的 db3 数据库:

CREATE DATABASE db3 CHARSET=utf8 COLLATE utf8_general_ci;

执行结果

Query OK, 1 row affected (0.01 sec)

创建完数据库后,可以通过 SHOW DATABASES; 查看当前已创建的所有数据库:

SHOW DATABASES;

执行结果:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db2                |
| db3                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

创建好的数据库会在 MySQL 配置文件指定的数据目录下新建同名目录文件,一个数据库对应 Linux 下的一个目录文件,默认路径为 /var/lib/mysql。删除数据库本质上就是删除该目录,因此尽量不使用 Linux 的 mkdirrmdir 指令来操作数据库目录,应始终通过 SQL 语句完成。

4. 底层存储原理

在 Linux 系统中,MySQL 数据库本质对应文件系统中的一个目录,默认存储路径为 /var/lib/mysql。创建数据库等价于在该路径下新建同名目录,目录内会生成一个 .opt 文件,用于记录该数据库的字符集和校验规则配置。不建议直接通过 Linux 命令创建 / 删除数据库目录,应通过 SQL 语句操作。

二、字符集与校验规则

1. 核心概念

创建数据库的时候,有两套配套的编码规则,必须一一对应:

  • 数据库字符集:定义数据存储时的编码格式,决定支持哪些语言文字
  • 数据库校验集:定义数据查询、比较、排序时的读取和比对规则

所有数据库操作都必须保证编码格式一致,否则会出现乱码或比对异常。数据库内的数据表会默认继承数据库的字符集和校验规则,无需重复设置。

2. 常用查看命令

查看当前数据库的默认字符集:

SHOW VARIABLES LIKE 'character_set_database';

查看当前数据库的默认校验规则:

SHOW VARIABLES LIKE 'collation_database';

查看 MySQL 支持的所有字符集:

SHOW CHARSET;

查看 MySQL 支持的所有字符集校验规则:

SHOW COLLATION;

3. 校验规则的实际影响

以 utf8 字符集的两种常见校验规则为例:

  • utf8_general_ci:不区分大小写(ci = case insensitive)
  • utf8_bin:区分大小写(bin = binary,按二进制值精确比对)

案例对比查询结果差异

  • 不区分大小写(utf8_general_ci):查询 name='a' 会同时返回 a 和 A
  • 区分大小写(utf8_bin):查询 name='a' 仅返回 a

排序结果差异

  • 不区分大小写排序:a, A, b, B(同字母大小写排在一起)
  • 区分大小写排序:A, B, a, b(按 ASCII 码值排序,大写字母码值更小)

三、数据库的管理操作

1. 查看所有数据库

SHOW DATABASES;

执行结果:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db2                |
| db3                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

2. 查看数据库的创建语句

注意:不是创建数据库,而是展示创建数据库时候的命令。

SHOW CREATE DATABASE 数据库名;

示例:

SHOW CREATE DATABASE db1;

执行结果:

+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */     |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)

补充:查看当前所在的数据库

SELECT DATABASE();

执行结果:

+------------+
| DATABASE() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)

结果说明

  • 数据库名两侧的反引号 `:用于规避数据库名与 SQL 关键字冲突
  • /*!40100 ... */:不是普通注释,是 MySQL 版本条件语法 —— 当 MySQL 版本高于 4.01 时,才执行内部的语句,类似编程语言的条件编译。

3. 修改数据库

语法格式:

ALTER DATABASE db_name
[alter_specification [, alter_specification] ...]
alter_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

修改操作仅支持修改数据库的字符集和校验规则,无法修改数据库名。

示例:将 mytest 数据库字符集改为 gbk

ALTER DATABASE mytest CHARSET=gbk;

执行结果:

Query OK, 1 row affected (0.00 sec)

验证修改结果:

SHOW CREATE DATABASE mytest;

执行结果:

+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| mytest   | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */   |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)

4. 删除数据库

语法格式:

DROP DATABASE [IF EXISTS] db_name;

示例:

DROP DATABASE db3;

执行结果:

Query OK, 0 rows affected (0.01 sec)

验证删除结果:

SHOW DATABASES;

执行结果:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db2                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
  • IF EXISTS:仅当数据库存在时执行删除,不存在则不报错
  • 删除效果:数据库从 MySQL 中消失,对应磁盘目录被级联删除,库内所有表和数据一并删除,操作不可逆,需谨慎使用

四、数据库备份与恢复

1. 逻辑备份(mysqldump 工具)

mysqldump 是 MySQL 自带的客户端工具,必须在操作系统终端(Shell/CMD)执行,不能在 MySQL 命令行内运行。这个命令在我们下载 MySQL 的时候就安装好了的。备份本质是导出所有建库、建表、插入数据的 SQL 语句,保存为 .sql 文件。注意:这个备份不止备份了数据库里面的数据,还备份了我们以往对该数据库的有效操作,一起备份形成了一个 .sql 文件,在进行恢复的时候就把这个 .sql 文件里面记录的操作再执行一遍。

常用备份场景

备份单个完整数据库(带 -B 参数):

mysqldump -P3306 -u root -p密码 -B 数据库名 > 备份文件路径.sql

示例:

mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

执行结果(终端无额外输出,备份文件已生成):

# 查看备份文件内容(部分)
D:\> type D:/mytest.sql | head -20
-- MySQL dump 10.13  Distrib 8.0.33, for Win64 (x86_64)
--
-- Host: localhost    Database: mytest
-- ------------------------------------------------------
-- Server version	8.0.33
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /;
/!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS /;
/!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION /;
/!50503 SET NAMES utf8mb4 /;
/!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE /;
/!40103 SET TIME_ZONE='+00:00' /;
/!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 /;
/!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
/!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' /;
/!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

备份数据库中的指定表:

mysqldump -u root -p密码 数据库名 表名1 表名2 > 备份文件路径.sql

同时备份多个数据库:

mysqldump -u root -p密码 -B 数据库名1 数据库名2 > 备份文件路径.sql

-B 参数的区别

  • 带 -B:备份文件中包含 CREATE DATABASE 语句,恢复时无需提前建库
  • 不带 -B:备份文件不含建库语句,恢复前必须先手动创建空数据库并切换到该库

2. 数据恢复

在 MySQL 命令行中执行:

SOURCE 备份文件的绝对路径;

示例:

SOURCE D:/mytest.sql;

执行结果:

Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
...
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
...
恢复完成后,查看数据库确认
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mytest             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

恢复本质是依次执行备份文件中的所有 SQL 语句,重建库、表和数据。

3. 物理备份方式

由于数据库本质是磁盘目录,也可以直接拷贝数据库目录到目标路径完成备份 / 恢复,属于物理层面的备份。生产环境更推荐使用 mysqldump 等逻辑备份方式,兼容性和可控性更强。

五、查看数据库连接状态

SHOW PROCESSLIST;

执行结果:

+----+-----------------+-----------+------+---------+-------+------------------------+------------------+
| Id | User            | Host      | db   | Command | Time  | State                  | Info             |
+----+-----------------+-----------+------+---------+-------+------------------------+------------------+
|  5 | root            | localhost | db1  | Query   |     0 | init                   | SHOW PROCESSLIST |
|  6 | event_scheduler | localhost | NULL | Daemon  | 12345 | Waiting on empty queue | NULL             |
+----+-----------------+-----------+------+---------+-------+------------------------+------------------+
2 rows in set (0.00 sec)

该命令可以查看当前所有连接到 MySQL 的客户端信息,包括连接 ID、用户名、客户端地址、正在执行的命令、运行时长等。可用于:

  • 排查异常连接,判断数据库是否被非法访问
  • 数据库性能变慢时,可通过该命令查看是否有长耗时的异常连接占用资源

到此这篇关于MySQL 数据库基础操作知识点整理(最新推荐)的文章就介绍到这了,更多相关mysql数据库基础操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL ibtmp1文件查看及过大处理策略

    MySQL ibtmp1文件查看及过大处理策略

    ibtmp1 是 InnoDB 临时表空间文件,用于存储 MySQL InnoDB 引擎产生的临时数据,保证大数据操作不会溢出内存,本文给大家介绍了MySQL ibtmp1文件详解及过大处理策略,需要的朋友可以参考下
    2026-02-02
  • MySQL中使用游标触发器的方法

    MySQL中使用游标触发器的方法

    这篇文章主要介绍了MySQL中使用游标-触发器的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 浅谈mysql8.0新特性的坑和解决办法(小结)

    浅谈mysql8.0新特性的坑和解决办法(小结)

    这篇文章主要介绍了浅谈mysql8.0新特性的坑和解决办法(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 详解MySQL性能优化(一)

    详解MySQL性能优化(一)

    本文对MySQL性能优化进行了详细的总结与介绍,需要的朋友可以参考下
    2015-08-08
  • MySQL系列之redo log、undo log和binlog详解

    MySQL系列之redo log、undo log和binlog详解

    这篇文章主要介绍了MySQL系列之redo log、undo log和binlog详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • MySql存储boolean类型的操作指南

    MySql存储boolean类型的操作指南

    MySQL没有内置的boolean数据类型,存储布尔值(true/false)的最佳方式是使用TINYINT(1)类型,本文给大家介绍MySql存储boolean类型的操作指南,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • mysql数据库中各种锁归纳总结

    mysql数据库中各种锁归纳总结

    相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制,这篇文章主要给大家介绍了关于mysql数据库中各种锁归纳总结的相关资料,需要的朋友可以参考下
    2024-08-08
  • mysql日志文件之undo log和redo log

    mysql日志文件之undo log和redo log

    MySQL日志记录了MySQL数据库日常操作和错误信息,MySQL有不同类型的日志文件,下面这篇文章主要给大家介绍了关于mysql日志文件之undo log和redo log的相关资料,需要的朋友可以参考下
    2022-04-04
  • sql查询语句教程之插入、更新和删除数据实例

    sql查询语句教程之插入、更新和删除数据实例

    如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句,下面这篇文章主要给大家介绍了关于sql查询语句教程之插入、更新和删除数据的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • MySQL的视图和索引用法与区别详解

    MySQL的视图和索引用法与区别详解

    这篇文章主要介绍了MySQL的视图和索引用法与区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论