MySQL数据库的操作

前面我们已经在Ubuntu系统下安装了MySQL数据库,接下来我们就来学习MySQL数据库的基础操作方面的学习

目录

创建数据库

参数:

字符集与校验规则

查看系统默认字符集和校验规则

查看数据库支持的字符集

查看数据库支持的字符集校验规则

校验规则对数据库的影响

不区分大小写

区分大小写

操控数据库

查看数据库

显示创建语句

修改数据库

删除数据库

数据库的备份与恢复

备份

恢复

其他方式

查看数据库连接情况


创建数据库

sql 复制代码
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...

参数:

DATABASE与 **SCHEMA**是同义词,均可使用,效果完全一致。这是 MySQL 为兼容其他数据库系统(如 PostgreSQL)而提供的别名。

[IF NOT EXISTS]:防止因数据库已存在而报错。若指定此子句,当数据库存在时,服务器仅产生一个警告而非错误。这在自动化脚本中极为实用,可实现幂等操作。

db_name 必须符合标识符命名规范:最大长度 64 字符,可包含字母、数字、下划线、$ 等,但不能全部由数字组成 ,且不能是保留字(除非用反引号包裹)。推荐使用小写字母和下划线组合,避免跨平台大小写敏感问题(受 lower_case_table_names 系统变量影响)。

[create_option] ... 是可变参数部分,可在一条语句中指定多个选项,用空格分隔。这些选项决定了数据库的物理属性和默认特性。以下是它的参数:

CHARACTER SET:字符集

作用 :定义数据库中存储字符串时使用的字符编码,决定了能够存储哪些语言的字符。例如,utf8mb4 支持完整的 Unicode 字符集,包括emoji表情。

语法CHARACTER SET [=] charset_name,等号为可选。

  • 实战建议

    • 新项目必须 指定 utf8mb4,避免因默认字符集(如老版本的 latin1)导致中文乱码。

    • 可通过 SHOW CHARACTER SET; 查看当前 MySQL 实例支持的所有字符集。

COLLATE:排序规则

  • 作用 :定义字符串比较和排序的规则,如是否区分大小写、是否区分重音。例如,utf8mb4_general_ci(不区分大小写,性能略高)和 utf8mb4_unicode_ci(基于Unicode标准排序,更准确)。

  • 语法COLLATE [=] collation_name

  • 重要约束 :指定的排序规则必须与字符集兼容。每个字符集都有其默认排序规则。

  • 实战建议

    • 若无特殊排序需求(如大小写敏感),推荐使用 utf8mb4_0900_ai_ci(MySQL 8.0)或 utf8mb4_unicode_ci(MySQL 5.7)。

    • 可通过 SHOW COLLATION; 查看所有可用的排序规则。

ENCRYPTION:默认加密(MySQL 8.0.16 引入)

  • 作用:设置数据库的默认加密属性,该数据库中新建的表将继承此设置。

  • 取值

    • 'Y':启用加密。

    • 'N':禁用加密。

  • 未指定时的行为 :继承系统变量 default_table_encryption 的值。

  • 权限要求 :若启用了 table_encryption_privilege_check 变量,指定与 default_table_encryption 不同的加密设置需要 TABLE_ENCRYPTION_ADMIN 权限。

  • 实战建议 :在金融、医疗等合规要求高的场景,建议显式指定 ENCRYPTION 'Y'

示例:

字符集与校验规则

创建数据库的时候有两个编码集------数据库编码集和数据库校验集。

  1. 数据库编码集 -- 数据库未来存储数据

  2. 数据库校验集 -- 支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式

无论对数据库做任何操作,都必须保证操作与编码是一致的。且如果创建一个数据库,默认字符集为utf8,教员准则为utf8_ general_ ci

查看系统默认字符集和校验规则

sql 复制代码
-- 查看当前服务器设置
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

查看数据库支持的字符集

sql 复制代码
show charset;

查看数据库支持的字符集校验规则

sql 复制代码
show collation;

校验规则对数据库的影响

校对规则是附加在特定字符集之上的一套比较规则 。它决定了数据库在比较两个字符串时,遵循怎样的逻辑。其中,最重要的维度之一就是大小写敏感度

