mysql区分大小写

两种情况下会区分大小写,
1、建表时,表的编码是utf8_bin(utf8_general_ci不会区分大小写),注意是表编码不是数据库编码。区分大小写与数据库编码无关。
2、建表后,可以通过 binary调整。语句如下:
alter table `wl_testdx_bin`.`wlt_testDx_bin` modify `currency` varchar(5) binary;
 
开始测试:
drop table `testDx_bin`;
CREATE TABLE `testDx_bin` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `currency` varchar(5) NOT NULL DEFAULT 'USD' COMMENT '资产币种',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
  UNIQUE `idx_currency` (`currency`) USING BTREE
) ENGINE=InnoDB COLLATE=utf8_bin;
 
INSERT INTO `testDx_bin`( `currency`, `create_time`, `update_time`) 
VALUES ( 'uSD', '2018-10-08 22:37:04', '2018-10-08 22:37:08');
执行成功。
 
INSERT INTO `testDx_bin`( `currency`, `create_time`, `update_time`) 
VALUES ( 'USD', '2018-10-08 22:37:04', '2018-10-08 22:37:08');
执行成功。
 
 
drop table `testDx_bin`;
CREATE TABLE `testDx_bin` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `currency` varchar(5) NOT NULL DEFAULT 'USD' COMMENT '资产币种',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
  UNIQUE `idx_currency` (`currency`) USING BTREE
) ENGINE=InnoDB COLLATE=utf8_general_ci;
 
 
INSERT INTO `testDx_bin`( `currency`, `create_time`, `update_time`) 
VALUES ( 'uSD', '2018-10-08 22:37:04', '2018-10-08 22:37:08');
执行成功。
 
INSERT INTO `testDx_bin`( `currency`, `create_time`, `update_time`) 
VALUES ( 'USD', '2018-10-08 22:37:04', '2018-10-08 22:37:08');
执行失败。
 
alter table `testDx_bin` modify `currency` varchar(5) binary;
 
INSERT INTO `testDx_bin`( `currency`, `create_time`, `update_time`) 
VALUES ( 'USD', '2018-10-08 22:37:04', '2018-10-08 22:37:08');
执行成功。
posted @ 2018-10-09 00:45  惊艳了时光  阅读(2255)  评论(0编辑  收藏  举报