目录
一、库操作
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来查看数据库连接情况。