目录
库的操作
创建库
语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明一下:
- SQL中大写的表示关键字,[ ]中代表的是可选项。
- CHARSET用于指定数据库所采用的编码格式。
- COLLATE用于指定数据库所采用的校验规则。
注意: 如果创建数据库时未指明数据库的编码格式或校验规则,则默认使用MySQL配置文件中对应的编码格式或校验规则。
创建数据库案例
采用默认的编码格式和校验规则创建数据库,即不特别指明。
创建名为 db1 的数据库,如下:
create database db1;

说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。
创建一个使用utf8字符集的 db2 数据库
创建数据库时通过charset指明数据库的编码格式即可。如下:
create database db2 charset=utf8;

注意: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8。
创建一个使用utf字符集,并带校对规则的 db3 数据库。
create database db3 charset=utf8 collate utf8_general_ci;

注意: SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci。
字符集和校验规则
查看系统默认字符集以及校验规则
查看系统默认的字符集
通过查看MySQL系统变量variables中的character_set_database,可以得知系统默认的字符集。如下:
show variables like 'character_set_database';

注意: 如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集。
查看系统默认的字符集校验规则
通过查看MySQL系统变量variables中的collation_database,可以得知系统默认的字符集校验规则。如下:
show variables like 'collation_database';

注意: 如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集校验规则。
查看数据库支持的字符集
我们可以通过show charset命令在SQL中进行查看,如下:

说明一下: 字符集主要是控制用什么语言,比如utf8就可以使用中文。
查看数据库支持的字符集校验规则
我们可以通过show collation命令在SQL中进行查看,如下:
show collation;

校验规则对数据库的影响
字符集校验规则是在字符集内用于比较字符的一套规则,用于对数据进行比对。比方说,日常中我们就认为a在b前面,b在c前面,这就好比类似于比较字符的规则。
因此为了保证读取的数据和存储的数据是一致的,因此字符集编码格式和校验规则必须是对应的。但实际同一中字符集编码格式一般会有多种可选择的校验规则,比如utf8编码格式的校验规则有utf8_general_ci、utf8_bin、utf8_unicode_ci等校验规则。
使用不同的校验规则操作数据库中的数据可能会得到不同的结果,比方说utf8_ general_ ci就是不区分大小写的,其就认为a等于A,b等于B。但utf8_ bin就反过来,其区分大小写,根据ASCII表得知对应小写的ASCII比起大写大32。所以不同的校验规则会对数据库有不同的影响,使用的时候要注意。
操纵数据库
查看数据库
使用show databaseSQL可以查看系统中所有的数据库。如下:
show databases;

显示创建语句
使用show create database 数据库名SQL可以查看对应数据库的创建语句。如下:
show create database database_name;

说明一下:
- MySQL建议SQL中的关键字使用大写,但不是必须的。
- 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
- /*!80016 DEFAULT ENCRYPTION='N' */不是注释,它表示当前MySQL版本如果大于8.0016,则执行后面的SQL语句。
修改数据库
修改数据库的语法如下:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明一下:
-
对数据库的修改主要指的是修改数据库的
DROP DATABASE [IF EXISTS] db_ name;字符集或校验规则。
比如将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin。如下:
alter database db1 charset=gbk;

删除数据库
删除数据库的语法如下:
DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库
备份和恢复
备份
语法:
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
为了演示数据库备份,下面我们在前面创建的db3数据库中创建两个表。如下:

并在两个表中随便插入两条数据

这时在命令行中执行如下命令即可将该数据库进行备份,并指定将备份后产生的文件存放在当前目录下。如下:
mysqldump -P3306 -u root -p123456 -B mytest > mytest.sql

打开back.sql文件即可看到,文件中的内容实际就是我们在该数据库中执行的各种SQL命令,包括创建数据库、创建表、插入数据等SQL语句。
还原
语法:
source 数据库备份存储的文件路径
为了演示数据库恢复,我们先将刚才创建的数据库删除。然后再进行还原。
source mytest.sql;
需要注意的就是:确保 mytest.sql 文件在当前工作目录。
因为本人还原时,输入SQL后没有反应,就不贴图了。
注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
我们就修改SQL即可,指定备份表即可,如果多个就用空格隔开。
mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
查看连接情况
语法:
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。
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这