MySQL 语句中的哪些列属性可以在 CREATE TABLE / ALTER TABLE 语句中指定?
Which column attributes in a MySQL statement can specified in a CREATE TABLE / ALTER TABLE statement?
手头的任务: 需要在 MySQL 中创建 tables 从 [=39= 的 table 列转储] 另一个数据库。我无权访问原始数据库或数据库架构师。我想知道从原始数据库 的 Information_Schema 中提取的以下哪些属性可以在 CREATE TABLE 语句中指定。 objective 是创建一个与原始表相同的表。
手头的问题: 我知道其中一些属性是用户在创建 table 时指定的,而另一些可能是由 MySQL 计算的来自 table 秒内的数据。当我阅读和理解这些属性中的每一个时,我无法快速确定下面列出的哪些属性是由 MySQL 计算的,而不是用户指定的,因此在编写 CREATE TABLE 语句时可以忽略.
CHARACTER_MAXIMUM_LENGTH
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISION
NUMERIC_PRECISION_RADIX
NUMERIC_SCALE
DATETIME_PRECISION
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
Please read the MySQL Manual Page
对于CHAR
和VARCHAR
以及类似字符(非TEXT
)的列; CHARACTER_MAXIMUM_LENGTH 值就是这样;
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
^^^^ ^^^
This is the CHARACTER_MAXIMUM_LENGTH value of this column.
CHARACTER_OCTET_LENGTH应该和CHARACTER_MAXIMUM_LENGTH一样,除了multi-byte字符集.
对于 multi-byte 个字符集,您应该 probably be using utf8mb4_
个字符集。所以
CHARACTER_OCTET_LENGTH 可能是 CHARACTER_MAXIMUM_LENGTH x 4(对于 4 字节完整的 UTF-8;注意 utf8_
MySQL 字符 sets/collations 仅 3 字节 )。虽然此值在 table 创建时是 auto-generated,但如果您手动构建这些数据集,您 可能 需要自己计算。
你使用的字符集也与CHARACTER_SET_SCHEMA有关
CHARACTER_SET_NAME 已设置。例如 utf8mb4_general_ci
会
对于 NUMERIC_* 个值;请read here
COLLATION_*(ex Schema)内容是用户设置的,但如果不是用户设置则数据库 and/or table 使用默认值。
CHARACTER_SET_*(例如Schema)内容是用户设置的,但如果不是用户设置则数据库and/or table 使用默认值。
DATETIME_PRECISION 已设置 database/OS 而未在 TABLE CREATE
上设置
DOMAIN_* 值未在 MySQL 手册中找到并且似乎无效
所以;
CHARACTER_MAXIMUM_LENGTH - 用户设置 *
CHARACTER_OCTET_LENGTH - 自动生成,来自用户 set/default 详细信息 (*
)
NUMERIC_PRECISION - 用户集
NUMERIC_PRECISION_RADIX - 用户为特定 spacial
类型的列设置
NUMERIC_SCALE - 用户集
DATETIME_PRECISION - 系统设置
CHARACTER_SET_CATALOG - 可能值的系统集目录。
CHARACTER_SET_SCHEMA - 目录中可能值的生成模式
CHARACTER_SET_NAME - 用户设置但默认为 MySQL / Db 默认值 *
COLLATION_CATALOG - 可能值的系统集目录。
COLLATION_SCHEMA - 目录中可能值的生成模式
COLLATION_NAME - 用户设置但默认为 MySQL / Db 默认值 *
DOMAIN_CATALOG - 未知。没有这种类型的记录。
DOMAIN_SCHEMA - 未知。没有这种类型的记录。
DOMAIN_NAME - 未知。没有这种类型的记录。
手头的任务: 需要在 MySQL 中创建 tables 从 [=39= 的 table 列转储] 另一个数据库。我无权访问原始数据库或数据库架构师。我想知道从原始数据库 的 Information_Schema 中提取的以下哪些属性可以在 CREATE TABLE 语句中指定。 objective 是创建一个与原始表相同的表。
手头的问题: 我知道其中一些属性是用户在创建 table 时指定的,而另一些可能是由 MySQL 计算的来自 table 秒内的数据。当我阅读和理解这些属性中的每一个时,我无法快速确定下面列出的哪些属性是由 MySQL 计算的,而不是用户指定的,因此在编写 CREATE TABLE 语句时可以忽略.
CHARACTER_MAXIMUM_LENGTH
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISION
NUMERIC_PRECISION_RADIX
NUMERIC_SCALE
DATETIME_PRECISION
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
Please read the MySQL Manual Page
对于CHAR
和VARCHAR
以及类似字符(非TEXT
)的列; CHARACTER_MAXIMUM_LENGTH 值就是这样;
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
^^^^ ^^^
This is the CHARACTER_MAXIMUM_LENGTH value of this column.
CHARACTER_OCTET_LENGTH应该和CHARACTER_MAXIMUM_LENGTH一样,除了multi-byte字符集.
对于 multi-byte 个字符集,您应该 probably be using utf8mb4_
个字符集。所以
CHARACTER_OCTET_LENGTH 可能是 CHARACTER_MAXIMUM_LENGTH x 4(对于 4 字节完整的 UTF-8;注意 utf8_
MySQL 字符 sets/collations 仅 3 字节 )。虽然此值在 table 创建时是 auto-generated,但如果您手动构建这些数据集,您 可能 需要自己计算。
你使用的字符集也与CHARACTER_SET_SCHEMA有关
CHARACTER_SET_NAME 已设置。例如 utf8mb4_general_ci
会
对于 NUMERIC_* 个值;请read here
COLLATION_*(ex Schema)内容是用户设置的,但如果不是用户设置则数据库 and/or table 使用默认值。
CHARACTER_SET_*(例如Schema)内容是用户设置的,但如果不是用户设置则数据库and/or table 使用默认值。
DATETIME_PRECISION 已设置 database/OS 而未在
上设置TABLE CREATE
DOMAIN_* 值未在 MySQL 手册中找到并且似乎无效
所以;
CHARACTER_MAXIMUM_LENGTH - 用户设置 *
CHARACTER_OCTET_LENGTH - 自动生成,来自用户 set/default 详细信息 (*
)
NUMERIC_PRECISION - 用户集
NUMERIC_PRECISION_RADIX - 用户为特定 spacial
类型的列设置
NUMERIC_SCALE - 用户集
DATETIME_PRECISION - 系统设置
CHARACTER_SET_CATALOG - 可能值的系统集目录。
CHARACTER_SET_SCHEMA - 目录中可能值的生成模式
CHARACTER_SET_NAME - 用户设置但默认为 MySQL / Db 默认值 *
COLLATION_CATALOG - 可能值的系统集目录。
COLLATION_SCHEMA - 目录中可能值的生成模式
COLLATION_NAME - 用户设置但默认为 MySQL / Db 默认值 *
DOMAIN_CATALOG - 未知。没有这种类型的记录。
DOMAIN_SCHEMA - 未知。没有这种类型的记录。
DOMAIN_NAME - 未知。没有这种类型的记录。