Mysql字符集和排序规则详解
MySQL是当前最流行的数据库之一,对于数据存储乃至于展示,字符集和排序规则都是最基本的要素之一。
字符集(Character Set)
MySQL中,字符集是一组字符的字符集合集合,也就是说,字符集是相互关联的一组字符,这些字符在计算机中用一定的方式进行存储和传输。MySQL中实现了多种字符集,具体可以在官方文档中查看。
在创建数据库,数据表时,都可以指定该对象的字符集,MySQL支持的字符集包括ASCII,UTF-8,GBK,等常见字符集,如下:
-- 创建数据库时指定默认字符集为UTF-8
CREATE DATABASE dbname DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 创建数据表时指定字符集和排序规则
CREATE TABLE table_name (
column1 varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
column2 varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
排序规则(Collation)
排序规则定义了在字符集中如何比较和排序字符。 它基本上定义了将字符串字符实际定义为二进制字符时使用哪种比较算法。
MySQL中也使用了多种排序规则,也可以在文档中查看,例如:utf8mb4_general_ci,utf8mb4_unicode_ci,utf8mb4_bin等等。
示例1:
utf8mb4_general_ci排序规则可以将包含不同形式和大小写的字符串,认为是相等的。例如以下两个字符串:
SELECT 'abc' = 'ABC' COLLATE utf8mb4_general_ci; -- 结果为1,即相等
示例2:
utf8mb4_unicode_ci排序规则实现根据Unicode规则排序,因此在比较时,按照字符的实际大小进行比较,例如以下两个字符串:
SELECT 'œ' COLLATE utf8mb4_unicode_ci < 'Z' COLLATE utf8mb4_unicode_ci; -- 结果为1,即小于
总结
字符集和排序规则是MySQL中非常基础和重要的选项,能够直接影响到数据存储并展现的正确性和可靠性。在进行数据库创建或数据表创建的过程中,应该尽量按照业务需求来选择相应的字符集和排序规则,确保数据的准确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql字符集和排序规则详解 - Python技术站