目录
创建数据库
创建数据库案例
字符集和校验规则
查看系统默认字符集以及校验规则
查看数据库支持的字符集
查看数据库支持的字符集校验规则
校验规则对数据库的影响
操纵数据库
查看数据库
编辑 显示创建语句
修改数据库
编辑 删除数据库
备份和恢复
备份
恢复
表的备份和恢复
备份
恢复
查看连接情况
创建数据库
语法
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
- 大写的表示关键字
- [ ] 是可选项
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
创建数据库案例
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci !!!
创建数据库时不指明数据库的编码格式和校验规则!!!
创建数据库时通过charset指明数据库的编码格式!!!
注意: SQL中的charset=utf8,也可以写成character set=utf8或character set utf8 !!!
创建数据库时通过charset和collate分别指明数据库的编码格式和校验规则!!!
注意: SQL中的collate=utf8_general_ci,也可以写成collate utf8_general_ci !!!
字符集和校验规则
查看系统默认字符集以及校验规则
查看系统默认的字符集
通过查看MySQL系统变量variables中的character_set_database,可以得知系统默认的字符集!!!
注意: 如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集。
查看系统默认的字符集校验规则
通过查看MySQL系统变量variables中的collation_database,可以得知系统默认的字符集校验规则!!!
注意: 如果是在指定数据库下使用该SQL,则查看的是该数据库对应的字符集校验规则。
查看数据库支持的字符集
使用
show charset
SQL可以查看数据库支持的字符集。
注意:字符集主要是控制用什么语言。比如utf8就可以使用中文。
查看数据库支持的字符集校验规则
使用
show collation
SQL可以查看数据库支持的字符集校验规则!!!
校验规则对数据库的影响
字符集编码格式和字符集校验规则的区别!!!
- 定义不同:字符集编码格式是指将字符编码为计算机可以识别和存储的二进制数据的方式;字符集校验规则是指在比较和排序字符时所使用的规则。
- 作用不同:字符集编码格式主要用于确定字符在计算机中的存储方式;字符集校验规则主要用于确定哪些字符被认为是相等的,以及如何按照字母顺序对字符进行排序。
- 影响不同:选择不同的字符集编码格式会影响字符的存储效率和表示范围;选择不同的字符集校验规则可能会影响数据的比较和排序结果。
- 字符集编码格式指的是在存储数据时各个字符的底层编码,用于指定数据的存储格式。
- 字符集校验规则是在字符集内用于比较字符的一套规则,用于对数据进行比对。
比如我们存储数据的时候是按照utf8的格式进行存储的,那么将来在对数据做比对时也必须按照utf8的格式进行比对,因为“存数据”和“取数据”的方式必须保持一致。
校验规则对数据库的影响
现在我们知道了,为了保证读取的数据和存储的数据是一致的,因此字符集编码格式和校验规则必须是对应的。但实际同一中字符集编码格式一般会有多种可选择的校验规则,比如utf8编码格式的校验规则有utf8_general_ci、utf8_bin、utf8_unicode_ci等校验规则。
使用不同的校验规则操作数据库中的数据可能会得到不同的结果,比如utf8_general_ci校验规则在比对数据时是不区分大小写的,而utf8_bin校验规则在对比数据时则是区分大小写的。
操作数据库时采用utf8_general_ci校验规则
创建数据库时指定数据库的校验规则为utf8_general_ci,数据库的编码格式默认为utf8。
在该数据库中创建一个简单的person表,由于创建未指定表的编码格式和校验规则,因此person表将继承当前数据库的编码格式和校验规则。
这时向表中插入一些数据。
通过select语句可以查看插入表中的数据。
这时指定查看表中name='a'
的记录时会将A和a一并筛选出来,根本原因就是utf8_general_ci校验规则在进行数据比对时是不区分大小写的。
不区分大小写排序!!!
操作数据库时采用utf8_bin校验规则
创建数据库时指定数据库的校验规则为utf8_bin!!!
在该数据库中创建一个简单的person表,由于创建未指定表的编码格式和校验规则,因此person表将继承当前数据库的编码格式和校验规则。
这时向表中插入一些数据。
通过select语句可以查看插入表中的数据。
这时指定查看表中name='a'
的记录时只会将a筛选出来,根本原因就是utf8_bin校验规则在进行数据比对时是区分大小写的。
区分大小写排序
操纵数据库
查看数据库
使用
show database
SQL可以查看系统中所有的数据库。
显示创建语句
使用
show create database 数据库名
SQL可以查看对应数据库的创建语句。
- MySQL建议SQL中的关键字使用大写,但不是必须的。
- 数据库的名字加上反引号,是为了防止使用的数据库名与关键字冲突。
-
/*!40100 DEFAULT CHARACTER SET utf8 */
不是注释,它表示当前MySQL版本如果大于4.10,则执行后面的SQL语句。
修改数据库
语法
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
注意:对数据库的修改主要指的是修改数据库的字符集或校验规则。
实例: 将 test1 数据库字符集改成 gbk
删除数据库
语法
DROP DATABASE [IF EXISTS] db_name;
删除数据库后该数据库对应的文件夹就被删除了。
并且删除数据库后,该数据库下的所有表也都会被级联删除,因此不要随意删除数据库。
备份和恢复
备份
语法
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
在命令行中执行如下命令即可将该数据库test1进行备份,并指定将备份后产生的文件存放在当前目录下。 确实生成了mytest.sql 的文件!!!
打开没有mytest.sql文件即可看到,文件中的内容实际就是我们在该数据库中执行的各种SQL命令,包括创建数据库、创建表、插入数据等SQL语句。
恢复
语法
source 数据库备份存储的文件路径
为了演示数据库恢复,我们先将刚才创建的test1 删除!!!
这时让MySQL服务器执行如下命令即可对数据库进行恢复。
实际恢复数据库的时候就是按顺序执行数据库备份文件中的SQL语句,执行完毕后数据库也就恢复出来了。
同时该数据库下的表,以及表当中的数据也都恢复出来了。
表的备份和恢复
备份
语法
mysqldump -P 端口号 -u 用户名 -p 密码 数据库名 表名1 表名2 ... > 表备份存储的文件路径
恢复
语法
source 表备份存储的文件路径
原理和数据相似!!!
查看连接情况
使用
show processlist
SQL即可查看当前连接MySQL的用户。
- 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来查看数据库连接情况。