MySQL学习笔记之数据存储类型
说明:本文是作者对MySQL数据库数据存储类型的小小总结。
Numeric Type (数字类型)
1、TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
主要根据存储字节长度不一样划分:
TINYINT:1字节
SMALLINT:2字节
MEDIUMINT:3字节
INT:4字节
BIGINT:8字节
如果不需要符号数时,建议加上unsigned,会扩充存储长度一倍,提高存储性能。如TINYINT UNSIGNED(0~255)/TINYINT(-128~127)。
2、DECIMAL/NUMERIC
DECIMAL与NUMERIC一样,二进制形式存储数字类型,如DECIMAL(4,2)表示存储一个小数点后两位总共4位精度的数字,范围是-99.99~99.99。总位数最大数字是65。
3、FLOAT和DOUBLE
FLOAT是4字节存储,DOUBLE双精度是8字节存储。FLOAT(6,4)表示存储一个小数点后四位总共6位精度的数字,如果小数位有超出则四舍五入。如把99.0000990存进去,则实际上存的是99.0001,这会让数字失真,所以对于银行账号金额要求高精度的,则可以换成双精度来存储,或者对原数字小数点左移存储。
String Type (字符类型)
1、CHAR和VARCHARCHAR是固定字符长度,且最大字符长度为255=2e8-1,处理速度比VARCHAR快,但容易浪费存储空间。如CHAR(10)表示固定分配10个字符长度存储空间,当存储'PHP'时,就浪费了7个字符长度的存储空间。对于字符后尾的空格,CHAR需要做处理。VARCHAR是可变长度,根据字符实际长度分配存储空间,最大字符长度为65535=2e16-1。VARCHAR(10)表示最大存储10个字符长度的字符串,存储'PHP'时只分配3个存储空间,节约存储空间。默认使用InnoDB引擎时,使用VARCHAR比较好。一般用VARCHAR类型比较多。
2、BINARY和VARBINARYBINARY/VARBINARY和CHAR/VARCHAR类似,只不过BINARY/VARBINARY存储的是二进制字符,长度也表示字节长度而不是字符长度(ASCII编码一个英文字母1个字节一个汉字2个字节;UTF-8编码一个英文字母1个字节一个汉字3个字节)。
3、BLOB和TEXTBLOB存储大数据量的二进制数据,比如一张图片。BLOB分为:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB,根据存储字节最大长度分类。TEXT存储大数据量的字符串数据,TEXT分为:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,根据存储文本最大长度分类。
4、ENUM
枚举类型,每一个值都有对应的索引index。最大两个字节存储,65535个不同成员。注意的是:
表中字段:numbers ('0', '1', '2')
insert into test(numbers) values (2),('2'),('3');
select * from test;
会返回:
numbers
1
2
2
这说明,存储整形2时把2当做索引存的是第二个值'1',存储字符'2'时就是字符'2',存储字符'3'时把'3'当做索引3,存的是'2'。
5、SET
集合类型,与ENU类似,最多包含64个成员。
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
SELECT * FROM myset;
会顾虑掉重复数据:
Date and Time Type (日期和时间类型)
DATE、TIME、DATETIME、TIMESTAMP、YEAR
默认格式为:
DATE: 1000-01-01 ~ 9999-12-31
TIME: 00:00:01 ~ 23:59:59
DATETIME: 1000-01-01 00:00:00 ~ 9999-12-31 59:59:59
TIMESTAMP: 1970-00-01 00:00:00 ~ 2038-01-19 03:14:07
YEAR: 0001 ~ 9999
其中,比较方便的一个是timestamp,它可以根据时区不同进行转换,很好用。
MySQL学习笔记之数据存储类型的更多相关文章
- Android 学习笔记之数据存储SharePreferenced+File
学习内容: Android的数据存储.... 1.使用SharedPreferences来保存和读取数据... 2.使用File中的I/O来完成对数据的存储和读取... 一个应用程序,经常需要与用 ...
- MySQL学习笔记:Engine存储引擎
在使用Mysql建表过程中,有时候会遇到一些奇怪的现象.例如,如何插入数据就是查询不到数据,此时可能是建表的存储引擎设置成为engine=blackhole的原因. 1.engine=innodb 提 ...
- android菜鸟学习笔记18----Android数据存储(二)SharedPreferences
数据存储的方式,有比直接文件读写更加简便的方式,那就是操作SharedPreferences. SharedPreferences一般用于存储用户的偏好设定,暂时不支持多进程操作. SharedPre ...
- mysql学习笔记一 —— 数据的增删改查
1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...
- MySQL学习笔记七:存储引擎
1.MySQL存储引擎的设计采用“插件式”方案,用户可以很方便地选择使用哪种存储引擎,想使用mysql没有提供的引擎时,可以自己安装进去. 查看支持的存储引擎 mysql> show engin ...
- MySQL学习笔记(四):存储引擎的选择
一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...
- android菜鸟学习笔记20----Android数据存储(四))Android数据库操作
Android内置了一个名为SQLite的关系型数据库,这是一款轻量型的数据库,操作十分简便.SQLite与别的数据库不同的是,它没有数据类型.可以保存任何类型的数据到你所想要保存的任何表的任何列中. ...
- android菜鸟学习笔记17----Android数据存储(一)文件读写
假如有如下需求,要求能够记录用户输入的用户名和密码,下次登录时,能直接获取之前保存的用户名密码,并在相应的EditText中显示. 要保存用户输入的数据,最先想到的应该就是文件读写了. 通过对andr ...
- Windows Phone 学习笔记(一) 数据存储
独立存储设置IsolatedStorageSetting private IsolatedStorageSettings _appSettings; public MainPage() { Initi ...
随机推荐
- [MODX] 2. Chunks $
Chunk in Modx can cut your template into samll pieces to make code reuseable. [[$chunk_name]] For ex ...
- Unity NGUI 描点控件的位移动画
要让一个描点的控件动画移动到一个Position,能够用TweenPosition.可是这个仅仅能用在Position是固定的情况下.并且不能依据分辨率适配来进行移动. 以NGUI自带的 ...
- win7 下 qwt安装教程
一.安装:qwt的安装很简单,可以参看它的install文档.1.解开下载下来的zip文件,比如解开到d:\qt\qwt-5.0.2目录下,修改目录下的qwtconfig.pri文件里面的安装路径,比 ...
- php的引用&(就是在变量或者函数、对象等前面加上&符号)
官方文档: 1.引用是什么:http://www.php.net/manual/zh/language.references.whatare.php 2.引用做什么:http://www.php.ne ...
- query插件之ajaxForm ajaxSubmit的理解用法
如今ajax满天飞,作为重点的form自然也受到照顾. 其实,我们在平常使用Jquery异步提交表单,一般是在submit()中,使用$.ajax进行.比如: $(function(){ $('# ...
- 装饰者模式--《Head First DesignPattern》
装饰者模式动态地将责任附加到对象杭,若要拓展功能,装设置提供了比继承更有弹性的替代方案. 星巴兹有多种咖啡,它们具有不同的价格.在购买咖啡时,也可以要求在其中加入各种调料,例如豆浆.摩卡.奶泡等等.需 ...
- Visual studio 2013 添加 GitHub
- ASP.NET MVC 4 让数据库自动迁移
今天实际测试了下这个方法,可以保持数据库与实体类同步,同时不会出现数据库迁移的提示.但是只能更改实体类来改变数据库,而不能改数据库来改变实体类.所以这才是Code frist,如果通过改数据库表来改动 ...
- hadoop学习记录(一)HDFS
hadoop的灵感源于谷歌,最初目的是解决传统数据库处理数据成本高和速度慢的问题. hadoop两个核心项目是HDFS(hadoop分布式文件系统)和MapReduce. HDFS用来实现数据的存储, ...
- 【VMware虚拟化解决方案】设计和配置VMware vCenter 5.5
在这之前,我们已经对VMware ESXi 5.5进行了整个环境的设计和规划,虽然安装VMware ESXi 5.5在CPU的选型.网络的设计.共享存储的方式.虚拟化资源的需求和安装ESXI的模式等一 ...