MySQL字符集和校对规则对查询的影响分析
163 浏览量
更新于2024-08-31
收藏 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 数据库的设计和使用非常重要。
2020-09-10 上传
2020-12-15 上传
点击了解资源详情
2020-09-10 上传
2020-09-14 上传
2009-01-14 上传
2024-01-28 上传
点击了解资源详情
点击了解资源详情
weixin_38652147
- 粉丝: 5
- 资源: 954
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程