首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于char varchar和tinyint的问题

关于char varchar和tinyint的问题
EN

Stack Overflow用户
提问于 2012-12-02 01:56:54
回答 2查看 819关注 0票数 2

我正在为一张登记表准备一张桌子。其中的字段/列如下:

student_no (主键)和年龄

student_no将保存固定长度为9个字符的值,其中包含8个数字和一个破折号,例如11-423685、12-537859、12-974156。

我不确定是使用char还是varchar,因为在使用它们之前,我想知道更多关于这两种类型的信息。具体而言:

  1. 这两种类型中的一种或两种类型是否能保存键盘上包含各种符号的值(-、@、_、$、#等),比如我如何需要学生数字来包含破折号?
  2. 如果我给焦炭一个9的长度,那么给它一个长度为8及以下的值是否无效?
  3. 其他重要的差异(如果有的话)

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

注:这实际上只是一项学校练习,教学内容是用十四个字段制作一份工作登记表,所以我决定暂时不使用生日,以避免使用日期。

EN

回答 2

Stack Overflow用户

发布于 2012-12-02 01:59:35

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

但是,使用INT表示学生编号仍然更好,因为INT将导致更快的搜索。

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

另外,我建议您使用日期来存储birth_date,而不是使用数字年龄。这将防止随着时间的推移,随着年龄的变化而产生的问题。同样,您可以根据输出计算年龄以供表示。

票数 2
EN

Stack Overflow用户

发布于 2012-12-02 02:00:26

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

VARCHAR()的工作方式在很大程度上是你所期望的。它可以包含任何字符串(带有任何字符),直到它的最大长度。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13665713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档