前面我们已经在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'。
示例:

字符集与校验规则
创建数据库的时候有两个编码集------数据库编码集和数据库校验集。
-
数据库编码集 -- 数据库未来存储数据
-
数据库校验集 -- 支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式
无论对数据库做任何操作,都必须保证操作与编码是一致的。且如果创建一个数据库,默认字符集为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 DATABASE和USE语句。 -
--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数据库的相关操作就介绍到这里了,喜欢请点个赞谢谢。
封面图如下:
