关于SQL的关键字和函数名等不区分大小写,但是对于数据值是否区分大小写,和字符集与校对规则有关。
_ci(大小写不敏感),_cs(大小写敏感),_bin(二元,即比较是基于字符编码的值而与language无关)
- 查看所有字符集和校对规则
- 查看GBK和UTF-8字符集的校对规则
show collation like ‘gbk%’;
show collation like ‘utf8%’;
- utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
- utf8_general_ci 校对速度快,但准确度稍差。
- utf8_unicode_ci 准确度高,但校对速度稍慢。
如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。
- 查看服务器的字符集和校对规则
- 查看和修改某个数据库的字符集和校对规则
或
修改数据库的字符集和校对规则:
ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;
例如: ALTER DATABASE ceshi_db DEFAULT CHARACTER SET utf8 collate utf8_general_ci; 注意:修改了数据库的默认字符集和校对规则后,原来已经创建的表格的字符集和校对规则并不会改变,如果需要,那么需要单独修改。
- 查看某个表格的字符集和校对规则
查看字符集:show create table users;
如果要查看校对规则:show table status from bookstore like ‘%users%’ ;
修改某个表格的字符集和校对规则: 修改表的默认字符集:
ALTER TABLE 表名称 DEFAULT CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE 表名称 CONVERT TO CHARACTER SET 字符集名称 【COLLATE 校对规则名称】;
例如:ALTER TABLE ceshi_table DEFAULT CHARACTER SET gbk collate gbk_chinese_ci;