【MySQL】库的操作

目录

一、查看和进入数据库

[1.1 查看数据库](#1.1 查看数据库)

[1.2 进入数据库](#1.2 进入数据库)

[1.3 查看当前正在使用的数据库](#1.3 查看当前正在使用的数据库)

二、创建数据库

三、字符集和校验规则

[3.1 查看系统默认字符集和校验规则](#3.1 查看系统默认字符集和校验规则)

[3.2 查看数据库支持的字符集](#3.2 查看数据库支持的字符集)

[3.3 查看数据库支持的校验规则](#3.3 查看数据库支持的校验规则)

[3.4 校验规则对数据库的影响](#3.4 校验规则对数据库的影响)

四、删除数据库

五、修改数据库

六、备份和恢复数据库

[6.1 备份数据库](#6.1 备份数据库)

[6.2 恢复数据库](#6.2 恢复数据库)

七、查看数据库连接情况


一、查看和进入数据库

1.1 查看数据库

查看数据库的语句:

sql 复制代码
show databases;

例如:

就能够查看当前的所有数据库

还可以显示某个数据库在被创建时的创建语句:

sql 复制代码
show create database 数据库名;

例如:

可以看到CREATE和DATABASE是大写的,因为MySQL建议将关键字大写,但并没有作语法上的强制要求。数据库名两侧的反引号用于在数据库名与关键字一致时进行区分,但一般不建议用关键字作为数据库名

1.2 进入数据库

要进入某个数据库,语法为:

sql 复制代码
use 数据库名;

1.3 查看当前正在使用的数据库

若要查看自己当前正在使用的数据库,则使用如下语句:

sql 复制代码
select database();

二、创建数据库

创建数据库的语法:

sql 复制代码
create database [if not exists] 数据库名 [字符集、校验规则];

其中:

  • \]内部的是可选项

  • create_specification是在创建数据库时可选的字符集或校验规则

例如我们创建一个名为temp的数据库:

当我们没有指定数据库的字符集和校验规则时,默认字符集为utf8,校验规则为utf8_general_ci(不区分大小写)

我们创建的数据库都存放在配置文件的默认保存路径当中,输入vim /etc/my.cnf 即可打开配置文件

进入该路径,查看当前路径下的所有文件

创建数据库,本质就是在对应路径下创建一个目录,因此如果我们手动在该路径下创建一个目录,在查看数据库时也能看到它。但是绝对不要用这种方式创建数据库!


三、字符集和校验规则

字符集就像我们使用的语言,如果一段数据是用中文写的,那就无法用英文来读取

创建数据库时存在字符集和校验规则。字符集是数据库未来在存储数据时采用的编码格式,校验规则是读取数据库内容时采用的编码格式

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

sql 复制代码
show variables like 'character_set_database';
show variables like 'collation_database';

可以看到默认字符集和校验规则就是utf8和utf8_general_ci

3.2 查看数据库支持的字符集

sql 复制代码
show charset;

3.3 查看数据库支持的校验规则

sql 复制代码
show collation;

3.4 校验规则对数据库的影响

在创建数据库时,若校验规则设置为utf8_ general_ ci则不区分大小写,设置为utf8_bin则区分大小写。此处我们以utf8_ general_ ci为例

首先创建数据库,校验规则设置为utf8_ general_ ci

sql 复制代码
create database temp collate utf8_general_ci;

进入该数据库,创建一张数据表(表操作在后续文章中会讲到)

然后向表中插入一些大小写不同的数据:

接着我们在表中进行查询:

发现虽然我们查询的是小写的a,但大写的A也包含在内。如果前面在创建数据库时设置为区分大小写的话就不会出现这种情况

除了查询,是否区分大小写也会影响到数据的排序情况,例如:

若不区分大小写,那么就按照字母的顺序排序,与大小写无关;若区分大小写,则大写字母和小写字母分别排序,排序结果为A B a b


四、删除数据库

删除数据库的语法:

sql 复制代码
drop database [if exists] 数据库名;

删除数据库后,数据库在对应路径下的文件夹被删除,内部的数据表也全部删除,MySQL内部也看不到该数据库了。所以删除数据库需谨慎


五、修改数据库

我们可以通过数据库的db.opt文件查看数据库当前的字符集和校验规则:

对数据库的修改主要指修改数据库的字符集和校验规则,语法如下:

sql 复制代码
alter dabatase 数据库名 更改后的字符集或校验规则;

例如我们将temp数据库的字符集修改为gbk,校验规则修改为gbk_bin:

观察db.opt:

可以看到字符集和校验规则已经修改成功


六、备份和恢复数据库

6.1 备份数据库

我们可以通过命令行来对数据库进行备份,语法如下:

sql 复制代码
mysqldump -P3306 -u root -p -B 数据库名 > 数据库备份文件的存储路径

例如:

若打开该文件,可以看到其内部都是我们历史上对数据库进行的操作

如果同时备份多个数据库,则带上多个数据库名即可:

sql 复制代码
mysqldump -P3306 -u root -p -B 数据库名1 数据库名2... > 数据库备份文件的存储路径

若备份数据库时只写了数据库名而没有带-B选项,则在恢复数据库时需要用户先创建对应的空数据库,进入该空数据后再进行还原

6.2 恢复数据库

恢复数据库的语法:

sql 复制代码
source 备份文件;

将temp数据库删除后,我们将其恢复:

备份中记录的历史操作都被一个个重新执行


七、查看数据库连接情况

语法:

sql 复制代码
show processlist;

这条SQL语句会返回一个集合,包含所有连接的详细信息,如连接ID、用户、主机、数据库、状态等

通过查看数据库的连接情况就能知道当前有哪些用户连接了我们的MySQL,如果有不知名的用户存在,可能你的数据库已经被人入侵了

我们还可以通过这条SQL语句对用户进行过滤,只查看某个用户的信息:

sql 复制代码
select * from information_schema.processlist where user='用户名';

例如:

也可以在命令行中使用MySQL的命令行工具查看连接情况:

sql 复制代码
mysqladmin processlist

以后如果发现数据库运行缓慢,可以通过这些方式查看数据库的连接情况

完.

相关推荐
LucianaiB35 分钟前
【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来
运维·数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
时序数据说1 小时前
时序数据库IoTDB在航空航天领域的解决方案
大数据·数据库·时序数据库·iotdb
.生产的驴1 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
AnsenZhu1 小时前
2025年Redis分片存储性能优化指南
数据库·redis·性能优化·分片
Johny_Zhao2 小时前
MySQL 高可用集群搭建部署
linux·人工智能·mysql·信息安全·云计算·shell·yum源·系统运维·itsm
oydcm2 小时前
MySQL数据库概述
数据库·mysql
oioihoii2 小时前
C++23中if consteval / if not consteval (P1938R3) 详解
java·数据库·c++23
带娃的IT创业者2 小时前
《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现
数据库·人工智能
husterlichf3 小时前
MYSQL 常用数值函数 和 条件函数 详解
数据库·sql·mysql
我的golang之路果然有问题3 小时前
快速了解redis,个人笔记
数据库·经验分享·redis·笔记·学习·缓存·内存