mysql 建表

本文详细解析了MySQL中字符集CHARACTERSET与比对规则COLLATE的作用及配置方法,包括不同级别(服务器、数据库、数据表、列)的设置,以及大小写敏感性的控制。

那天在创建表的时候,每个创建的字段都需要加上如下一行

CHARACTER SET utf8 COLLATE utf8_bin

就查了一下这一行代码

CHARACTER SET
这是设置字符集的,常见的字符集有 utf-8、Unicode、GB2312
在这里插入图片描述
可通过 show charset;来查看支持的字符集

COLLATE
即比对方法。用于指定数据集如何排序,以及字符串的比对规则。
在这里插入图片描述
在这里插入图片描述
可通过

show collation;
show collation like 'utf8%';

来查看每种字符集对应的有哪些collation。

后缀是 ci ,是 case insensitive,表示大小写不敏感;而 cs,是 case sensitive,表示大小写敏感。

会发现 utf8 字符集是没有 cs 的,但是 utf8_bin,这个就是大小写敏感。


设置 charset 和 collation

1 服务器级别

show global variables like 'character_set_server';
show global variables like 'collation_server';

在这里插入图片描述
修改配置文件 my.ini

character-set-server=utf8
collation_server=uft8_general_ci

默认字符集是 Iatin1

如果将字符集设置为 utf8,collation 默认是 utf8_general_ci

2 数据库级别

select * from information_schema.schemata where schema_name='myweb';

在这里插入图片描述
默认是使用服务器级别的配置

如要单独设置,可以创建表时指定

CREATE DATABASE myweb DEFAULT CHARACTER SET utf8mb4  COLLATION utf8mb4_general_ci

3 数据表级别

show create table myweb.w_account;

默认是使用数据库级别的配置

如要单独设置,可以创建表的时候指定

CREATE TABLE `w_account` (
  `oid` varchar(32) NOT NULL COMMENT 'oid'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='账号表'

4 列级别
默认是使用数据库级别的配置

如要单独设置,可以创建或修改字段的时候指定

ALTER TABLE w_account MODIFY oid VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'oid'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值