gpt4 book ai didi

mysql - 在 MySQL 中声明表时添加数据类型大小的真正意义是什么?

转载 作者:行者123 更新时间:2023-11-29 19:23:21 25 4
gpt4 key购买 nike

有时,当我们创建 MySQL 表时,我们会在括号中添加数据类型大小,如下所示:

CREATE TABLE user (
id INT(11) UNSIGNED NOT NULL PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
is_admin TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
);

但据我了解,在 MySQL 5.0.3 之前,VARCHAR 最多可以存储 255 个字符,在 5.0.3 及更高版本中最多可以存储 65,535 个字符。

即使我们有 TINYINT(1),它仍然可以存储数字 100。

为什么不直接做这样的事情呢?

CREATE TABLE user (
id INT UNSIGNED NOT NULL PRIMARY KEY,
email VARCHAR NOT NULL,
password VARCHAR NOT NULL,
is_admin TINYINT UNSIGNED NOT NULL DEFAULT 0
);

并且省略尺寸?首先拥有这些的真正实际意义或好处是什么?我们什么时候想使用它们?

最佳答案

MySQL 一直是一个比其他数据库更随意的数据库,它非常重视诸如约束之类的事情。它往往倾向于“按我的意思做,而不是按我说的做”。

对于整数数字类型,说明符仅用于填充目的,而不是作为限制。对于字符类型,这是可以存储在该字段中而无需强制截断的最大长度。默认情况下,此截断是静默完成的,您永远不会知道它发生了,这可能会很麻烦。

对于非整数字段,始终建议明确指定您需要的长度。这有助于其他人理解您的意图。例如,为名称指定 VARCHAR(100) 意味着该字段只能包含 100 个字符,这意味着与该字段交互的任何表单都应该验证内容是否适合。

应用此建议会产生以下架构:

CREATE TABLE user (
id INT UNSIGNED NOT NULL PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
is_admin TINYINT UNSIGNED NOT NULL DEFAULT 0
);

关于mysql - 在 MySQL 中声明表时添加数据类型大小的真正意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42309633/

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