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表示二进制比较,同样也区分大小写 。
注:本文转自http://www.cnblogs.com/wzmenjoy/p/4244545.html
相关推荐
MySQL8.0之后,数据库和表名称的大小写问题与之前的MySQL设置不同,需要引起重视,不然后续修改很麻烦。
MySQL中玩转字母大小写问题
mysql大小写敏感的描述,在Windows切换到Linux时遇到的
MySQL的SQL语句大小写不敏感问题解决方案
用MySQL函数实现 小写金额与大写金额的互转,用数据库来实现
MySql表名大小写的问题.txt
主要介绍了Mysql大小写敏感的问题的相关资料,需要的朋友可以参考下
MySQL中文拼音数据库(6565字,全拼+首字母(大小写均有)) 里面的文件内容大体是这个样子的。(压缩包中包含sql文件,可以直接导入) INSERT INTO `hs_pinyin` VALUES (3, '在', 'zai', 'z', 'Z'); INSERT INTO `...
当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感。 解决方案一: 于是怀疑Mysql的问题。做个实验:直接使用客户端用sql查询数据库。 发现的确是...
您可能感兴趣的文章:MySql查询不区分大小写解决方案(两种)MySQL中查询的有关英文字母大小写问题的分析Mysql大小写敏感的问题Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误教你如何在...
MYSQL对大小写敏感 见字如面,见标题知内容。你有遇到过因为MYSQL对大小写敏感而被坑的体验吗? 之前看过阿里巴巴Java开发手册,在MySql建表规约里有看到: 【强制】表名、字段名必须使用小写字母或数字 , 禁止...
使MySQL查询区分大小写,sql 语句 查询
linux下mysql默认是要区分表名大小写的。mysql是否区分大小写设置是由参数lower_case_table_names决定的,其中: 1)lower_case_table_names = 0 区分大小写(即对大小写不敏感),默认是这种设置。这样设置后,...
今天小编就为大家分享一篇关于MySQL数据库大小写敏感的问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
LINUX系统下mysql的大小写区分问题.docx
Mysql查询操作 MySql下实现查询表名不区分大小写
mysql设置不区分大小写 windows下 到安装mysql的目录,修改my.ini文件 在文件最后一行加上下面一句话 lower_case_table_names=1 说明 0:区分大小写,1:不区分大小写 效果如下 [mysqld] port = 3306 basedir=F...
在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE \\\'a%\\\'进行搜索,你将获得以A或a开始的所有列。