mysql默认查询char/varchar时可能会遇到大小写不敏感的现象。
解决办法1:建表时指定大小敏感
-- 大小写敏感
CREATE TABLE `test1` (
`str` char(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 大小写不敏感
CREATE TABLE `test2` (
`str` char(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果表已经创建,ALTER TABLE MyTable CHANGE COLUMN `str` char(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;
解决办法2:查询时指定大小写敏感
SELECT * FROM test2 WHERE str='a' collate utf8_bin;
表变更的区别:
ALTER COLUMN:设置或删除列的默认值(操作速度非常快) 例子:
alter table film alter column rental_duration set default 5;
alter table film alter column rental_duration drop default;
CHANGE COLUMN:列的重命名、列类型的变更以及列位置的移动,必须重新命名 例子:
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL AFTER baz;
MODIFY COLUMN:除了不能给列重命名之外,他干的活和CHANGE COLUMN是一样的 例子:
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;