中collate_MySQL ------ 字符集(character set) 和 校对(collate)(三十一)

数据表用来存储和检索数据,不同的语言和字符集需要以不同的方式存储和检索,因此MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法

由于对于不同的行,使用不同的排序方式会产生不一样的结果,如obGE,obge,OBGE,在使不使用区分大小写排序时会产生不同的结果,而且会影响排序和搜索,更何况对于不同国家的字符,因此使用校对很重要。

常用术语:

字符集:字母和符号的集合

编码:某个字符集成员的内部指令

校队:规定字符如何比较指令

在MySQL的正常数据库活动(select、insert等)中,不需要操心太多的东西,使用何种字符集和校对的决定在服务器、数据库和表级进行。

一、查看MySQL支持众多的字符集

-- 为查看所支持的字符集完整列表 
show character set;

cb06fdf97783772225c3282e935e0494.png

上述显示了所有可用的字符集以及每个字符集的描述和默认校对

-- 查看可用的校对
  show collation;

b1797bd0cb0434776a37ec8a413aeb95.png

上述显示所有可用的校对,以及它们适用的字符集,而且其中有的字符集不止一校对

通常系统管理在安装时定义一个默认的字符集和校对。也可以在创建数据库时,指定默认的字符集和校对。

-- 为了确定所有的字符集和校对 
SHOW VARIABLES LIKE 'character%'; 
SHOW VARIABLES LIKE 'collation%';

b3af31d0f7c8d7f7d962351365d0adb3.png

二、使用字符集和校对顺序

实际上,字符集很少是服务器的范围(甚至数据库范围)的设置,不同的表,甚至不同的列都可能需要不同的字符集,而且两者都可以在创建时指定

one、指定字符集和校对在表的范围

-- 给表指定字符集和校对 在创建的时候指定 
mysql> create table obge_table
    -> (
    ->  column1 int,
    ->  column2 varchar(10)
    -> )default character set hebrew
    ->  collate hebrew_general_ci; 

上述包含一个两列的,并且指定了一个字符集合一个校对顺序

d5817085a14bb9df047e73af9a89f03b.png

注意:

1、如果指定CHARACTER SET 和COLLATE 两者,则使用这些值

2、如果只指定character set ,则使用此字符集及其默认的校对(也就是 show character set 结果中显示的)

3、如果既不指定character set 也不指定 collater 则使用数据库默认

two、指定字符集和校对在列的范围

-- 对一个表以及一个特定的列指定了character set 和 collate  
mysql>  create table obgestu.obge_table
    -> (
    ->  columns int,
    ->  column1 varchar(10),
    ->  column2 varchar(10) character set utf8 collate  utf8_general_ci
    -> )default character set hebrew collate hebrew_general_ci; 

fc1127232ae0737faad4db2b784b3fca.png

Three 、在查询时指定校对顺序

校对在对用order by 子句检索出来的数据排序时起重要的作用,如果需要用与创建表时不同的校对顺序 排序特定的select 语句,可以在select 语句自身中进行

latin1 对于不同的欧洲语言有几种校对,而且许多校对出现两次,

一次区分大小写(由_cs表示),

一次不区分大小写由(_ci 表示)

c6967a3a0a7917e91328002cd3bc24b7.png

字符集

e60ebd0636e55918de9c06ae3c3dbcc9.png
-- 为区分大小写校对
 select * from customers order by last_name,first_name collate latin1_general_cs;

select 使用collate 指定一个备用的校对顺序,将会影响到结果的排序次序。

注意:

1、在不区分大小写的表上进行区分大小写搜索可以,反之也可以

2、collate 除了可以在order by 子句中使用外,还可以用于 group by、having、聚集函数、别名等

3、如果觉得需要可以使用 Cast() 或 Convert() 函数,将 字符集进行转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值