在CREATE TABLE/ALTER TABLE语句中可以指定MySQL语句中的哪些列属性?
手头的任务:需要从另一个数据库的Information.Schema中的columns表转储,在MySQL中创建表。我无法访问原始数据库或数据库架构师。我想知道从原始数据库的信息模式中提取的以下哪些属性可以在CREATE TABLE语句中指定。其目的是创建一个与原始表相同的表 眼前的问题:我知道其中一些属性是用户在创建表时指定的,而有些属性可能是MySQL根据表中的数据计算出来的。当我阅读并理解这些属性时,我无法快速确定下面列出的哪些属性是由MySQL计算的,而不是用户指定的,因此在编写CREATE TABLE语句时可以忽略这些属性 字符\最大\长度在CREATE TABLE/ALTER TABLE语句中可以指定MySQL语句中的哪些列属性?,mysql,create-table,information-schema,Mysql,Create Table,Information Schema,手头的任务:需要从另一个数据库的Information.Schema中的columns表转储,在MySQL中创建表。我无法访问原始数据库或数据库架构师。我想知道从原始数据库的信息模式中提取的以下哪些属性可以在CREATE TABLE语句中指定。其目的是创建一个与原始表相同的表 眼前的问题:我知道其中一些属性是用户在创建表时指定的,而有些属性可能是MySQL根据表中的数据计算出来的。当我阅读并理解这些属性时,我无法快速确定下面列出的哪些属性是由MySQL计算的,而不是用户指定的,因此在编写CREA
字符八位字节长度
数字精度
数字精度基数
数字刻度
日期时间\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
将为您提供键和键列的用法
和引用约束
任何外键定义。