MySQL 字符集与排序
本文最后更新于:2024年3月18日 凌晨
MySQL 字符集与排序
Character set
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| -- 创建数据库时指定字符集。 create schema schema_name character set utf8 collate utf8_general_ci;
-- 创建表时指定字符集。 create table table_name engine=InnoDB default charset=utf8;
-- 查看表的字符集信息。 show create table table_name;
-- 修改表的默认字符集。 alter table table_name default character set utf8 collate utf8_general_ci;
-- 修改字段的字符集。 alter table table_name change column_name column_name varchar(255) character set utf8;
|
Collate
- Mysql 默认的字符检索策略:
utf8_general_ci
,表示不区分大小写;
utf8_general_cs
表示区分大小写。
utf8_bin
表示二进制比较,同样也区分大小写。
- 注意:在 Mysql 5.6.10 版本中,不支持
utf8_genral_cs
- 修改表 collate 属性:创建表时,直接设置表的 collate 属性为
utf8_general_cs
或者 utf8_bin
如果已经创建表,则直接修改字段的 Collation 属性为 utf8_general_cs
或者 utf8_bin
1 2 3 4 5 6 7 8
| CREATE TABLE testt( id INT PRIMARY KEY, name VARCHAR(32) NOT NULL ) ENGINE = INNODB COLLATE =utf8_bin;
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
|
- binary:在不区分大小写的 collate 中强制区分大小写。
1 2 3 4 5
| select * from user where binary username = 'admin' and binary password = 'admin';
select * from user where username like binary('admin') and password like binary('admin');
|