gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:48:35 27 4
gpt4 key购买 nike

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

手头的问题:据我所知,其中一些属性是用户在创建表时指定的,而另一些可能是 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_NAME

最佳答案

Please read the 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 -字节)。虽然此值是在创建表时自动生成的,但如果您手动构建这些数据集,您可能需要自己计算这个值。

您使用的字符集也将与CHARACTER_SET_SCHEMA相关CHARACTER_SET_NAME 已设置。例如 utf8mb4_general_ci

对于 NUMERIC_* 值;请read here

  • COLLATION_*(例如 Schema)内容是用户设置的,但如果不是用户设置的,则使用数据库和/或表默认值。

  • CHARACTER_SET_*(例如 Schema)内容是用户设置的,但如果不是用户设置的,则使用数据库和/或表默认值。

  • DATETIME_PRECISION 是数据库/操作系统设置,未在 TABLE CREATE

    上设置
  • DOMAIN_* 值在 MySQL 手册中找不到,似乎无效

所以;

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 - 未知。没有这种类型的记录。

关于mysql - CREATE TABLE/ALTER TABLE 语句中可以指定 MySQL 语句中的哪些列属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57092641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com