MySQL字符集介绍及设置规范

4天-字符集介绍及设置规范

字符集介绍

字符集是一个系统支持的所有抽象字符的集合,字符是各种文字和符号的总称,包括国家文字,标点符号,图像符号,数字等。。。。

mysql数据库的字符集

字符集(character)
校对规则(collation)

mysql中常见的字符集

  1. UTF-8(只支持3字节数据)和UTF-8mb4

说明:utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的字符。 采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑4字节

  1. LATIN1
  2. GBK

常见的校对规则

MySQL字符集介绍及设置规范_第1张图片

  1. ci:大小写不敏感
  2. cs或bin:大小写敏感 ->>针对英文

说明:建议用大小写敏感,到底用那个还是根据程序员来设置的。

可以使用以下命令查看

show charset    #查看字符集
show collation  #查看排序规则

字符集的设置

  • 操作系统级别
# 查看文件
cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

# 查看变量
echo $LANG
en_US.UTF-8
  • 操作系统客户端级别(SSH,xshell、CRT)

客户端的字符集也要和系统还有mysql都设置一样的

  • MySQL实例级别

方法一:

在编译安装时就指定如下服务端字符集

cmake .
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \

方法二:

在配置my.cnf文件中设置字符集

[mysqld]
character-set-server=utf8
  • 获取帮助并查询
help create database;
show character set;
  • 数据库中建库级别
    查看创建库的属性
show create database <库名>
show create table <表名>
#例子
mysql> show create database world;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| world    | CREATE DATABASE `world` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+

#规范建库的写法
create database shuai default charset  utf8 default collate= utf8_general_ci;
  • 数据库中建表级别
mysql>  CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`name` char(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

数据往表里插入所以字符集按照表里的字符集优先使用

注意:

更改字符集时,一定要保证由小往大改后者必须是前者的严格超集(比如:之前用的latin1要改成utf8就可能出问题,因为utf8有可能,不能识别的拉丁文)生产环境中不能随便改

问题:

如果在生产环境中,字符集不够用或者字符集不合适该怎么处理?

生产环境更改数据库(含数据)字符集的方法

alter database old CHARACTER SET utf8 collate utf8_general_ci;
alter table t1 CHARACTER SET utf8;

更改时要慎重,不要随便更改,有时候超集也会出现不兼容然后乱码的现象!

你可能感兴趣的:(MySQL数据库)