文档章节

MySQL如何选择数据类型

nao
 nao
发布于 2016/09/07 07:19
字数 1100
阅读 44
收藏 2

在MySQL中创建表 时,需要考虑为字段选择那种数据类型是最合适的。只有选择了合适的数据类型,才能

提高数据库的效率。 ———————————————————————————————————————————————

1.整数类型和浮点数类型

整数类型和浮点数类型最大的区别在于能否表达小数。整数类型不能表达小数,而浮点数类型可以表示小数。不同的整数类型的取值范围不同。TINYINT类型的取值范围为0~255。如果字段的最大值不超过255,那选择TINYINT类型就足够了。BIGINT类型的取值范围最大。最常用的整数类型是INT类型。

浮点数类型包括FLOAT类型和DOUBLE类型。DOUBLE类型的精度比FLOAT类型高。如果需要精确到小数点后10位以上,就应该选择DOUBLE类型,而不应该选择FLOAT类型。 ———————————————————————————————————————————————

2.浮点数类型和定点数类型

对于浮点数和定点数,当插入值的精度高于实际 定义的精度时,系统会自动进行四舍五入处理。其目的是为了使该值的精度达到要求。浮点数进行四舍五入时系统不会报警。定点数会出现警告。

在未指定精度的情况下,浮点数和定点数有其默认的精度。FLOAT型和DOULBE型默认会保存实际精度。这个精度与操作系统和硬件的精度有关。DECIMAL型默认整数位为10,小数位为0,即默认为整数。

在 MySQL中,定点数精度比浮点数 要高。 而且,浮点数会出现误差。如果要对数据的精度要求比较高,应该选择定点数。

———————————————————————————————————————————————

3.CHAR类型和VARCHAR类型

CHAR类型的长度是固定的,而VARCHAR类型的长度是在范围内可变的。因此,VARCHAR类型占用的空间比CHAR类型小,而且,VARCHAR类型比CHAR类型灵活。对于长度变化比较大的字符串类型,最好是选择VARCHAR类型。

虽然CHAR类型占用的空间比较大,但是CHAR类型的处理速度比VARCHAR的快。因此,对于长度变化不大和查询速度要求较高的字符串类型。最好选择CHAR类型。

———————————————————————————————————————————————

4.时间和日期类型

YEAR类型只表示年份。如果 只需要记录年份,选择YEAR类型可以节约空间。TIME类型只表示时间。如果只需要记录时间,选择TIME类型是最合适的。DATE类型只表示日期。如果只需要记录日期,选择DATE类型是最合适的。

如果需要记录日期和时间,可以选择DATETIME类型和TIMESTAMP类型。DATETIME类型表示的时间范围比TIMESTAMP类型大。因此,若需要的时间范围比较大,选择DATETIME类型比较合适。TIMESTAMP类型的时间是根据时区来显示的。如果需要显示的时间与时区对应。那就应该选择TIMESTAMP类型。

———————————————————————————————————————————————

5. ENUM类型和SET类型

ENUM类型最多可以有65535个成员,而SET类型最多只能包含64个成员。两者的取值只能在成员列表中选取。ENUM类型只能从成员中选择一个,而SET类型可以选择多个。

因此,对于多个值中选取一个的,可以选择ENUM类型。例如,"性别"字段可以定义为ENUM类型。因为只有在"男"和"女"中选其中一个。对于 可以选取多个值的字段,可以选择SET类型。例如,"爱好"字段可以选择SET类型,因为可能有多种爱好。

———————————————————————————————————————————————

6. TEXT类型和BLOB类型

TEXT类型与BLOB类型很类似。TEXT类型存储只能存储字符数据。而BLOB类型可以用于存储二进制数据。 如果需要存储文章等纯文本的数据,应该选择TEXT类型。如果需要存储图片等二进制的数据,应该选择BLOB类型。

TEXT类型包括TINYTEXT,TEXT,MEDUIUMTEXT和LONGTEXT。这四者最大的不同是内容给的长度不同。TINYTEXT类型允许的长度最小, LONGTEXT类型允许的长度最大。BLOB类型也是如此。

———————————————————————————————————————————————

学习资料:

《mysql入门很简单》

http://blog.csdn.net/shaobingj126/article/details/7930270

© 著作权归作者所有

nao

nao

粉丝 27
博文 155
码字总数 108154
作品 0
成都
后端工程师
私信 提问
跟王老师学MySQL:MySQL数据类型常见问题及解答

跟王老师学MySQL:MySQL数据类型常见问题及解答 主讲教师:王少华 QQ群号:483773664 学习内容 整数类型和浮点类型的异同 浮点数类型和定点数类型的异同 char和varchar类型的异同 时间和日期...

imentors
2016/07/04
0
0
MySql数据库 学习记录

什么事MySQL数据库? 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。我们常说的MySQL数据库,sql server数据库等其实是数...

杨春炼
2016/12/24
36
0
腾讯云大学直播课程上线,预约从速!

腾讯云大学直播课程《揭秘MySQL的数据类型》专家带你1小时玩转数据类型! 讲师:腾讯云数据库产品经理summerdliu 课程内容: MySQL数据类型的基础知识 MySQL数据类型的选择 MySQL数据类型的选...

腾讯云大学
05/29
15
0
Navicat for MySQL 如何使用

大家都知道Navicat是数据库管理工具,而数据库的种类有很多,其针对不同的数据库设计了不同的管理工具。针对MySQL 数据库设计了 Navicat for MySQL ,其操作非常的简单方便,适用于所有的程序...

Navicat数据库管理工具
2016/06/21
210
0
详解MySQL中EXPLAIN解释命令

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了: 如: explain select surna...

Lydialyd
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ES5

什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误...

wytao1995
54分钟前
7
0
c++ 内联函数调用快的原因

见图片分析

天王盖地虎626
今天
4
0
微服务之间调用控制器注解类型的差异

今天在一个业务服务通过Feign调用文件服务上传文件时遇到了几个问题: 1. 提示http请求头过大的问题; 此时需要修改bootstrap.yml,加入 server: max-http-header-size: 10000000 用以放大...

不再熬夜
今天
7
0
用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
今天
9
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部