相关文章:
utf8mb4_general_ci 不区分大小写,所以...
建表:
USE test;
CREATE TABLE `test_table` (
`id` bigint NOT NULL AUTO_INCREMENT,
`data` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uk_data` (data)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
测试插入数据:
mysql root@127.0.0.1:test> insert into test_table (data) values('hi');
Query OK, 1 row affected
Time: 0.003s
mysql root@127.0.0.1:test> insert into test_table (data) values('HI');
(1062, u"Duplicate entry 'HI' for key 'uk_data'")
插入 HI
的时候报错唯一索引冲突。为什么?因为 utf8mb4_general_ci 不区分大小写,hi
和 HI
也就被认为是相等的。
查询数据时,也不会区分大小写:
mysql root@127.0.0.1:test> select * from test_table where data = 'HI';
+----+------+
| id | data |
+----+------+
| 1 | hi |
+----+------+
utf8mb4_bin 区分大小写,所以...
建表:
USE test;
CREATE TABLE `test_table_2` (
`id` bigint NOT NULL AUTO_INCREMENT,
`data` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uk_data` (data)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
测试插入数据:
mysql root@127.0.0.1:test> insert into test_table_2 (data) values('hi');
Query OK, 1 row affected
Time: 0.003s
mysql root@127.0.0.1:test> insert into test_table_2 (data) values('HI');
Query OK, 1 row affected
Time: 0.004s
可以看到 hi
和 HI
都正常插入了。这是因为 utf8mb4_bin 区分大小写,所以 hi
和 HI
是不相等的。
查询数据时也会区分大小写:
mysql root@127.0.0.1:test> select * from test_table_2 where data = 'HI';
+----+------+
| id | data |
+----+------+
| 2 | HI |
+----+------+