Mysql:语法:字符集、排序规则
2009-06-04 17:31
579 查看
字符集、排序规则
字符集就是 字形符号+对应的编码 的 集合
排序规则就是 如何理解和处理排序
mysql自觉其对字符集和排序规则的处理问题领先于其他数据库系统
基本特性:
分层:server、database、table、column、文字常量
分层:server、client
分层:系统配置文件、系统变量、子句
功能简单:每一级对下一级仅仅是起默认设置的作用,no other purpose
灵活:随时、随机 可以修改
支持丰富:
智能:不用担心出错!
基本命令和变量
命令:{show character set|show charaet} show collation;
变量:character_set_server collation_server、character_set_database collation_database、character_set_connection collation_connection、character_Set_client 、character_set_results、character_set_system
选项:--character-set-server --collation-server
注意
文字常量的默认字符集和排序规则是相关连接connection变量设置的。可以通过 [_character set name]'字符序列' [collation name] 修改,注意有个 "_"!
另外文字常量中的 转义字符总是connection连接变量指定的字符集中的"\x",意思是:如果指定的文字常量的字符集和连接级字符集设置如果不一致,转义字符会使用连接级字符集中的对应转义字符的encode!不过仅仅当connection字符集为latin??????还有只是认为转义字符的endcode必须是单字节字符集"\"???或者说:转义字符"\"在某些字符集下根本是无效的?
nchar:本质上是ansisql标准中的char中的一个具有预先定义的字符集属性的特例而已
unicode是character set ucs2的别名
字符集 和 排序规则 是相关联的。除非特殊需求,只要设置其一即可。设置字符集,即设置了默认的排序规则;设置排序规则,就肯定设置了其关联的字符集
方便的设置字符集
set names 'character_set_name' [collate collation_name] 相当于下面的操作:
set character_set_clent='character_set_name'
set character_set_connection='character_set_name'
set character_set_results='character_set_name'
set character set 'character_set name' 相当于下面的操作:
set character_set_clent='character_set_name'
set collation_connection=collation_database --这一点和set names 不同
set character_set_results='character_set_name'
使用mysql.exe内置客户端程序的字符集设置
选项文件配置:default-character-set
命令行参数:--default-character-set
命令:set names
命令:set character set
命令:charset --和set names 类似,但是影响以后的reconnnect
如果让server发出的信息、结果集不进行任何字符集转换:set character_set_results={null|binary}
ucs2字符集不能应用于character_set_client,如果你设置了,他不起任何作用
查询当前设置:show variables like ‘’
对于其他客户端环境
你必须要考虑应用程序所处的执行环境:是否支持字符集,字符集是否兼容,有无相关的配置或初始化字符集动作等等!
如果让server发出的信息、结果集不进行任何字符集转换:set character_set_results={null|binary},这个时候结果的字符集是有character_set_system系统变量决定的
mysql的元数据 是utf8字符集编码的
排序规则
对于比较、排序、表达式来说,排序规则有着重要而灵活的应用。他几乎可以用在sql语句的任何部分
binary 'str' 和 cast('str' as binary)完全相同
binary(m) = char(m) character set binary【<>char(m) binary】。该语法是定义二进制类型的一种形式。使用于所有文本类型。注意后面是字段属性:表示使用字符集的 二进制排序规则
特殊的binary排序规则模式 和 _bin排序规则,二者是不相同的
单位不同:字节单位 和 字符编码单位
字符集转换:无 和 有
对某些函数的影响lower()...:有 和 无
比较时是否考虑尾随空格:考虑 和 不考虑
插入 和 获取是尾随空格的处理:char(m)或右填充空格,但获取是trim掉;而binary(m)或右填充0x00,获取是保留
字符集和排序规则的压缩性
unicode字符集 和 非unicode字符集,总是转换非 unicode字符集 到unicode字符集
同一个字符集下的"_bin"、"_cs"、"_ci"字符集混杂时,总是应用"_bin"的排序规则
如果可压缩性形同,字符集相同,又不属于以上情况(排序规则为"_cs"、"_ci"),哈哈哈,你死了!
越小越高越稳定:
0:collate子句
1:两个不同排序规则的字符串连接
2:表列、存储程序、本地变量
3:系统常量、系统函数
4:文本常量的排序规则
5:null
字符集中字元的包容性:ascii是安全的
字符集对模型操作、函数的影响
简单函数的输出字符数据的字符集、排序规则和输入参数的完全相同:instr、mid、substring、lower、lcase、ucase、upper、left、right、ltrim、rtrim、trim、reverse、repea、rpad、soundex,特殊的replace总是大小写敏感的
charset()、collation()函数返回字符串的字符集、排序规则
对于多个输入,一个输出的函数:
如果有一个collate子句,就是他了
如果有2或更多个collate子句,恭喜,你死了
如果collation 都相同,就用它
其他,binary
显示字符集转换
convert('str' using character_set_name) --ansi sql标准
cast('str' as 字符数据类型 character set character_set_name)
cast('str' as 字符数据类型 ) collate collation_name
字符集就是 字形符号+对应的编码 的 集合
排序规则就是 如何理解和处理排序
mysql自觉其对字符集和排序规则的处理问题领先于其他数据库系统
基本特性:
分层:server、database、table、column、文字常量
分层:server、client
分层:系统配置文件、系统变量、子句
功能简单:每一级对下一级仅仅是起默认设置的作用,no other purpose
灵活:随时、随机 可以修改
支持丰富:
智能:不用担心出错!
基本命令和变量
命令:{show character set|show charaet} show collation;
变量:character_set_server collation_server、character_set_database collation_database、character_set_connection collation_connection、character_Set_client 、character_set_results、character_set_system
选项:--character-set-server --collation-server
注意
文字常量的默认字符集和排序规则是相关连接connection变量设置的。可以通过 [_character set name]'字符序列' [collation name] 修改,注意有个 "_"!
另外文字常量中的 转义字符总是connection连接变量指定的字符集中的"\x",意思是:如果指定的文字常量的字符集和连接级字符集设置如果不一致,转义字符会使用连接级字符集中的对应转义字符的encode!不过仅仅当connection字符集为latin??????还有只是认为转义字符的endcode必须是单字节字符集"\"???或者说:转义字符"\"在某些字符集下根本是无效的?
nchar:本质上是ansisql标准中的char中的一个具有预先定义的字符集属性的特例而已
unicode是character set ucs2的别名
字符集 和 排序规则 是相关联的。除非特殊需求,只要设置其一即可。设置字符集,即设置了默认的排序规则;设置排序规则,就肯定设置了其关联的字符集
方便的设置字符集
set names 'character_set_name' [collate collation_name] 相当于下面的操作:
set character_set_clent='character_set_name'
set character_set_connection='character_set_name'
set character_set_results='character_set_name'
set character set 'character_set name' 相当于下面的操作:
set character_set_clent='character_set_name'
set collation_connection=collation_database --这一点和set names 不同
set character_set_results='character_set_name'
使用mysql.exe内置客户端程序的字符集设置
选项文件配置:default-character-set
命令行参数:--default-character-set
命令:set names
命令:set character set
命令:charset --和set names 类似,但是影响以后的reconnnect
如果让server发出的信息、结果集不进行任何字符集转换:set character_set_results={null|binary}
ucs2字符集不能应用于character_set_client,如果你设置了,他不起任何作用
查询当前设置:show variables like ‘’
对于其他客户端环境
你必须要考虑应用程序所处的执行环境:是否支持字符集,字符集是否兼容,有无相关的配置或初始化字符集动作等等!
如果让server发出的信息、结果集不进行任何字符集转换:set character_set_results={null|binary},这个时候结果的字符集是有character_set_system系统变量决定的
mysql的元数据 是utf8字符集编码的
排序规则
对于比较、排序、表达式来说,排序规则有着重要而灵活的应用。他几乎可以用在sql语句的任何部分
binary 'str' 和 cast('str' as binary)完全相同
binary(m) = char(m) character set binary【<>char(m) binary】。该语法是定义二进制类型的一种形式。使用于所有文本类型。注意后面是字段属性:表示使用字符集的 二进制排序规则
特殊的binary排序规则模式 和 _bin排序规则,二者是不相同的
单位不同:字节单位 和 字符编码单位
字符集转换:无 和 有
对某些函数的影响lower()...:有 和 无
比较时是否考虑尾随空格:考虑 和 不考虑
插入 和 获取是尾随空格的处理:char(m)或右填充空格,但获取是trim掉;而binary(m)或右填充0x00,获取是保留
字符集和排序规则的压缩性
unicode字符集 和 非unicode字符集,总是转换非 unicode字符集 到unicode字符集
同一个字符集下的"_bin"、"_cs"、"_ci"字符集混杂时,总是应用"_bin"的排序规则
如果可压缩性形同,字符集相同,又不属于以上情况(排序规则为"_cs"、"_ci"),哈哈哈,你死了!
越小越高越稳定:
0:collate子句
1:两个不同排序规则的字符串连接
2:表列、存储程序、本地变量
3:系统常量、系统函数
4:文本常量的排序规则
5:null
字符集中字元的包容性:ascii是安全的
字符集对模型操作、函数的影响
简单函数的输出字符数据的字符集、排序规则和输入参数的完全相同:instr、mid、substring、lower、lcase、ucase、upper、left、right、ltrim、rtrim、trim、reverse、repea、rpad、soundex,特殊的replace总是大小写敏感的
charset()、collation()函数返回字符串的字符集、排序规则
对于多个输入,一个输出的函数:
如果有一个collate子句,就是他了
如果有2或更多个collate子句,恭喜,你死了
如果collation 都相同,就用它
其他,binary
显示字符集转换
convert('str' using character_set_name) --ansi sql标准
cast('str' as 字符数据类型 character set character_set_name)
cast('str' as 字符数据类型 ) collate collation_name
相关文章推荐
- mysql的字符集与排序规则
- 关于mysql中字符集和排序规则说明
- Mysql建库,字符集和排序规则
- SQL Server 与MySQL中排序规则与字符集相关知识的一点总结
- mysql 中 character set 与 collation 的点滴理解(collation即比对方法,用于对应字符集的数据集如何排序以及字符串的比对规则)
- Mysql官方文档翻译 -- 10.1.3.1 Server字符集和字符列排序规则
- 修改MySql中数据表和字段的字符集和排序规则
- mysql修改表、字段的字符集、排序规则
- Mysql官方文档翻译 -- 10.1.3.2 Database字符集和字符列排序规则
- 关于mysql中字符集和排序规则说明
- 修改MySql中数据表和字段的字符集和排序规则
- Mysql 字符集的排序规则
- mysql:字符集和排序规则
- Mysql官方文档翻译 -- 10.1.4 connection的字符集和字符列排序规则
- MySQL字符集与排序规则
- mysql中字符集和排序规则说明
- 修改MYSQL的字符集和排序规则
- 【0012】mysql字符集和排序规则
- 【MySQL】关于字符集和其排序问题
- 多语言字符集和数据库(mysql)排序整理,其他数据库和网站等多语言环境也可参考