• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • 字符集和校验规则分配的示例

    以下示例说明MySQL如何确定默认字符集和校验规则值。

    示例1:表和列定义

    CREATE TABLE t1
    (
        c1 CHAR(10) CHARACTER SET latin1 COLLATE latin1_german1_ci
    ) DEFAULT CHARACTER SET latin2 COLLATE latin2_bin;
    

    在这里,我们有一列带有latin1字符集和latin1_german1_ci校验规则。该定义是明确的,因此很简单。请注意,将latin1列存储在latin2表中没有问题。

    示例2:表和列定义

    CREATE TABLE t1
    (
        c1 CHAR(10) CHARACTER SET latin1
    ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;
    

    这次我们有一列带有latin1字符集和默认校验规则。尽管看起来很自然,但默认校验规则并非来自表级别。相反,因为的默认校验规则latin1始终为latin1_swedish_ci,列c1的校验规则为latin1_swedish_ci(not latin1_danish_ci)。

    示例3:表和列定义

    CREATE TABLE t1
    (
        c1 CHAR(10)
    ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;
    

    我们有一列带有默认字符集和默认校验规则。在这种情况下,MySQL检查表级别以确定列字符集和校验规则。因此,用于柱的字符集c1latin1和其归类latin1_danish_ci

    示例4:数据库,表和列定义

    CREATE DATABASE d1
        DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_ci;
    USE d1;
    CREATE TABLE t1
    (
        c1 CHAR(10)
    );
    

    我们在创建列时未指定其字符集和校验规则。我们也没有在表级别指定字符集和校验规则。在这种情况下,支票的MySQL数据库级别来确定表设置,此后成为列设置。)因此,对于列中的字符集c1latin2和其归类latin2_czech_ci