MySQL字符集和校对规则对查询的影响分析
188 浏览量
更新于2024-08-30
收藏 91KB PDF 举报
MySQL 中查询的有关英文字母大小写问题的分析
MySQL 数据库在进行查询时,有时候是英文字母大小写敏感的,有时候又不是的,主要是由 MySQL 的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。
**什么是字符集和校验规则?**
字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则。要想列出一个字符集的校对规则,使用 SHOW COLLATION 语句。
**校对规则的特征**
校对规则一般有这些特征:
* 两个不同的字符集不能有相同的校对规则。
* 每个字符集有一个默认校对规则。例如,utf8 默认校对规则是 utf8_general_ci。
* 存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以 _ci(大小写不敏感)、_cs(大小写敏感)或 _bin(二元)结束。
**不同级别的字符集和校验规则可控制大小写敏感**
MySQL 5.1 在同一台服务器、同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合定义字符串。字符集和校对规则有 4 个级别的默认设置:服务器级、数据库级、表级和连接级。
**服务器级**
MySQL 按照如下方法确定服务器字符集和服务器校对规则:
* 修改配置文件 /etc/my.cnf
* 在 [mysqld] 下添加:collation_server=utf8_bin
* 重启实例
更改服务器级的校验规则(collation_server)后,数据库校验规则(collation_collation)默认会继承服务器级的。
**注意**
* 这个只适用于在重新启动之后,新建的库,已存在的库不受影响。
* 同样的,即使库的校验规则改了,已经存在的表不受修改影响;
* 同理与已经存在的列…
**实践示例**
mysql> create database yutest0;
Query OK, 1 row affected (0.00 sec)
mysql> use yutest0;
Database changed
mysql> create table t1 (name varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t1 values ('AAA');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 values ('aaa');
Query OK, 1 row affected (0.00 sec)
**小结**
MySQL 中查询的有关英文字母大小写问题的分析,主要是由 MySQL 的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。字符集和校验规则是 MySQL 中非常重要的概念,它们控制着字符串的比较和排序规则。了解字符集和校验规则的特征和使用方法,对 MySQL 数据库的设计和使用非常重要。
901 浏览量
2657 浏览量
182 浏览量
1941 浏览量
236 浏览量
231 浏览量
2024-01-28 上传
1248 浏览量
点击了解资源详情

weixin_38652147
- 粉丝: 5
最新资源
- Berkeley DB Java Edition:源码与工具使用入门指南
- Java实现的C/S架构聊天室:注册、数据库管理与Eclipse项目包
- asp.net图片库管理与上传技术解析
- kokko游戏引擎:C++和OpenGL打造的图形技术项目
- uThreadPool线程池的实用示例与源码分享
- 节水主题静态网页设计与思想传达
- 深入解析Java中的B树实现原理与代码
- 51单片机继电器控制实验程序详解
- Eclipse经典配色方案及代码风格配置文件推荐
- Garfunkel:GNOME环境下开源的Linux版Simon游戏
- Flash实现新闻图片切换与二级菜单导航源码
- Soul Engine:面向实时应用的CUDA/Vulkan渲染与仿真平台
- 深入探究Xamarin iOS的XIB与Storyboard对比
- C语言算法实现及源代码详解
- JWFD开源工作流V0.96.4升级:反馈流程引擎设计解析
- EmberConf 2019日程安排与技术亮点