解析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结构     ...
一周排行
  • select TABLE_NAME,CONCAT(ROUND(DATA_LENGTH/1024/1024),'MB') AS DATA_LENGTH,CONCAT(ROUND(INDEX_LENGTH/1024/10 ...
  • 很多资料中指出,canvas其实就是一个 画布,我们呢,用它给的各种工具(API)在加上一支神奇的画笔(Paint类)可以在画布上画出各种形状.有两个关键的点,其一是画控件画布区域.(你画画必须画在纸上啊)其二就是 ...
  • 一:Android处理Power按键操作     在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManager开始分析 ...
  • 1475: 方格取数 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 578  Solved: 309[Submit][Status][Discuss] Descripti ...
  • 一.接收请求参数 1.采用基本类型接收请求参数(get/post) public class UserAction { private Integer id; public void setId(Integer id ...
  • 一开始快排敲错两次 1 program hehe; 2 var 3 t,n,m,i,j,k:longint; 4 c:array[0..1] of longint; 5 pre,next,a,x:array[0..5 ...
  • (i美股讯)北京时间2月4日 移动应用平台商斯凯网络,今日发布了截至2012年12月31日未经审计的2013年第三财季的财务报告,当季收入1.47亿人民币,超预期上限值13%. 相比上季度扭亏为盈,季度净利润人民币8 ...
  • 接触java一年了,在过去的一年里,忙忙碌碌自学完了java基础知识,从零电脑基础,javaSE,mysql,oracle,servlet,jsp,struts,hibernate,spring等基础知识完完全全学了 ...
  • The problem is so easy, that the authors were lazy to write a statement for it! Input The input stream conta ...
  • 引子 最近江湖流传一内存泄露检测的神奇-LeakCanary,于是笔者按耐不住激动的心情,想试一把.但这个工程是gradle的,对于使用eclipse惯了的同学来说伤不起--不过笔者将其改造为eclipse工程了,g ...