手头的任务:需要在MySQL中创建表,然后从另一个数据库的Information.Schema的columns表中进行转储。我无权访问原始数据库或数据库架构师。我想知道在CREATE TABLE语句中指定从原始数据库 CAN 的信息摘录中找到的以下哪些属性。目的是创建一个与原始表相同的表。
手头的问题:我了解这些属性中的某些属性是由用户在创建表时指定的,而某些属性可能是由MySQL根据表中的数据计算出来的。在阅读和理解这些属性中的每一个时,我无法快速确定下面列出的哪些属性是由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
答案 0 :(得分:1)
对于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 相同。
对于多字节字符集,您应该probably be using utf8mb4_
集。所以
CHARACTER_OCTET_LENGTH 可能是 CHARACTER_MAXIMUM_LENGTH x 4(对于完整的4字节UTF-8;请注意,utf8_
MySQL字符集/排序规则是 3字节< / strong>)。尽管此值是在创建表时自动生成的,但是如果您手动构建这些数据集,则可能需要自己计算这个值。
您使用的哪个字符集也将与哪个 CHARACTER_SET_SCHEMA 相关
并设置了 CHARACTER_SET_NAME 。例如utf8mb4_general_ci
会
对于 NUMERIC _ * 个值;请read here
COLLATION _ * (例如Schema)是用户设置的,但如果不是用户设置,则使用数据库和/或表的默认值。
CHARACTER_SET _ * (例如Schema)是用户设置的,但如果不是用户设置,则使用数据库和/或表的默认值。
DATETIME_PRECISION 已设置数据库/操作系统,未在TABLE CREATE
DOMAIN _ * 值,并且似乎无效
CHARACTER_MAXIMUM_LENGTH-用户集*
CHARACTER_OCTET_LENGTH-根据用户设置/默认详细信息(*
)自动生成
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-未知。没有此类型的记录。