可以在CREATE TABLE / ALTER TABLE语句中指定MySQL语句中的哪些列属性?

时间:2019-07-18 10:39:26

标签: mysql create-table information-schema

手头的任务:需要在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

1 个答案:

答案 0 :(得分:1)

  

请阅读MySQL Manual Page

对于CHARVARCHAR以及相似字符(非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

  • 上设置 在MySQL手册中找不到
  • 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-未知。没有此类型的记录。