三、数据库操作
3.1 查看数据库
使用 show databases 可以查看系统中所有数据库
3.2 显示创建语句
使用 show create database 数据库名 可以查看对应数据库的创建语句
MySQL建议SQL中的关键字使用大写,但不是必须的
数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突
/*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf_bin*/ 不是注释,其表示MySQL版本若大于4.10,则执行后面的SQL语句
3.3 修改数据库
ALTER DATABASE db_name [[DEFAULT] CHARSET=character_name] [[DEFAULT] COLLATE=collation_name];
注意:对数据库的修改主要指的是修改数据库的字符集或校验规则
举例:将数据库的字符集改为gbk,并将数据库的校验规则改为gbk_bin
3.4 删除数据库
DROP DATABASE [IF EXISTS] db_name;
删除数据库后,该数据库下的所有表都会被级联删除,因此不要随意删除数据库,会导致数据丢失
3.5 数据库备份与恢复
数据备份
mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ... > 数据库备份存储的文件路径
下面演示数据库备份,创建一个数据库,并在该数据库中创建两个表
在student和teacher表中分别插入两条记录
这时在命令行中执行如下命令即可将该数据库进行备份,并指定将备份后产生的文件存放在当前目录下
打开back.sql文件即可看到,文件中的内容就是对于该数据库执行的各种SQL,包括创建数据库、创建表、插入数据等
数据恢复
source 数据库备份存储的文件路径
为了演示数据库恢复,先将db6数据库删除
MySQL服务器执行如下SQL语句即可对数据库进行恢复
恢复数据库的时候就是按顺序执行数据库备份文件中的SQL语句,执行完毕后数据库也就恢复了
同时该数据库下的两张表,以及表中的数据也都恢复了
3.6 表备份与恢复
表备份
mysqldump -P 端口号 -u 用户名 -p 密码 数据库名 表名1 表名2 ... > 表备份存储的文件路径
假设在db6数据库中仅想备份student表,这时就可以在命令行中执行如下命令,并指定将备份后产生的文件存放在当前目录下
这时历史上与student表相关的SQL语句,就会被保存到备份文件中
表恢复
表恢复之前需先选中一个数据库,表明需要将表恢复到哪一个数据库中,为了防止恢复出来的表与该数据库中已有的表的表名重复,一般在恢复表时会选择创建一个空的数据库,然后在该数据库中进行表的恢复
source 表备份存储的文件路径
执行表恢复SQL语句
当执行完毕后,该数据库下就恢复出了student表,并且表中的数据也恢复了
3.7 查看连接情况
使用 show processlist 即可查看当前连接MySQL的用户
Id列:一个标识,可以在MySQL中通过kill id杀死指定(正在执行的)SQL语句
User列:显示当前用户,若不是root,这个命令就只显示权限范围内的SQL语句
Host列:显示这个语句是从哪个IP的哪个主机上发出的,可用来追踪出问题语句的用户
db列:当前执行的命令是在哪一个数据库上,若没有指定数据库,则该值为NULL
Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)
Time列:表示该连接处于当前状态的时间,单位是秒
State列:显示使用当前连接的SQL语句的状态
Info列:一般记录的是线程执行的语句,默认只显示前100个字符,若要看全部信息,需要使用show full processlist
show processlist可以告诉当前有哪些用户连接到MySQL,若查出某个用户不是正常登录,那么很有可能数据库被人入侵了,以后若发现数据库比较慢时,可以用这个SQL来查看数据库连接情况