系统变量
1、定义:MySQL服务器程序在运行过程中会用到许多影响程序运行的变量。
2、个数:有好几百个,600+个吧
3、查看系统变量:
SHOW [GLOBAL|SESSION] AVRIABLES [LIKE 匹配模式];
4、设置系统变量:
a.通过启动项设置
b.服务器程序运行过程中设置
5、作用范围:
a.GLOBAL(全局范围):影响服务器的整体操作。具有GLOBAL作用范围的系统变量可以称为全局变量。
b.SESSION(会话范围):影响某个客户端连接的操作。具有SESSION作用范围的系统变量可以称为会话变量。
6、注意:
a.不是所有的系统变量都具有GLOBAL和SESSION的作用范围;
b.有些系统变量是只读的,并不能设置值;
状态变量
1、定义:MySQL服务器程序中维护了许多关于程序运行状态的变量。
2、只能由服务器程序自己设置,不能人为设置
3、查看状态变量:
SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配模式];
字符集和比较规则
1、编码定义:将字符映射成二进制数据的过程。
2、解码定义:将二进制数据映射到字符的过程。
3、人们抽象出一个字符集的概念来描述某个字符范围的编码规则。
4、常见字符集:
a.ASCII码
b.ISO8859-1
c.GB2312
d.GBK
e.UTF-8
- utfmb3:用1-3个字节表示字符
- utfmb4:用1-4个字节表示字符
5.查看MySQL支持的字符集
SHOW [(CHARACTER SET)|CHARSET] [LIKE 匹配模式];
6、查看MySQL支持的比较规则
SHOW COLLATION [LIKE 匹配模式];
7、字符集和比较规则的级别
a.服务器级别
# 查看服务器支持的字符集
SHOW VARIABLES LIKE 'character_set_server';
# 查看服务器支持的比较规则
SHOW VARIABLES LIKE 'collation_server';
b.数据库级别
# 创建数据库时指定
CREATE DATABASE db_name [[DEFAULT] CHARACTER SET 字符集名称] [[DEFAULT] COLLATE 比较规则名称];
# 修改数据时指定
ALTER DATABASE db_name [[DEFAULT] CHARACTER SET 字符集名称] [[DEFAULT] COLLATE 比较规则名称];
c.表级别
# 创建表时指定
CRATE TABLE table_name (...column infos...) CHARACTER SET 字符集名称] [[DEFAULT] COLLATE 比较规则名称];
# 修改表时指定
ALTER TABLE table_name CHARACTER SET 字符集名称] [[DEFAULT] COLLATE 比较规则名称];
d.列级别
# 创建表时指定列的字符集和比较规则
CREATE TABLE table_name (
column_name1 column_type [CHARACTER SET 字符集名称] [COLLATE 比较规则],
... ...
);
# 修改表的列时,指定列的字符集和比较规则
ALTER TABLA table_name MODIFY column_name1 column_type [CHARACTER SET 字符集名称] [COLLATE 比较规则];