关于char varchar和tinyint的问题

时间:2012-12-02 01:56:54

标签: mysql phpmyadmin char varchar tinyint

我正在办理登记表格的桌子。其中的字段/列是:

student_no(主键) 和年龄

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

我不确定是否要使用char或varchar,因为我想在使用之前了解更多有关这两种类型的信息。具体是:

  1. 这些类型中的一个或两个是否包含键盘上包含各种符号的值( - ,@,_,$,#等),就像我需要学生编号包含短划线一样?< / p>

  2. 如果我给char长度为9,那么给它一个长度为8及以下的值是无效的

  3. 需要注意的其他重要差异,如果有的话

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

    注意:这实际上只是一个学校练习,其中的指示是制作一个包含14个字段的工作注册表,因此我决定暂时不使用生日以避免使用日期。

2 个答案:

答案 0 :(得分:2)

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

然而,使用INT代表学生编号仍然更好,因为INT会导致更快的搜索。

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

另外,我建议您使用DATE来存储birth_date,而不是数字年龄。这将防止随着时间的推移改变年龄的问题。同样,您可以计算输出的年龄。

答案 1 :(得分:2)

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

VARCHAR()很大程度上取决于你的期望。它可以包含任何字符串(包含任何字符),直到最大长度。

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