Linux环境下,不是windows平台下。区别很大。注意。

一图胜千言

 
mysql> show create table Ac;
+-------+-------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                            |
+-------+-------------------------------------------------------------------------------------------------------------------------+
| Ac    | CREATE TABLE `Ac` (
  `a` varchar(20) DEFAULT NULL,
  `c` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
mysql>
mysql> insert into Ac  values ('1q','1q');
Query OK, 1 row affected (0.00 sec)
 
mysql> insert into Ac  values ('1Q','1Q');
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from Ac WHERE a='1q';
+------+------+
| a    | c    |
+------+------+
| 1q   | 1q   |
| 1Q   | 1Q   |
+------+------+
2 rows in set (0.00 sec)
 
mysql> select * from AC ;
ERROR 1146 (42S02): Table 'test.AC' doesn't exist
mysql> select * from Ac  where A='1Q';
+------+------+
| a    | c    |
+------+------+
| 1q   | 1q   |
| 1Q   | 1Q   |
+------+------+
2 rows in set (0.00 sec)
 
如上的结果能反应说明以下结论。
 
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
  1、数据库名与表名是严格区分大小写的;
  2、表的别名是严格区分大小写的;
  3、列名与列的别名在所有的情况下均是忽略大小写的;
      4、字段内容默认情况下是大小写不敏感的。
 
mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。
mysql> show variables like '%case%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)
 
修改cnf配置文件或者编译的时候,需要重启服务。
 
 
 MySQL存储的字段是不区分大小写的。这个有点不可思议。尤其是在用户注册的业务时候,会出现笑话。所以还是严格限制大小写敏感比如好。
 
如何避免字段内容区分大小写。就是要新增字段的校验规则。
可以看出默认情况下字段内容是不区分大小写的。大小写不敏感。
 
mysql> create table aa (a varchar(20) BINARY  , c varchar(20)) ;
Query OK, 0 rows affected (0.10 sec)
 
mysql> show create table aa;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| aa    | CREATE TABLE `aa` (
  `a` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `c` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
mysql> select * from aa;
+------+------+
| a    | c    |
+------+------+
| a    | C    |
| a    | C    |
| A    | c    |
+------+------+
3 rows in set (0.00 sec)
 
mysql> select * from aa where a = 'a';
+------+------+
| a    | c    |
+------+------+
| a    | C    |
| a    | C    |
+------+------+
2 rows in set (0.00 sec)
 
mysql> select * from aa where a = 'A';
+------+------+
| a    | c    |
+------+------+
| A    | c    |
+------+------+
1 row in set (0.00 sec)
 
原因如下:
字段值的大小写由mysql的校对规则来控制。提到校对规则,就不得不说字符集。字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则  .
一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结 束 。比如 utf8字符集,utf8_general_ci,表示不区分大小写,这个是utf8字符集默认的校对规则;utf8_general_cs表示区分大小 写,utf8_bin表示二进制比较,同样也区分大小写 。

MySQL大小写敏感说明的更多相关文章

  1. 【已解决】Windows下 MySQL大小写敏感 解决方案及分析

    Windows下 MySQL大小写敏感配置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window ...

  2. MySQL大小写敏感问题和命名规范

    注:本文大部内容参考自互联网相关文章 1.MySQL大小写敏感规则 MySQL中,一个库会对应一个文件夹,库里的表会则以文件的方式存放在文件夹内,所以,操作系统对大小写的敏感性决定了数据库和表的大小写 ...

  3. mysql大小写敏感(默认为1,不敏感)

    在 MySQL 中,数据库和表其实就是数据目录下的目录和文件,因而,操作系统的敏感性决定数据库和表命名的大小写敏感.这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Un ...

  4. MySQL大小写敏感

    MySQL大小写敏感说明 - TonyWu - 博客园https://www.cnblogs.com/wzmenjoy/p/4244545.html

  5. MySQL大小写敏感的解决方案

    前言:对于MySQL的大小写敏感的影响,笔者在一个小项目中深刻的体会到:当想要查询一条数据时,总是出来两条或多条,后来发现是大小写敏感造成的原因,本文就该问题提出解决方案. 1.MySQL大小写敏感的 ...

  6. Centos7 下mysql大小写敏感问题

    在Centos7 下mysql大小写敏感问题,会导致程序运行时找不到对应的表. 解决办法: 第一步:编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_na ...

  7. mysql大小写敏感配置

    mysql大小写敏感配置show global variables like '%lower_case%'; show global variables like '%lower_case%'; &l ...

  8. 一个因MySQL大小写敏感导致的问题

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 00 MYSQL对大小写敏感 见字如面,见标题知内容.你有遇到过因为MYSQL对大小写敏感而被坑的体验吗? 之前看过阿里巴 ...

  9. Docker容器内Mysql大小写敏感方案解决

    Docker容器内Mysql大小写敏感方案解决 一.(lower_case_table_names)参数说明 二.Docker 部署 MySql 并修改为大小写不敏感 2.1直接在Docker启动的时 ...

  10. mysql大小写敏感与校对规则

    大家在使用mysql过程中,可能会遇到类似一下的问题: root@chuck 07:42:00>select * from test where c1 like 'ab%';  +-----+  ...

随机推荐

  1. 9,SFDC 管理员篇 - 安全设置

    1, 使用Profile控制权限 (整体层面)     Setup | Manage Users | Profiles 总结下,一个用户只能有一个Profile,但是可以有多个Permission S ...

  2. FMDBsqilte语句样式

    举例: @"create table student(stuid integer primary key autoincrement,name text,number integer,the ...

  3. MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合

    一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-myba ...

  4. delphi 怎么获取工程版本号

    function GetApplicationVersion:String; // Added 取得程序版本号 var FileName:String; InfoSize,Wnd:DWORD; Ver ...

  5. 开启telnet的几种方法

    开启telnet方法一:需要VTY的密码和进入超级权限的密码(VTY虚拟终端,一种网络设备的连接方式) [R1]int g0/0/0[R1-GigabitEthernet0/0/0]ip add 19 ...

  6. TortoiseSVN-1.8.11 安装时弹出2503错误导致安装失败解决办法

    这个问题主要是由于msi格式文件在win8中默认不是以管理员身份运行造成,可通过命令行解决: 右键单击win8左下角启动图标,选择命令提示符(管理员): 输入:msiexec /package 要安装 ...

  7. mysql 不允许连接

    错误提示: ERROR 1130: Host '192.168.1.1' is not allowed to connect to this MySQL server的解决方法: 1.改表法.可能是你 ...

  8. ArcGIS API for Flex实现GraphicsLayer上画点、线、面。

    目的: ArcGIS API for Flex实现GraphicsLayer上画点.线.面. 准备工作: 1.这次地图数据就用Esri提供的http://server.arcgisonline.com ...

  9. _Dispose(typeinfo,pointer ); 不知道说的是什么? 感觉会有用, 留待以后研究

        [传说]晓不得2013(26562729)  16:45:41别人把文章发出来,说明就是验证过的.[潜水]ひㄨㄨ那个ㄨㄨ(1548253108)  16:46:23[潜水]ひㄨㄨ那个ㄨㄨ(15 ...

  10. Java设计模式——组合模式

    JAVA 设计模式 组合模式 用途 组合模式 (Component) 将对象组合成树形结构以表示“部分-整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有唯一性. 组合模式是一种结构型模 ...