解析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结构     ...
一周排行
  • 转眼2015年就过去一半了,作为IT屌丝的我,感到仿徨又无奈,从事这个行业差不多有5年了,现在让我来说说我的心路历程. 2010年,从大学出来,就去上海了,弱小的心灵想见识下传说中的大上海,第一份工作进入了长城宽带, ...
  • 获取网页源码的小例子,代码很简单,就不多作解释了. [cpp] #include <QtCore>  #include <QtNetwork>    //网页地址  const QString ...
  • 客户端向服务器发起连接: [csharp] //设置服务IP,设置UDP端口号   ipep = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(te ...
  • 由于前面提到的历史的原因,最初的绝大多数邮件服务器都允许OPEN RELAY的.今天,大部分邮件服务器升级版本已经在缺省设置中关闭了OPEN RELAY, 如Sendmail 从8.9.3版本开始,Exchange ...
  • 装上win8后,感觉似乎开机比win7要慢一些,但实际掐表又发现几乎无差别,但是看网上别人都说 win8可以10秒以内开机,然后又说他们是采用uefi引导,而不是bios引导,那我也试试吧,如下: 1.用U盘引导安装 ...
  • 准备环境:Linux or MacOS(也可以选择虚拟机里面安装ubuntu,请注意若是要编译Android源代码,Windows暂不支持). Note:The source download is approxim ...
  • 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.   对于数据流,对 ...
  • #include <stdio.h> #define peach int typedef int banana; int main(void){ unsigned peach a; unsigned ba ...
  •   在一个命名空间中,当 PHP 遇到一个非限定的类.函数或常量名称时,它使用不同的优先策略来解析该名称. 1.类名称总是解析到当前命名空间中的名称.因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定 ...
  • 新华社电 墨西哥电信服务商"iFone"6日打赢一桩商标侵权官司,有意向用美国苹果公司智能手机"iPhone"打广告的墨西哥移动通信市场三巨头索赔.美国苹果公司2007年首次注 ...