有时我们创建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
);
,但正如我所知,Varchar在5.0.3及以后的版本中最多可以存储255个字符。
。,甚至我们有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
);
当您指定像 VARCHAR(255)
这样的大小时,只允许该列的金额,因此不能更大。您可以在此答案中找到更多信息。
在大多数情况下,当您具有带有多个旧应用程序的混合环境时,它们将使用它们迫使限制,因此您也必须在DB中使用它们。<<<<<<<<<<<<<</p>