文章目录
- 库的操作
- 创建数据库
- 字符集与校验集
- 那么该如何查看当前数据库默认的字符集与校验规则?
- 查看数据库所支持的字符集与校验集
- 不同字符集(校验集)之间的区别
- 基本操作
- 查看数据库
- 显式数据库创建语句
- 数据库的修改
- 数据库的删除
- 数据库的备份
- 检查连接
库的操作
创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [[create_specification],[create_specification]......]
create_specification:
[DEFAULT] CHARACTER SET charset_name #编码集
[DEFAULT] COLLATE collation_name #校验集
以上即为创建数据库的基本语法
其中:
大写字母表示关键字 当然在MySQL中关键字不区分大小写;
[]表示 可选项(若是不需要可选项即可默认建库);
CREATE DATABASE db_name;
CHARACTER SET:表示指定数据库采用的字符集;
COLLATE:表示指定数据库字符集的校验集;
例:
CREATE DATABASE IF NOT EXISTS test1 CHARACTER SET utf8; #建立一个字符集为utf8的test1数据库;
CREATE DATABASE IF NOT EXISTS test2 CHARSET=utf8 COLLATE utf8_general_ci;#建立一个字符集为utf8且校验集为utf8_general_ci的test2数据库;
字符集与校验集
数据库主要用两个编码集,分别为字符集
与校验集
;
-
数据库编码集
所谓字符集即为数据存入数据库时的编码形式(写);
-
数据库校验集
所谓数据库校验集即为支持数据库字段比较所使用的编码,本质上也是读取数据时所采用的格式(读);
但实际上在操作中,无论是什么操作,都需要尽量要使编码一致;
假设编码集采用
utf-8
而校验集采用gbk
则可能出现未知的错误;
那么该如何查看当前数据库默认的字符集与校验规则?
show variables like 'character_set_database'; #查看默认字符集 show variables like 'collation_database'; #查看默认校验规则
而实际上在对
/etc/my.cnf
的mysql的配置文件中就已经配置了默认的编码格式为utf-8
;
查看数据库所支持的字符集与校验集
除了查看默认的字符集与校验集以外还可以查看数据库所支持的字符集与校验集;
show charset; #查看数据库所支持的字符集
show collation; #查看数据库所支持的校验集
不同字符集(校验集)之间的区别
假设存在test1
与test2
两个数据库;
其中两个数据库的字符集都为utf8
;
而test1
数据库的校验集为utf8_general_ci
[不区分大小写],test2
数据库的校验集为utf8_bin
[区分大小写];
同时都建立一个名为Person
的表;
其表内数据如下:
可使用SELECT * FROM Person
来读取表内数据(前提是先得use该数据库);
同时也可使用SELECT * FROM Person WHERE name='a';
来指定显式对应的数据;
这两张图表示了校验集的不同对库中数据中的影响;
-
同时也可以使用
SELECT * FROM Person ORDER BY name
;显式该表以name属性升序排序之后的结果;
由于校验集的不同导致读取数据时状态的不同;
虽然都是以升序排序,但是
utf8_general_ci
校验集不区分大小写,默认根据大小写的升降顺序进行排序;而
utf8_bin
区分大小写,即根据ASCII
码进行排序;
基本操作
查看数据库
查看数据库时可使用
SHOW DATABASES;
进行查看;若是不知道当前所使用数据库是哪个则可以调用
SELECT DATABASE()
进行查看;
显式数据库创建语句
若是想知道数据库的创建语句则可以调用
SHOW CREATE DATABASE db_name;
进行查看;其中
db_name
代表数据库名;在这里必须注意两个点:
该显示中的
'test1'
中的''
是防止该数据库名正好为数据库语句中的关键字;且
/*!40100 DEFAULT CHARACTER SET utf8*/
并不是注释的意思;而是:若是你的MySQL版本大于
40100
则执行该语句;
数据库的修改
这里的数据库的修改主要是对数据库的字符集以及校验集进行修改;
ALTER DATABASE db_name [alter_spacification] ,[alter_spacification]...]
例:
ALTER DATABASE test2 CHARSET=gbk COLLATION gbk_chinese_ci;
数据库的删除
数据库的删除的语法为
DROP DATABASE [IF EXISTS] db_name;
- 其中[]内为可选项;
- 当数据库被删除时,数据库内的表以及数据都将被删除(建议尽量不要删除数据库);
数据库的备份
备份
数据库的备份语法为
# mysqldump -P3306 -uroot -p密码 -B数据库名 > 备份路径
例:
# mysqldump -P3306 -uroot -p -B test2 > ./test2.sql
(当前目录为/home/_User/MySQL
,由于备份至当前目录,所以目录只需要到.
);
当然也可以进入该备份文件查看:实际上所备份的为历史中对该数据库操作的各种有效操作;
恢复
恢复(导入)数据库的语法为
mysql> SOURCE 路径
例如:
mysql> SOURCE /home/_User/MySQL/test2.sql
;当数据库导入回的时候,会在数据库内进行备份的数据库中进行的所有操作;
备份表
若是备份的是表的话,指令即为:
\# mysqldump -u root -p 数据库名 表名1 表名2 > 保存路径
;与备份库与之不同的是,备份表时并不需要
-B
指令;
-B
指令表示建库的操作,若是不指明-B
选项则不会保留建库操作;
备份多个库
当备份多个库时指令即为
# mysqldump -P3306 -uroot -p -B db1_name db2_name > 保存路径
需要注意:若是在备份数据库时没有指明-B
,则在恢复的时候需要先建库,再进行恢复!!!
检查连接
检查连接的指令为
SHOW PROCESSLIST;
该指令用于查看MySQL的连接状态;