MySQL —— 库操作

目录

一、库操作

1. 创建数据库

2. 创建数据库案例

二、字符集和校验规则

1. 查看系统默认字符集以及校验规则

2. 查看数据库支持的字符集

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

4. 校验规则对数据库的影响 

三、操纵数据库

1. 查看数据库

2. 显示创建语句

3. 修改数据库

4. 删除数据库

5. 备份和恢复

1. 数据库的备份和恢复

2. 表的备份和恢复

四、查看连接情况


一、库操作

1. 创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSET=charset_name] [[DEFAULT] COLLATE=collation_name];
-----------------------------------------------------------------------------------
create database [if not exists] db_name [[dafault] charset=charset_name] [[default]
collate=collation_name];
  • SQL中大写的表示关键字,[ ]中代表的是可选项。(这里我将所有的大写字母都换成了小写,小写的字母比大写的好认一些,后续我都会给出小写,方便阅读,接下来就不赘述了 )
  • CHARSET(charset)用于指定数据库所采用的编码格式。
  • COLLATE(collate)用于指定数据库所采用的校验规则

注意: 如果创建数据库时未指明数据库的编码格式或校验规则,则默认使用MySQL配置文件中对应的编码格式或校验规则。

2. 创建数据库案例

创建名为db1的数据库

create database db1;

如果没有对MySQL的配置文件进行过修改,则默认的编码格式是utf8,默认的校验规则是utf8_general_ci。

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

create database db2 charset=utf8;

SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。 

创建一个使用utf8字符集,并带校规则为utf8_general_ci的db3数据库 

create database db3 charset=utf8 collate=utf8_general_ci;

SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。 

二、字符集和校验规则

1. 查看系统默认字符集以及校验规则

show variables like 'character_set_database';
show variables like 'collation_database';

 此时查看的字符集和校验规则都是在指定的数据库下

2. 查看数据库支持的字符集

show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文。  

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

show collation;

4. 校验规则对数据库的影响 

  • 不区分大小写

创建一个数据库,校验规则使用 utf8_ general_ ci [不区分大小写]

  • 区分大小写

创建一个数据库,校验规则使用 utf8_ bin校验规则 [区分大小写]

        上面两个数据库我们分别采用了不同的校验规则进行创建,都创建出了一个person表,并向其中插入了四条记录,分别是 a A b B;接下来我们对这两张表做一次查询,看看有什么区别。

        test1表采用的默认的字符集和校验规则,我们通过select查询name等于a的记录,发现显示出来的是a和A,即默认的校验规则utf8_general_ci 是不区分大小写的。

        注:在上面的图中,我才有use test1;时出现的问题:是由于数据库太大,即数据库中表非常多,所以如果预读数据库信息,将非常慢,所以就卡住了,如果数据库中表非常少,将不会出现问题。所以要加一个 -A;

        test2表采用的校验规则是utf8_bin,我们通过select查询name等于a的记录,发现显示出来的是a,即校验规则utf8_bin 是区分大小写的。

三、操纵数据库

1. 查看数据库

show databases;

2. 显示创建语句

show create database 数据库名;

  • MySQL建议SQL中的关键字使用大写,但不是必须的。
  • 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
  • /*!40100 DEFAULT CHARACTER SET utf8 */不是注释,它表示当前MySQL版本如果大于4.10,则执行后面的SQL语句。

3. 修改数据库

ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];
--------------------------------------------------------------------
alter database db_name [[default] charset=character_name] [[default] collate=collation_name];
说明:
  • 对数据库的修改主要指的是修改数据库的字符集,校验规则

比如将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。如下: 

4. 删除数据库

DROP DATABASE [IF EXISTS] db_name;
----------------------------------
drop database [if exists] db_name;

        删除数据库后该数据库对应的文件夹就被删除了,并且删除数据库后,该数据库下的所有表也都会被级联删除,因此不要随意删除数据库。

5. 备份和恢复 

使用如下命令即可对指定数据库进行备份: 

mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ...  > 数据库备份存储的文件路径

1. 数据库的备份和恢复

 为了演示数据库备份,下面我们创建一个数据库,并在该数据库中创建两个表。如下:

在stu表中插入两条记录。如下:

 

在tec表中也插入两条记录。如下:

这时在命令行中执行如下命令即可将该数据库进行备份,并指定将备份后产生的文件存放在当前目录下。如下:

打开log.sql文件即可看到,文件中的内容实际就是我们在该数据库中执行的各种SQL命令,包括创建数据库、创建表、插入数据等SQL语句。如下:

至此我们就完成了数据库的备份

为了演示数据库的恢复,我们将刚刚创建的test1数据库删除:

这时让MySQL服务器执行如下命令即可对数据库进行恢复。如下:

实际恢复数据库的时候就是按顺序执行数据库备份文件中的SQL语句,执行完毕后数据库也就恢复出来了。如下:

同时该数据库下的两张表,以及表当中的数据也都恢复出来了。如下:

2. 表的备份和恢复

表的备份

使用如下命令即可对指定表进行备份:

mysqldump -P 端口号 -u 用户名 -p 密码 数据库名 表名1 表名2 ... > 表备份存储的文件路径

        如果只想备份数据库中的stu表,这时就可以在命令行中执行如下命令,并指定将备份后产生的文件存放在当前目录下。如下:

 这时历史上与stu表相关的SQL语句,就会被保存到备份文件当中。如下:

 至此表的备份就完成了!!

表的恢复 

        表恢复之前需要先选中一个数据库,表明需要将表恢复到哪一个数据库中,为了防止恢复出来的表与该数据库中已有的表的表名重复,一般在恢复表时会选择创建一个空的数据库,然后在该数据库中进行表的恢复。

在数据库中使用如下命令即可对指定表进行恢复:

source 表备份存储的文件路径

创建一个空的数据库test3:

执行如下命令即可对表进行恢复。如下:

        当备份文件中的SQL语句执行完毕后,该数据库下就恢复出了stu表,并且表当中的数据也都恢复出来了。如下:

四、查看连接情况

show processlist;

  • Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
  • User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
  • db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
  • Time列:表示该线程处于当前状态的时间,单位是秒。
  • State列:显示使用当前连接的SQL语句的状态。
  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist。

        show processlist可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登录的,那么很有可能你的数据库被人入侵了,以后如果发现自己的数据库比较慢时,可以用这个SQL来查看数据库连接情况。 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霄沫凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值