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;

-- 修改表结构的Collation属性。
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
  • binary:在不区分大小写的 collate 中强制区分大小写。
1
2
3
4
5
-- 在每一个条件前加上binary关键字。
select * from user where binary username = 'admin' and binary password = 'admin';

-- 将参数以binary('')包围。
select * from user where username like binary('admin') and password like binary('admin');

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!