【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] 数据库名 [字符集、校验规则];

其中:

  • []内部的是可选项
  • 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

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

完.

相关推荐
王ASC1 小时前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle
Dlwyz1 小时前
问题: redis-高并发场景下如何保证缓存数据与数据库的最终一致性
数据库·redis·缓存
如意机反光镜裸2 小时前
如何快速将Excel数据导入到SQL Server数据库
数据库
Stara05112 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
不爱学习的啊Biao2 小时前
初识mysql数据库
数据库·mysql·oracle
宛唐羁客3 小时前
ODBC连接PostgreSQL数据库后,网卡DOWN后,客户端进程阻塞问题解决方法
网络·数据库
吴半杯3 小时前
Redis-monitor安装与配置
数据库·redis·缓存
是桃萌萌鸭~4 小时前
mysqldbcompare 使用及参数详解
数据库·mysql
gma9994 小时前
brpc 与 Etcd 二次封装
数据库·c++·rpc·etcd
Yz98764 小时前
hive复杂数据类型Array & Map & Struct & 炸裂函数explode
大数据·数据库·数据仓库·hive·hadoop·数据库开发·big data