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

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

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

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

表 A

数据类型

描述

字节

推荐使用

SMALLINT

整数,从-32到 +32范围

2

存储相对比较小的整数。

比如: 年纪,数量

INT

整数,从-2 到 +2 范围

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

(责任编辑:铭铭 [email protected] TEL:(010)68476636)


  • 解析MySQL数据类型 避免数据库设计出现混乱
    给力
    (0票)
  • 解析MySQL数据类型 避免数据库设计出现混乱
    动心
    (0票)
  • 解析MySQL数据类型 避免数据库设计出现混乱
    废话
    (0票)
  • 解析MySQL数据类型 避免数据库设计出现混乱
    专业
    (0票)
  • 解析MySQL数据类型 避免数据库设计出现混乱
    标题党
    (0票)
  • 解析MySQL数据类型 避免数据库设计出现混乱
    路过
    (0票)
getcountscom(35673,11); getcountscom(35673,12); getcountscom(35673,13); getcountscom(35673,14); getcountscom(35673,15); getcountscom(35673,16);

更多相关文章
  • 摘要:OpenStack云技术眼下变得非常流行,但贵公司该如何使用它呢?是将OpenStack作为一款发行版部署在贵公司的服务器或数据中心?还是将它用作服务提供商提供的一项服务?   OpenStack是一项旨在应对亚马逊网络服务及其他公有云的开源私有云技术,它正在迅速发展.你不必相信我的话,只要问 ...
  • 原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   在分布式系统中,数据序列化传递的情形非常常见,主流的三种,JSON.XML.Protobuf.   XML现在已经很少使用,除非要和遗留系统交互.   JSON用在前端交互和跨组织的API的交互场合比较多.   ...
  • 18日,安全厂商卡巴斯基实验室发布的2014年度网络威胁统计数据显示,今年卡巴斯基实验室反病毒产品共拦截了62亿次针对用户计算机和移动设备的恶意攻击,该数据较2013年增加了逾10亿次.而其中,移动威胁增长明显,仅手机银行木马就比去年增长了9倍.   2014年被安全专家称为移动金融威胁元年,越来越 ...
  • 背景 近期项目前端决定使用less,简单介绍一下,详细信息有兴趣查看官方文档(http://www.lesscss.net/article/home.html)  LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算 ...
  • Mercury 是一款优秀的开源Android APP应用安全评估框架,它最赞的功能是可以动态的与android设备中的应用进行IPC(组件通信)交互. 一.安装与启动 1. 安装  (1)windows安装 第一步:下载Mercury 2.2.2 (Windows Installer)   第二步 ...
  • 执行环境(Execution Context)   所有的javascript代码都是在一个执行环境中被执行的.它只是一种机制,用来完成运行时作用域.生存期等方面的处理.   代码分为三种类型:   Global Code  Eval Code Function Code  这是一个EC结构     ...
一周排行
  •       林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka       本文要以一个例子来说明SpringMVC访问静态资源      <mvc:res ...
  • 这种双循环的优化问题碰到过很多了.层出不穷. 但无非就是要利用前面循环时,所产生的信息,从而减少计算. 可以注意到log其实是不超过40的, 那么以这方面入手,时间复杂度就可以降为nlogn log=4的区间肯定是l ...
  • 如何灵活利用免费开源图标字体-IcoMoon篇 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress ...
  • 图片来源于深圳商报官微 图片来源于深圳商报官微 图片来源于深圳商报官微 图片来源于深圳商报官微
  •   今早一用户说登录了几次都没有发现他原来放在桌面上的诸多文件,包括OUTLOOK的配置也消失了. 起初怀疑用户是不是进行了系统恢复,但是系统恢复不会删除用户私用数据的. 尝试进入系统盘下默认的user目录内,发现东 ...
  • 今天晚上实验室的另一个人在编译一个java程序,需要用到一个jar文件,所以在命令行编译的时候需要添加jar的路径,例如: java -classpath demo.jar hello 但是设置了path之后java ...
  •   近期读过的书:   <淘宝这十年> <京东技术解密> <大型网站技术架构> <软件即平台>  
  •         MyEclipse敲代码实在不爽,所以小程序的话一直用JCreator打,就是一直没解决怎么让Eclipse像VS或CodeBlocks那样打几个字就有自动提示. 今天探索了一下,正所谓天下文章一大抄 ...
  • Insert Values Insert Select Insert Exec Select Into Bulk Insert Insert Values是最常用的一种插入数据的方式,基本语法如下,表名之后可以指定目 ...
  • /** * 加密.解密字符串 * * @global string $db_hash * @global array $pwServer * @param $string 待处理字符串 * @param $actio ...