大小写敏感(Case-Sensitive, _cs_bin'A''a' 被视为不同的字符。

大小写不敏感(Case-Insensitive, _ci'A''a' 被视为相同的字符。

这里需要特别说明:以 _bin 结尾的校对规则(如 utf8mb4_bin)是基于字符的二进制编码值进行比较,因此它天然就是大小写敏感的 ,而且比 _cs 更严格------它还会区分带重音与不带重音的字符

不区分大小写

sql 复制代码
create database test1 collate utf8_general_ci;

use test1;

create table person(name varchar(20));

insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

进行查询和排序

区分大小写

sql 复制代码
create database test2 collate utf8_bin;

use test2;

create table person(name varchar(20));

insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

操控数据库

查看数据库

sql 复制代码
SHOW DATABASES [LIKE 'pattern' | WHERE expr];

information_schema.SCHEMATA

显示创建语句

sql 复制代码
SHOW CREATE {DATABASE | TABLE | VIEW | PROCEDURE | FUNCTION | EVENT | TRIGGER} object_name;

参数:

DATABASE:显示创建数据库的语句,包含字符集和校对规则。

TABLE:显示创建表的完整语句,包括列定义、索引、约束、表选项(如引擎、自增值、字符集等)。

VIEW:显示创建视图的语句,包含视图定义和算法选项。

PROCEDURE / FUNCTION:显示存储过程和函数的定义,包含参数、返回值、SQL语句等。

EVENT:显示事件调度器的定义。

TRIGGER :显示触发器定义(MySQL 8.0+,需指定表名,SHOW CREATE TRIGGER trigger_name)。

修改数据库

sql 复制代码
ALTER DATABASE db_name [create_option] ...

删除数据库

sql 复制代码
DROP DATABASE [IF EXISTS] db_name;

删除数据库不可逆!轻易不要删除,如果要删除之前必须备份!

数据库的备份与恢复

备份

sql 复制代码
mysqldump [options] db_name [tbl_name ...] > backup.sql
mysqldump [options] --databases db_name1 db_name2 ... > backup.sql
mysqldump [options] --all-databases > backup.sql

参数

  • 连接选项

    • -u, --user=name:用户名

    • -p, --password[=name]:密码(建议不直接写密码,留空后交互输入)

    • -h, --host=name:主机名

    • -P, --port=#:端口号

  • 备份内容控制

    • --databases:备份指定数据库,且会在备份文件中包含 CREATE DATABASEUSE 语句。

    • --all-databases:备份所有数据库(包含系统库,如 mysql,恢复时需谨慎)。

    • --tables:覆盖 --databases 选项,用于备份指定表(不创建数据库语句)。

    • --no-data:只备份结构,不备份数据。

    • --where='condition':只备份满足条件的行。

    • --ignore-table=db_name.tbl_name:排除指定表。

  • 一致性保证

    • --single-transaction:对 InnoDB 表在备份时启动一个事务,获得一致性快照,无需锁表(强烈推荐)。

    • --lock-tables:对 MyISAM 表等不支持事务的引擎,在备份时锁定所有表(默认)。

    • --flush-logs:备份前刷新二进制日志,便于基于时间点恢复。

  • 包含存储对象

    • --routines:备份存储过程和函数。

    • --triggers:备份触发器(默认包含)。

    • --events:备份事件调度器。

  • 输出格式

    • --xml--tab(生成以 Tab 分隔的数据文件,与 SELECT INTO OUTFILE 配合使用)。

    • --compact:生成更简洁的输出(省略注释、设置变量等)

恢复

恢复通常通过 mysql 客户端或 source 命令执行 SQL 文件

sql 复制代码
mysql -u root -p db_name < backup.sql

参数注意事项

  • 如果备份文件包含 CREATE DATABASE 语句,则恢复时无需指定数据库名,直接 mysql -u root -p < backup.sql

  • 对于大文件,建议在 mysql 客户端中使用 source 命令,或通过管道导入。

其他方式

物理备份 :直接拷贝数据目录(需停止服务或使用 xtrabackup 等热备工具)。适用于大型数据库,恢复速度快。

二进制日志 :开启 log_bin 后,可通过 mysqlbinlog 工具解析日志实现增量恢复(基于时间点或位置)。

查看数据库连接情况

sql 复制代码
show processlist;

本期关于MySQL数据库的相关操作就介绍到这里了,喜欢请点个赞谢谢。

封面图如下:

相关推荐
2401_900151542 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python
qq_5470261792 小时前
RAG 向量数据库
数据库·langchain
昵称只能一个月修改一次。。。2 小时前
SQLite
数据库
身如柳絮随风扬2 小时前
MySQL为什么使用B+树?
数据库·b树·mysql
短剑重铸之日2 小时前
《ShardingSphere解读》04 配置驱动:ShardingSphere 中的配置体系是如何设计的?
java·数据库·后端·spring·shardingsphere
胡斌附体2 小时前
MySQL 在 Docker 环境下连接变慢问题记录
数据库·mysql·docker·连接··本机·外部机器连接
·云扬·2 小时前
【MySQL实操】停服务方式新增从库:从架构到落地全指南
数据库·mysql·架构
真智AI2 小时前
FastAPI+SQLite任务API:从零到可测上线
数据库·sqlite·fastapi
6+h2 小时前
【MySQL】分表分库设计详解
数据库·mysql