`

理解MySQL数据类型 避免数据库设计出现混乱

阅读更多
本文突出介绍了MySQL支持的很多重要的数据类型,并介绍如何使用。

数据库存储中的数据类型与大小各异。有些地方只存储数字类型,有些只存储文本类型,有些二者而兼之。而很多数据库支持各种专用类型:日期和时间类型,二进制字符类型以及布尔类型。

选择数据类型与数据相匹配是数据库设计中最为重要的部分,因为这种类型将会影响到RDBMS的效率与性能。所以,对RDBMS的数据类型选择应给予足够的重视。

这就是编写本文的主要目的。表A将列举了MySQL支持的绝大部分重要的数据类型,而MySQL是当前最为流行的免费RDBMS。文中还描述了何时与如何使用这些数据类型。这将有助于建立一个数据库的合理设计。

表 A

数据类型
描述
字节
推荐使用

SMALLINT
整数,从-32000到 +32000范围
2
存储相对比较小的整数。

比如: 年纪,数量

INT
整数,从-2000000000 到 +2000000000 范围
4
存储中等整数

例如: 距离

BIGINT
不能用SMALLINT 或 INT描述的超大整数。
8
存储超大的整数

例如: 科学/数学数据

FLOAT
单精度浮点型数据
4
存储小数数据

例如:测量,温度

DOUBLE
双精度浮点型数据
8
需要双精度存储的小数数据

例如:科学数据

DECIMAL
用户自定义精度的浮点型数据
变量;取决于精度与长度
以特别高的精度存储小数数据。

例如:货币数额,科学数据

CHAR
固定长度的字符串
特定字符串长度(高达255字符)
存储通常包含预定义字符串的变量

例如: 定期航线,国家或邮编

VARCHAR
具有最大限制的可变长度的字符串
变量; 1 + 实际字符串长度 (高达 255 字符)
存储不同长度的字符串值(高达一个特定的最大限度).

例如:名字,密码,短文标签

TEXT
没有最大长度限制的可变长度的字符串
Variable; 2 +聽 actual string length
存储大型文本数据

例如: 新闻故事,产品描述

BLOB
二进制字符串
变量;2 + 实际字符串长度
存储二进制数据

例如:图片,附件,二进制文档

DATE
以 yyyy-mm-dd格式的日期
3
存储日期

例如:生日,产品满期

TIME
以 hh:mm:ss格式的时间
3
存储时间或时间间隔

例如:报警声,两时间之间的间隔,任务开始/结束时间

DATETIME
以yyyy-mm-ddhh:mm:ss格式结合日期和时间
8
存储包含日期和时间的数据

例如:提醒的人,事件

TIMESTAMP
以yyyy-mm-ddhh:mm:ss格式结合日期和时间
4
记录即时时间

例如:事件提醒器,“最后进入”的时间标记

YEAR
以 yyyy格式的年份
1
存储年份

例如:毕业年,出生年

ENUM
一组数据,用户可从中选择其中一个
1或 2个字节
存储字符属性,只能从中选择之一

例如:布尔量选择,如性别

SET
一组数据,用户可从中选择其中0,1或更多。
从1到8字节;取决于设置的大小
存储字符属性,可从中选择多个字符的联合。

例如:多选项选择,比如业余爱好和兴趣。


对于一个完整的列表和详细描述,可以查看MySQL manual。你也可以阅读文章Choosing the Right Type for a Column。

分享到:
评论

相关推荐

    MySQL索引背后的数据结构及算法原理

    本文以MySQL数据库为研究对象,讨论与数据 库索引相关的一些话题。...为了避免混乱,本文将只关注 于BTree索引,因为这是平常使用MySQL时主要 打交道的索引,至于哈希索引和全文索引本文 暂不讨论。

    量化数据库设计.pdf

    数据管理:负责记录⼊库的数据属于哪⼀⽅⾯(⾏情数据,因⼦数据,现货数据),每种数据类型由哪些组成(⽐如:⾏情数据有open high low close ,因⼦数据有 alpha1 alpha2... ... ) 最后 还需要记录每个品种管理...

    MySQL索引背后的数据结构及算法原理详解

    为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 文章主要内容分为三个部分。 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引...

    SQL Server-My SQL-Oracle数据字典生成工具chm.zip

    4、修复 偶然出现 字段排序混乱的 BUG; 5、修复 由于表的描述中含有 特殊字符 导致的 生成 CHM 格式文档卡死的BUG; V1.0【2014-07】 数据字典生成工具,用于生成 数据库表 及字段说明,主要特征如下: 1、支持的...

    数据库索引原理及优化

    为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 常见的查询算法及数据结构 为什么这里要讲查询算法和数据结构呢?因为之所以要建立索引,...

    毕业设计-基于JSP的酒品销售系统-设计与实现(源码+论文+视频).zip

    我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重...

    绿色免费人力资源管理软件┊人事、考勤、工资、考核、OA

    3) 数 据 库:access/msde/mssql/mysql/oracle(不同数据库间可以无缝割接,数据不受影响) 4) 网络模式:单机/局域网/互联网 5) 运行环境:win 2000 xp vista win2007 6) 软件语言:简体/繁体 中文(数据库...

    DBConvert Studio v.1.4.7

    可以让您将MySQL上的数据转移到服务器,也可以转移到其他数据库上使用,大家都知道数据库上保存的资源是非常多的,如果利用人工的方式转移,不仅速度缓慢,也容易造成数据混乱以及数据丢失,而利用软件转换就不一样...

    学生成绩信息管理系统论文 JSP 完整版

    提供多种数据类型;支持定长的和变长的纪录;所有的列都有缺省值,为我们的某些“粗心”提供了方便;灵活、安全的权限和密码系统,密码在传输中加密传送,允许主机端验证密码;13)客户端可以通过TCP/IP、Unix套接字...

    二十三种设计模式【PDF版】

    GoF 的设计模式表面上好象也是一种具体的"技术",而且新的设计模式不断在出现,设计模式自有其自己的发展轨道,而这 些好象和 J2EE .Net 等技术也无关! 实际上,GoF 的设计模式并不是一种具体"技术",它讲述的是...

    玩转模板--自动代码生成工程

    以及添加类似dm2java.properties数据库类型到java数据类型的映射文件,不同数据库的方言和数据映射太烦了. 当然,也可以联系我^_^ 自动从数据库中获取表名/表注释/列名/列注释/列类型等等相关信息 示例:由角色表...

    Javashop开发规范V2.2

    3.3 数据类型对照表 xml Mysql Oracle SqlServer int int NUMBER smallint int(1) smallint(1) NUMBER(2) int memo text CLOB text datetime datetime TIMESTAMP datetime long bigint NUMBER bigint decimal ...

    Dapper.FastCRUD:Dapper最快的micro-orm扩展

    支持多实体映射,对于大型非规范化表中的部分查询以及不同数据库类型之间的数据迁移非常有用。 所有CRUD方法都接受事务,命令超时和自定义实体映射。 快速预先计算的实体查询 与组件模型数据注释兼容。 选择加入...

    耶恩内容管理系统(yeencms)yeencms_v1.0.1-gbk更新.rar

    5、应用户建议,为免对用户造成混乱,将所有节点字眼修改为栏目 6、根据用户反馈,修复后台左侧显示错误的问题 7、根据用户反馈,修复后台幻灯片添加不正确的问题,同时将幻灯片的调用调整用前台自动调用,并内容...

    CodeIgniter:php敏捷开发框架web快速开发详解

    解决方案是在把这些数据存入数据库前对这些数据进行相关处理。这样做会浪费一些系统时间,增加一些额外编码。 CI 的表单辅助函数会自动地完成这些工作。因此,当你编写一个输入框时: 复制代码到剪贴板PHP 代码...

Global site tag (gtag.js) - Google Analytics