专栏首页MYSQL轻松学MySQL大小写敏感总结

MySQL大小写敏感总结

在MySQL中,数据库、表、triggers实际上都对应了datadir目录(或子目录)下的文件,因此,这些对象的名字是否大小写敏感主要是依赖于操作系统和文件系统的,因此这些内容在Windows中是大小写是不敏感的,而在大多数类Unix系统中是敏感的(Mac OS X除外),当然对于建立在这些类Unix系统上的MySQL,敏感性可以在一定程度上通过参数的修改来设定。

1、column(包括别名)、 index、routine和 event names在所有平台上大小写都是不敏感的;

2、logfile groups名称在所有平台上都是大小写敏感的;

3、database、table(包括别名)的大小写敏感性可以通过系统参数lower_case_table_names来配置(修改参数的值需要重启数据库);

  1. lower_case_table_names =0(Unix default):大小写敏感,数据按照CREATE 语句中的定义存储在磁盘,且在查询的时候是区分大小写的; 注意:不要在大小写不敏感的系统上使用此设置,因为容易导致像MyISAM引擎表的索引崩溃;
  2. lower_case_table_names =1(Windows default):大小写不敏感,MySQL将数据全部转化为小写形式存储在磁盘上,而且在查询的时候也是全部转化为小写进行比较;
  3. lower_case_table_names =2(MAC OS X default):大小写不敏感,大多数引擎是将数据按照CREATE 语句中的定义存储在磁盘上(Innodb是小写存储),但是在查询的时候全部转化为小写进行比较;这种设置仅适用于大小写不敏感的操作系统;

4、trigger identifiers的大小写敏感性不受lower_case_table_names参数影响,在Windows和MAC OS X上是不敏感的,在其他类Unix系统上是不敏感的;

5、数据敏感性:由Mysql的校对字符集规则来控制(Collation),默认大小写不敏感;

  1. 每一个字符型column都有一个“字符集属性(character set)”和一个“校对集属性(collation set)”,其中character set影响列的存储编码,collation影响列数据的排序规则(或者说比较规则);
  2. 可以通过“show collation”命令查看当前版本DB支持的所有collation,其中“_ci”代表case-insensitive大小写不敏感,“_cs”代表case-sensitive大小写敏感,“_bin”的大小写敏感依赖于character的二进制编码;
  3. collation可以在数据库对象(server、database、table、column)的定义中指定,也可以在SQL语句中使用;可以通过“show variables like 'collation%'”查看数据库级别设置的各种collation规则,分为connection、database和server;
  4. collation的声明需要和字符集一一对应,例如utf8_general_ci不能和latin1同时使用;

例如有如下2条记录,如果我们只想查询小写的'a'怎么办?MySQL root@[test]>select * from t1 where name ='a'; +------+------+ | id | name | +------+------+ | 1 | a | | 2 | A | +------+------+可以在字段name前加个binary,使其区分大小写:MySQL root@[test]>select * from t1 where binary name ='a';+------+------+| id | name |+------+------+| 1 | a |+------+------+

如果不调参数,各种类型大小写敏感如下:

类型

敏感

不敏感

database

table

index

column

value

routine

trigger

event

MYSQL轻松学

本文分享自微信公众号 - MYSQL轻松学(learnmysql)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 想入门数据分析,现在转行还来得及吗?

    2014年,“大数据” 成为国内年度热词,并首次出现在当年的《政府工作报告中》。同年,数据分析也同样成为朝阳行业,数据分析一度霸屏各招聘网站。

    CDA数据分析师
  • 官宣!这才是优秀的数据库程序员

    如果评选出数据库中最难以理解的模块,那么非优化器莫属。作为数据库从业者,对优化器不够了解,如同猛虎没有了利爪,在对数据库调优的过程中往往余力不足。

    CSDN技术头条
  • 这些Mysql基础设计思路以及优化思路我都给你总结好了

    4、btree索引,就是用树形结构存储在磁盘上,其中操作是用2分发,找一个中间点,然后把大比这个大的分在一边,小的放在一边,然后当你查询的时候,从数字头开始,大...

    思梦php
  • 误删生产数据库,顺丰一高级工程师被开除

    9 月 19 日,微博网友大佬坊间八卦爆料,顺丰科技数据中心的一位高级工程师(邓XX)误删生产数据库,导致某项服务无法使用并持续 590 分钟。顺丰根据公司相关...

    程序员宝库
  • 缓存架构之史上讲的最明白的RabbitMQ可靠消息传输实战演练

    比如:某个广告主(如:天猫)想在我们的平台(如:今日头条)投放广告,当通过我们的广告系统新建广告的时候,该消息在同步给redis缓存(es)的时候丢失了,而我们...

    用户1263954
  • 数据库流行度10月排行榜:Oracle 王者归来和 Redis 青云直上

    九月挥别,已经是金秋10月,2018只剩下最后一个季度,这是一个收获的季节,而 DB-Engines 的数据库流行度排行榜已经发布了10月数据。

    数据和云
  • 细数那些你可能不知道的国产数据库

    在之前中秋团圆之时,我们曾经绘制了一幅数据库的团圆照,这幅图中包含了多少种数据库,您现在数的清吗?图中又有多少国产数据库?

    数据和云
  • 北京7年游戏开发就这么被淘汰了!

    入职后同学就是我的领导,技术相对一般,我们做游戏后端的,时间很快,一眨眼,我就跟着混了四年,每天就看些博客,书籍,业务上也会做功能,但自觉做的比较蠢。没什么太大...

    我就是马云飞
  • 你知道这种开发模式能更好的帮你排错吗?

    很多时候我们在开发一个项目的时候写着写着sql语句报错了?(这里多指使用框架开发,当然也有原声sql语句),之后有时候会扎耳挠腮,看来看去都感觉自己的sql语句...

    思梦php
  • 史上更全的 MySQL 高性能优化实战总结!

    MySQL 对于很多 Linux 从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行 MySQL 的优化之前必须要...

    CSDN技术头条

扫码关注云+社区

领取腾讯云代金券