MySql常用数据类型分析
整数类型
TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
- 分别使用8,16,24,32,64位存储空间,值得范围-2的(N-1)方到2的(N-1)方-1。根据需要存储的范围大小,选择最小的数据类型。根据实际情况,选择使用UNSIGNED属性。
- 数据类型只决定怎么保存数据,计算一般使用BIGINT整数。
- 整数可以指定宽度,例如INT(11)。一般是没有意义的,不会限制值得合法范围,只是规定交互工具的显示位数。对于存储和计算,INT(1)和INT(20)是一样的。
实数类型
FLOAT、DOUBLE、DECIMAL
- 因为CPU不支持对DECIMAL计算,CPU支持原生浮点计算,所以浮点计算更快。
- 浮点和DECIMAL都可以指定精度,但是对浮点的精度,MySql一般选择不同的数据类型或者存储时对值进行取舍,都是非标准的,所以建议只指定数据类型,不指定精度。
- 浮点的使用空间比DECIMAL小,FLOAT使用4个字节,DOUBLE使用8个字节,有更高的精度和范围,所以MySql内部使用DOUBLE计算浮点。
- 一般情况下实数类型选择浮点类型,如果需要对小数精确计算使用DECIMAL。如果数据量比较大,可以使用BIGINT代替DECIMAL,程序控制小数点位数。
字符串类型
varchar、char、blob、text
- varchar类型用于存储可变长的字符串,比定长类型更节省空间。(有例外的情况,如果使用ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储,但是varchar需要使用1或2个额外的字节记录字符串的长度。)
- 使用varchar的情况:字符串的最大长度比平均长度大很多;列的更新很少,所以不会有碎片;
- char类型是定长的,适合存储很短的字符串,或者所有值接近同一个长度,例如MD5值。
- 一般情况下都可以选择varchar类型,但是注意只分配真正需要的空间。
日期和时间类型
DATETIME、TIMESTAMP
- DATETIME能保存从1001年到9999年,精度为妙,与时区无关。而TIMESTAMP只能保存1970年到2038年,显示的值依赖于时区。
- TIMESTAMP拥有DATETIME没有的属性,如果在插入时没有指定第一个TIMESTAMP值,MySql则设置这个列的值为当前时间。在更新一个记录时,MySql会默认更新第一个TIMESTAMP值(除非在UPDATE时指定了值)。TIMESTAMP默认为NOT NULL。
- 除了特殊情况下,尽量使用TIMESTAMP,因为它比DATETIME的效率更高。
MySql常用数据类型分析的更多相关文章
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
- Mysql常用数据类型
Mysql常用数据类型 数字: 字符串: 时间:
- Mysql常用数据类型归纳总结1
一直在用Mysql数据库,Mysql的数据类型也最常打交道的.但关于Mysql的一些常用数据类型了解程度仅限于一知半解,仅仅能满足满足于平时一些最简单的操作.而Mysql常用数据类型的定义以及规范理解 ...
- Mysql常用数据类型详细说明及实例说明(学习笔记一)
1.Mysql 在windows下 Net start mysql[启动] Net stop mysql[停止] Quit[退出mysql命令行] \c[取消输入的命令] Select version ...
- Mysql 常用数据类型 占用字节数 [转]
数据类型是定义列中可以存储什么数据以及该数据实际怎么存储的基本规则.Mysql的常用数据类型主要有: 串数据类型:最常用的数据类型,有两种基本的串类型:分别为定长串和不定长串.定长串结束长度固定的字符 ...
- MySQL常用数据类型 length 专题
MySQL-data_type数据类型 1.查看数据类型 mysql> help data type //通过help对数据进行查看,以及使用的方法 2.MySQL常见的数据类型 整数in ...
- MySQL常用数据类型小结
在 MySQL 中,有三种主要的类型:字符串.数字和日期/时间类型. 目录 [隐藏] 1 字符串类型 2 数值类型 3 日期和时间类型 4 使用建议 5 艺搜参考 字符串类型 CHAR 0-255字 ...
- MySQL常用数据类型及细节
目录 1 整数类型 1.1 可选属性 1.1.1 M 1.1.2 UNSIGNED 1.1.3 ZEROFILL 2 浮点类型 2.1 精度误差 3 定点数类型 3.1 数据精度说明 3.2 类型介绍 ...
- mysql常用数据类型的选择
时间戳可以用int来存储 ip地址的存储数据类型,可以使用INET_ATON 和INET_NTOA来配合bigint类型来代替varchar
随机推荐
- 【AR实验室】ARToolKit之制作自己的Marker/NFT
0x00 - 前言 看过example后,就会想自己动动手,这里改改那里修修.我们先试着添加自己喜欢的marker/nft进行识别. 比如我做了一个法拉利的marker: 还有网上找了一个法拉利log ...
- Java 线程
线程:线程是进程的组成部分,一个进程可以拥有多个线程,而一个线程必须拥有一个父进程.线程可以拥有自己的堆栈,自己的程序计数器和自己的局部变量,但不能拥有系统资源.它与父进程的其他线程共享该进程的所有资 ...
- 微软.NET Core RC2正式发布,横跨所有平台
.NET官方博客宣布了<Announcing .NET Core RC2 and .NET Core SDK Preview 1>,正式如期发布了.NET Core RC2, 现在可以放心 ...
- PHP之GD函数的使用
本文讲解常用GD函数的应用 1.一个简单的图像 我们先看一个例子: <?php $w = 200; $h = 200; $img = imagecreatetruecolor($w,$h); $ ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- golang struct扩展函数参数命名警告
今天在使用VSCode编写golang代码时,定义一个struct,扩展几个方法,如下: package storage import ( "fmt" "github.c ...
- “RazorEngine.Templating.TemplateParsingException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理 其他信息: Expected model identifier.
这个问题是由于在cshtml中 引用了model这个单词 它可能和Model在解析时有冲突. 解决方法:把model换成别的单词就可以了.
- 高仿it之家新闻客户端源码
仿it之家新闻客户端界面,数据为本地假数据.仅实现了新闻模块的功能. 源码下载:http://code.662p.com/list/11_1.html 详细说明:http://android.662p ...
- NodeJS使用mysql
1.环境准备 手动添加数据库依赖: 在package.json的dependencies中新增, "mysql" : "latest", { "nam ...
- kvm 使用入门详解
kvm 是虚拟化技术的一个典型实现,功能非常强大,使用很方便.kvm 本身主要实现对 CPU 的虚拟化,内存和IO的虚拟化使用了开源软件 qemu,qemu 是纯软件层面的虚拟化,其实就是个模拟器.k ...