首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >常见的MySQL字段及其相应的数据类型

问常见的MySQL字段及其相应的数据类型
EN

Stack Overflow用户
提问于 2008-12-10 00:48:20
回答 6查看 123.7K关注 0票数 119

我正在建立一个非常小的MySQL数据库,用于存储名字、姓氏、电子邮件和电话号码,并且正在努力为每个字段找到“完美”的数据类型。我知道没有完美的答案,但对于像这样的常用字段,必须有某种通用的约定。例如,我确定一个未格式化的美国电话号码太大,无法存储为无符号整数,它必须至少是一个大整数。

因为我相信其他人可能会发现这很有用,所以我不想把我的问题限制在我上面提到的字段上。

哪些数据类型适用于常见的数据库字段?像电话号码,电子邮件和地址这样的字段?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-10 00:57:35

有人会发布一个比这个更好的答案,但只是想说明一点,就我个人而言,我永远不会在任何类型的整数字段中存储电话号码,主要是因为:

  1. 你不需要用它做任何形式的算术运算,
  2. 迟早会有人试图(做一些类似的事情)把他们的区号括起来。

不过,总的来说,我似乎几乎只使用:

对于任何ID或引用另一个ID的内容,

  • INT(11);对于任何保证少于255个字符(页面标题、名称等)的内容,
  • time

time

  • time;对于几乎所有其他内容,
  • TEXT。

当然也有例外,但我发现这涵盖了大多数可能性。

票数 78
EN

Stack Overflow用户

发布于 2009-12-29 07:40:59

以下是我使用的一些常见数据类型(虽然我不是很专业):

代码语言:javascript
复制
| Column           | Data type     | Note
| ---------------- | ------------- | -------------------------------------
| id               | INTEGER       | AUTO_INCREMENT, UNSIGNED                                                          |  
| uuid             | CHAR(36)      | or CHAR(16) binary                                                                |  
| title            | VARCHAR(255)  |                                                                                   |  
| full name        | VARCHAR(70)   |                                                                                   |  
| gender           | TINYINT       | UNSIGNED                                                                          |  
| description      | TINYTEXT      | often may not be enough, use TEXT 
                                     instead          
| post body        | TEXT          |                                                                                   |  
| email            | VARCHAR(255)  |                                                                                   |  
| url              | VARCHAR(2083) | MySQL version < 5.0.3 - use TEXT                                                  |  
| salt             | CHAR(x)       | randomly generated string, usually of 
                                     fixed length (x)    
| digest (md5)     | CHAR(32)      |                                                                                   |  
| phone number     | VARCHAR(20)   |                                                                                   |  
| US zip code      | CHAR(5)       | Use CHAR(10) if you store extended 
                                     codes      
| US/Canada p.code | CHAR(6)       |                                                                                   |  
| file path        | VARCHAR(255)  |                                                                                   |  
| 5-star rating    | DECIMAL(3,2)  | UNSIGNED                                                                          |  
| price            | DECIMAL(10,2) | UNSIGNED                                                                          |  
| date (creation)  | DATE/DATETIME | usually displayed as initial date of 
                                     a post                                       |  
| date (tracking)  | TIMESTAMP     | can be used for tracking changes in a 
                                     post                                        |  
| tags, categories | TINYTEXT      | comma separated values *                                                          |  
| status           | TINYINT(1)    | 1 – published, 0 – unpublished, … You 
                                     can also use ENUM for human-readable 
                                     values
| json data        | JSON          | or LONGTEXT       
票数 51
EN

Stack Overflow用户

发布于 2008-12-10 01:01:55

根据我的经验,名字/姓氏字段应该至少包含48个字符--有些国家的名字全称非常长,比如马来西亚或印度。

你应该始终把电话号码和邮政编码当做文本,而不是数字。()通常给出的原因是有以0开头的邮政编码,在某些国家/地区,电话号码也可以以0开头。但真正的原因是它们不是数字--它们是恰好由数字组成的标识符(这忽略了像加拿大这样邮政编码中有字母的国家)。因此将它们存储在文本字段中。

在MySQL中,您可以将VARCHAR字段用于此类信息。虽然这听起来很懒惰,但这意味着你不必太在意合适的最小大小。

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

https://stackoverflow.com/questions/354763

复制
相关文章

相似问题

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