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
相关推荐
### MySQL 8.0 大小写敏感性问题详解 #### 一、引言 MySQL 8.0作为MySQL数据库的重要版本更新,引入了一系列的新特性与优化改进,其中包括对数据库和表名大小写敏感性的调整。这一变化对于新老用户来说都需要一定...
MySQL 大小写敏感 MySQL 中的大小写敏感性是指数据库名、表名、列名、别名等在不同的操作系统平台上的大小写规则。 MySQL 在 Linux 下默认情况下是严格区分表名和数据库名的大小写,而在 Windows 下则不区分大小写...
### MySQL中字母大小写问题详解 #### 环境配置 在MySQL中处理字母大小写问题时,首先要明确运行MySQL服务器的操作系统环境。本案例中使用的操作系统为Linux 2.6.32-431.el6.x86_64版本,MySQL版本为5.6.24-log。...
MySQL 的 SQL 语句大小写不敏感问题解决方案 MySQL 的 SQL 语句大小写不敏感问题是一个普遍存在的问题,特别是在 Linux 和 Windows 两种操作系统下。这个问题的产生是由于 MySQL 在不同的操作系统下对大小写的处理...
在Linux系统中,MySQL数据库的大小写处理是一个常见的问题,因为不同的操作系统对于大小写的处理方式有所差异。在Windows系统中,MySQL通常不区分数据库名、表名和列名的大小写,但在Linux环境下,情况则有所不同。 ...
### MySQL表名大小写敏感性问题详解 #### 标题:0积分:MySql表名大小写的问题 #### 描述:MySql表名大小写的问题 #### 标签:mysql 大小写 #### 部分内容摘要: > 在MySQL环境中,表名的大小写敏感性是一个常见...
用MySQL函数实现 小写金额与大写金额的互转,用数据库来实现
本文将深入探讨PostgreSQL数据库对象名大小写敏感的问题,以及如何在实践中妥善处理这一特性。 #### PostgreSQL与大小写敏感性 PostgreSQL是一个功能强大的开源关系型数据库系统,它遵循SQL标准,同时也提供了许多...
在Windows系统中,MySQL通常不区分表名的大小写,但当你将数据从Windows迁移到Linux系统时,可能会遇到问题,因为Linux系统是区分大小写的。默认情况下,Linux下的MySQL配置`lower_case_table_names`参数为0,意味着...
MySQL数据库在处理数据库名、表名以及列名时的大小写敏感性问题是一个常见的困扰,尤其是在跨不同操作系统环境时。MySQL的行为受所运行的操作系统的影响,因为数据库名和表名实际上对应于数据目录中的文件名。在...
在MySQL数据库管理中,表名和数据库名的大小写敏感性是一个重要的配置选项,尤其是在不同操作系统环境下。在Linux系统中,默认情况下,MySQL是严格区分大小写的,这与Windows环境下的行为形成鲜明对比,后者默认不...
在MySQL中,查询默认情况下通常是不区分大小写的,但如果你想让你的查询对大小写敏感,有几种方法可以实现。以下是一些关键知识点和步骤来帮助你在MySQL中进行区分大小写的查询。 1. **设置列的Collation** - **...
MySQL数据库在处理表名、数据库名以及列名时的大小写规则可能会因操作系统的差异而有所不同。...尽管可以配置MySQL忽略大小写,但这并不能解决所有可能的兼容性问题,尤其是在已存在大小写敏感数据的情况下。
需要注意的是,如果你的应用程序已经习惯了不区分大小写的模式,切换到区分大小写可能导致一些问题,比如找不到已存在的表或列。因此,在进行这种改变之前,务必对现有的数据库结构进行检查,并确保所有的引用都是大...
在执行查询时,仍需要确保遵循表名和数据库名的原始大小写格式,以避免潜在的问题。此外,如果你已经有一个区分大小写的数据库,更改此设置可能导致已有的大小写敏感的表名无法正常识别,所以在生产环境中修改这个...
此外,尽管设置为1可以使MySQL在逻辑上不区分大小写,但为了保持一致性,建议在定义表名和编写SQL语句时始终使用小写,避免因大小写问题引起不必要的困扰。 在开发过程中,特别是涉及跨平台的应用,了解并适当地...
本文将详细介绍两种解决MySQL查询不区分大小写问题的方法。 **方法一:使用BINARY函数** 在查询语句中,你可以使用BINARY函数来强制进行区分大小写的比较。BINARY关键字将字符串转换为二进制形式,从而进行字节...
本文将深入探讨SQL Server与MySQL这两种主流数据库管理系统中关于大小写敏感性的设置。 #### SQL Server 大小写敏感性设置 SQL Server默认情况下对标识符(例如表名、列名等)是不区分大小写的。然而,在某些场景...