关于char varchar和tinyint的问题



我正在为一个注册表表工作。它的字段/列包括:

student_no(主键)和年龄

student_no将包含固定长度为9个字符的值,其中包含8个数字和一个短划线,例如11-423685、12-537859、12-974156

我不确定是使用char还是varchar,因为我想在使用它们之前了解更多关于这两种类型的信息。特别是:

  1. 这两种类型中的一种或两种是否都可以包含键盘上包括各种符号(-、@、_、$、#等)的值,比如我需要学生号来包含短划线?

  2. 如果我给char的长度是9,那么给它一个长度为8且低于的值是无效的吗

  3. 需要注意的其他重要差异(如果有)

至于年龄,如果我使用tinyint,是否需要指定长度?还是应该将phpMyAdmin中的长度字段留空?

注意:这实际上只是一个学校练习,指导是制作一份包含任何14个字段的工作登记表,所以我决定暂时不使用生日,以避免使用日期。

INT不允许任何非数字格式。VARCHAR做到了。

然而,最好使用INT来表示学生人数,因为INT会导致更快的搜索。

您可以使用格式在输出中使用连字符显示学生编号。数据库应该以最有效的格式(未格式化的数字)存储它。

此外,我建议您使用DATE来存储出生日期,而不是数字年龄。这将防止随着时间的推移而更改年龄的问题。同样,您可以计算演示文稿输出的年龄。

CHAR()很奇怪。它是一个固定长度的字符串,如果您试图将其设置为较短的值,则会用空格填充。它几乎从来都不适合使用——如果你忘记了它的存在,你可能永远不会错过它

VARCHAR()在很大程度上按照您的预期工作。它可以包含最大长度以内的任何字符串(包含任何字符)。

不要储存年龄。存储出生日期(使用类似DATE的类型)。但是,如果必须存储年龄,那么数字类型(如TINYINT)的长度几乎没有意义,应该留空。

最新更新