mysql - MySQL 语句中的哪些列属性可以在 CREATE TABLE / ALTER TABLE 语句中指定?
问题描述
手头的任务:需要在 MySQL 中创建表,从另一个数据库的 Information.Schema 中的列表转储。我无权访问原始数据库或数据库架构师。我想知道可以在 CREATE TABLE 语句中指定从原始数据库的 Information_Schema 中提取的以下哪些属性。目标是创建一个与原始表格相同的表格。
手头的问题:我知道其中一些属性是由用户在创建表时指定的,而有些可能是 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
解决方案
请阅读MySQL 手册页
对于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相同,除了多字节字符集。
对于多字节字符集,您可能应该使用 utf8mb4_
集合。所以
CHARACTER_OCTET_LENGTH可能是CHARACTER_MAXIMUM_LENGTH x 4(对于 4 字节完整的 UTF-8;请注意utf8_
MySQL 字符集/排序规则仅为3 字节)。虽然这个值是在创建表时自动生成的,但如果您手动构建这些数据集,您可能需要自己计算这个值。
您使用的字符集也与设置的CHARACTER_SET_SCHEMA
和CHARACTER_SET_NAME相关。例如utf8mb4_general_ci
会
对于NUMERIC_*值;请在这里阅读
COLLATION_* (ex Schema ) 的东西是用户设置的,但如果不是用户设置,则使用数据库和/或表默认值。
CHARACTER_SET_* (ex 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 - 未知。没有这种类型的记录。
推荐阅读
- windows - grep 这个,但不是这个(windows)
- java - 多线程访问物化视图:同时刷新和读取似乎会导致不一致的行为
- abaqus - 零件编号
- android - 如何使包含滑动刷新布局的视图可滚动?
- powerbi - Power Bi 中的红绿灯也适用于总计
- javascript - 通过 pushState 改变当前 URL 的路径时改变页面的内容
- android - 房间数据库错误:迁移没有正确处理
- amazon-web-services - 我是否需要将 AWS Lambda 用于 Alexa 智能家居技能?
- laravel - 将登录用户属性作为集合获取?
- javascript - 在 createcontext 中缺少一些案例