• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 表字符集和校验规则

    每个表都有一个表字符集和一个表校验规则。该CREATE TABLEALTER TABLE语句对指定表字符集和校验可选条款:

    CREATE TABLE tbl_name (column_list)
        [[DEFAULT] CHARACTER SET charset_name]
        [COLLATE collation_name]]
    
    ALTER TABLE tbl_name
        [[DEFAULT] CHARACTER SET charset_name]
        [COLLATE collation_name]
    

    例:

    CREATE TABLE t1 ( ... )
    CHARACTER SET latin1 COLLATE latin1_danish_ci;
    

    MySQL通过以下方式选择表字符集和校验规则:

    • 如果同时和指定,字符集和校验规则使用。CHARACTER SET charset_nameCOLLATE collation_namecharset_namecollation_name
    • 如果未指定,则使用字符集及其默认校验规则。要参见每个字符集的默认校验规则,请使用语句或查询表。CHARACTER SET charset_nameCOLLATEcharset_nameSHOW CHARACTER SETINFORMATION_SCHEMACHARACTER_SETS
    • 如果不指定,则使用与和归类相关的字符集。COLLATE collation_nameCHARACTER SETcollation_namecollation_name
    • 否则(既未指定,也CHARACTER SETCOLLATE指定),将使用数据库字符集和校验规则。

    如果未在单个列定义中指定列字符集和校验规则,则将表字符集和校验规则用作列定义的默认值。表字符集和校验规则是MySQL的扩展;标准SQL中没有这样的东西。