我最近深入研究了令人兴奋的 SQL 世界。我仍在尝试围绕这些概念进行思考。我一直在网上关注教程。这些教程中的许多都包含用于制作这样的表的 SQL。
CREATE TABLE `users` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
在看到像我这样的行之后,id tinyint(4)
我想知道参数传递给数据类型的是什么。我想“这是否意味着 id 可以是 -128 到 127 之间的任何整数(不超过 4 个字符)?”
所以我查阅了文档。这就是MySQL 文档对数字类型属性的看法。
显示宽度不限制可以存储在列中的值的范围。它也不会阻止正确显示比列显示宽度更宽的值。例如,指定为 SMALLINT(3) 的列的 SMALLINT 范围通常为 -32768 到 32767,超出三位数允许范围的值使用多于三位的数字完整显示
当与可选(非标准)属性 ZEROFILL 结合使用时,空格的默认填充将替换为零。例如,对于声明为 INT(4) ZEROFILL 的列,值 5 被检索为 0005。
因此,如果我没看错的话,INT(255)
除非您使用 zerofill,否则声明之类的东西是无用的。好的,您声明数据库为该数据库分配足够空间的数据类型是有道理的。
那么为什么人们会写这样的代码呢?它有目的吗?我完全误解了吗?