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

在CREATE TABLE/ALTER TABLE语句中可以指定MySQL语句中的哪些列属性?,mysql,create-table,information-schema,Mysql,Create Table,Information Schema,手头的任务:需要从另一个数据库的Information.Schema中的columns表转储,在MySQL中创建表。我无法访问原始数据库或数据库架构师。我想知道从原始数据库的信息模式中提取的以下哪些属性可以在CREATE TABLE语句中指定。其目的是创建一个与原始表相同的表 眼前的问题:我知道其中一些属性是用户在创建表时指定的,而有些属性可能是MySQL根据表中的数据计算出来的。当我阅读并理解这些属性时,我无法快速确定下面列出的哪些属性是由MySQL计算的,而不是用户指定的,因此在编写CREA

手头的任务:需要从另一个数据库的Information.Schema中的columns表转储,在MySQL中创建表。我无法访问原始数据库或数据库架构师。我想知道从原始数据库的信息模式中提取的以下哪些属性可以在CREATE TABLE语句中指定。其目的是创建一个与原始表相同的表

眼前的问题:我知道其中一些属性是用户在创建表时指定的,而有些属性可能是MySQL根据表中的数据计算出来的。当我阅读并理解这些属性时,我无法快速确定下面列出的哪些属性是由MySQL计算的,而不是用户指定的,因此在编写CREATE TABLE语句时可以忽略这些属性

字符\最大\长度
字符八位字节长度
数字精度
数字精度基数
数字刻度
日期时间\u精度
字符集目录
字符集模式
字符集名称
整理目录
排序规则\u模式
排序规则名称
域目录
域\u架构
域名

请阅读

对于
CHAR
VARCHAR
以及类似字符(非
TEXT
)列;字符\u最大\u长度值就是这个值

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.  
字符八位字节长度应与字符最大长度相同,但多字节字符集除外

对于多字节字符集,您应该
utf8mb4\u
set。所以 CHARACTER\u OCTET\u LENGTH可以是CHARACTER\u MAXIMUM\u LENGTHx4(对于4字节的完整UTF-8;请注意
utf8\ucode>MySQL字符集/排序规则仅为3字节)。虽然此值是在创建表时自动生成的,但如果手动构建这些数据集,则可能需要自己计算此值

您使用的哪个字符集也将与哪个字符集\u架构相关 并设置字符集名称。例如
utf8mb4\u general\u ci

对于数值*值;请

  • 排序规则*(ex)内容由用户设置,但如果不是用户设置,则使用数据库和/或表默认值

  • 字符集(ex)内容是用户集,但如果不是用户集,则使用数据库和/或表默认值

  • DATETIME\u精度已设置数据库/OS,未在
    TABLE CREATE上设置

  • 域*值在MySQL手册中找不到,似乎无效

所以 字符最大长度-用户设置
*

字符_八位字节_长度-根据用户设置/默认详细信息自动生成(
*

数字精度-用户设置
数字\u精度\u基数-特定
空间
类型列的用户设置
数字刻度-用户设置
日期时间\u精度-系统设置
字符集目录-可能值的系统集目录
字符集模式-从目录中生成的可能值模式
字符集名称-用户集,但默认为MySQL/Db默认值
*

排序规则目录-可能值的系统集目录
排序规则模式-目录中可能值的生成模式
排序规则\u名称-用户集,但默认为MySQL/Db默认值
*

域\u目录-未知。没有这种类型的记录
域\u架构-未知。没有这种类型的记录

域名-未知。没有这种类型的记录

如果要重新创建原始create table语句,则
信息\u架构
表不会提供所需的一切。您还需要
information\u schema
,它将为您提供引擎(可能是默认的innodb,但只是为了确保),
statistics
将为您提供键和
键列的用法
引用约束
任何外键定义。