mysql存入的数据区分大小写吗
时间: 2024-05-22 07:10:06 浏览: 71
MySQL 默认情况下是不区分大小写的,但可以通过设置来实现区分大小写。例如,在创建表时可以指定表名的大小写规则,使用 BINARY 关键字可以使字符串比较区分大小写。同时,也可以在 MySQL 的配置文件中设置 collation_server 和 collation_database 参数来指定服务器和数据库的字符集和排序规则,从而影响数据的大小写敏感性。
相关问题
MySQL utf8 区分大小写吗
在MySQL中,`utf8` 字符集对大小写的处理取决于具体的操作和存储引擎。
1. **排序和比较**:默认情况下,MySQL的字符串比较是不区分大小写的,除非你显式地指定了区分大小写。这意味着在`utf8`字符集下,`SELECT * FROM table WHERE column = 'value'` 会匹配 `'Value'`、`'VALUE'` 等不同大小写的字符串。
2. **存储**:MySQL在存储字符串时是区分大小写的。这意味着 `'Value'` 和 `'value'` 被视为不同的字符串。
3. **表和列的排序规则(Collation)**:MySQL的排序规则决定了字符串的比较和排序行为。常见的`utf8_general_ci`排序规则是不区分大小写的,而`utf8_bin`排序规则是区分大小写的。
例如:
```sql
-- 创建不区分大小写的表
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
value VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci
);
-- 插入数据
INSERT INTO example (value) VALUES ('Value'), ('VALUE'), ('value');
-- 查询数据
SELECT * FROM example WHERE value = 'value';
```
上述查询将返回所有三行数据,因为排序规则`utf8_general_ci`是不区分大小写的。
如果使用区分大小写的排序规则`utf8_bin`:
```sql
-- 创建区分大小写的表
CREATE TABLE example_bin (
id INT AUTO_INCREMENT PRIMARY KEY,
value VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin
);
-- 插入数据
INSERT INTO example_bin (value) VALUES ('Value'), ('VALUE'), ('value');
-- 查询数据
SELECT * FROM example_bin WHERE value = 'value';
```
上述查询将只返回`value`这一行数据。
mysql把整个库设置成查询时对存储的数据大小写敏感
在 MySQL 中,存储的数据是默认大小写敏感的,也就是说,如果你插入数据是大写,那么查询时也必须使用大写才能查到该数据。如果你想把整个库设置成查询时对存储的数据大小写不敏感,可以通过修改 MySQL 的配置文件来实现。
具体来说,可以在配置文件中加入以下内容:
```
[mysqld]
lower_case_table_names=1
```
其中,lower_case_table_names 参数的值可以为 0、1 或 2,分别表示:
- 0:不区分大小写,但是保存时区分大小写。
- 1:全部转换为小写,不区分大小写。
- 2:保持原样,区分大小写。
需要注意的是,修改 MySQL 的配置文件需要重启 MySQL 服务才能生效。此外,对于已经存在的数据,修改该参数后可能会导致查询失败,因为原来的数据可能已经被转换成了小写。因此,在修改该参数之前,需要备份数据,以防不测。
阅读全文