【MySQL】数据类型之数字相关
"
目录
MySQL常用数据类型概括:
1. 数字:
整型:tinyint int bigint
小数:
- float: 在位数比较短的情况下不精确
- double:在位数比较长的情况下不精确(如:0.000001230123123123 存成:0.000001230000)
- decimal:精确,内部原理是以字符串形式去存(如果是使用小数,则推荐使用此方法)
2. 字符串:
- char(0):简单粗暴,浪费空间,存取速度快(root 存成 root000000)
- varchar:精确,节省空间,存取速度慢
sql优化:创建表时,定长的类型往前放(比如性别),变长的往后放(比如地址或描述信息).
>255个字符,超了就把文件路径放到数据库中,比如图片,视频等找一个文件服务器,数据库中只存放路径或url.
3. 事件类型:
- datatime:最常用,获取当前日期事件
4. 枚举类型与集合类型
- enum 和 set:前者单选,后者多选
#. 数值类型
整数类型: TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:存储年龄、等级、ID、各种号码等
========================================
tinyint[(m)] [unsigned] [zerofill]
小整数,数据类型用于保存一些范围的整数数值范围:
有符号: -128 ~ 127
无符号: 0 ~ 255
PS:MySQL中无布尔值,使用tinyint(1)构造.
========================================
int[(m)] [unsigned] [zerofill]
整数,数据类型用于保存一些范围的整数数值范围:
有符号: -2147483648 ~ 2147483647
无符号:0 ~ 4294967295
========================================
bigint[(m)] [unsigned] [zerofill]
大整数,数据类型用于保存一些范围的整数数值范围:
有符号:-9223372036854775808 ~ 9223372036854775807
无符号:0 ~ 18446744073709551615
1. 数值范围验证
/. 有符号
默认是有符号的

/. 无符号
指定unsigned后,即为无符号

2. int类型显示长度验证
int类型后面可指定的数字是显示宽度,而不是存储宽度.

注意:为改类型指定宽度时,仅仅只是指定了查询结果的显示宽度,与存储范围无关,存储范围如下表:

完全没有必要为整数类型指定显示宽度,使用默认的就可以了.
默认的显示宽度,都是在最大值的基础上加1.
int的存储宽度是4个bytes,即32个bit,即2**32
无符号的最大值为:4294967296-1
有符号的最大值为:2147483648-1
有符号与无符号的最大数字需要的显示宽度均为0,而针对有符号的最小值则需要11为才能显示完全,所以int类型默认的显示宽度为11是非常合理的.
#. 浮点型
定点数类型:DEC等同于DECIMAL
浮点类型:FLOAT DOUBLE
作用:存储薪资、身高、体重、体质参数等
—————————————— FLOAT ——————————————
float[(M, D)] [unsigned] [zerofill]
# 参数解释:单精度浮点数(非准确小数值),M是全长,D是小数点后个数。M最大值为255,D最大值为30.
有符号:
-3.402823466E+38 to -1.175494351E-38
1.175494351E-38 to 3.402823466E+38
无符号:
1.175494351E-38 to 3.402823466E+38
精确度:随着小数的增多,精度变得不准确
—————————————— DOUBLE ——————————————
double[(M, D)] [unsigned] [zerofill]
# 参数解释:双精度浮点数(非精确小数值),M是全长,D是小数点后个数。M最大值为255,D最大值为30.
有符号:
-1.7976931348623157E+308 to -2.2250738585072014E-308
2.2250738585072014E-308 to 1.7976931348623157E+308
无符号:
2.2250738585072014E-308 to 1.7976931348623157E+308
精确度:随着小数的增多,精度比float要高,但也会变得不准确
—————————————— DECIMAL ——————————————
decimal[(M[,D])] [unsigned] [zerofill]
# 参数解释:准确的小数值,M是整数部分总个数(负号不算),D是小数点个数。M最大值为65,D最大值为30.
精确度:
随着小数的增多,精确度始终准确
对于精确数值计算时需要用此类型
decaimal能够存储精确值的原因在于其内部按照字符串存储
1. 验证
/. 建表

/. 精度

#. 日期类型
DATE TIME DATETIME TIMESTAMP YEAR
作用:存储用户注册时间,文章发布时间,员工入职时间,出生日期,过期时间等.
语法:
YEAR
YYYY (1901/2155) # 1901/2155是年份限制,18年测试是在这个范围,往后可能会增加
DATE
YYY-MM-DD (1000-01-01/9999-12-31)
TIME
HH:MM:SS ('-838:59:59'/'838:59:59')
DATETIME
YYY-MM-DD HH:MM:SS (1000-01-01 00:00:00/9999-12-31 23:59:59)
TIMESTAMP
YYYYMMDD HHMMSS (1970-01-01 00:00:00/2037 年某时)
1. 验证
/. year

/. date、time、datatime
now():MySQL只带函数,调用时会自动获取当前类型指定的时间.
接上图:

/. timetamp

可见,插入的记录默认为当前时间,指定为null时依然为当前时间.
/. datetime 与 timestamp 区别
在实际应用的很多场景中,MySQL的这两种日期类型都能够满足我们的需要,存储精度都为秒,但在某些情况下会展现出它们各自的优劣.
下面是这两种日期类型的区别:
- 前者的日期范围是1001-9999年;后者的日期范围是1970-2038年.
- 前者存储时间与时区无关;后者存储时间与时区有关,显示的值也依赖于时区,在MySQL服务器.
- 前者使用8字节的存储空间;后者的存储空间为4字节,因此,后者比前者的空间利用率更高.
- 前者的默认值为null;后者的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),即如果不做特殊处理,并且update语句中没有指定改列的更新值,则默认更新为当前时间.
/. 注意事项
- 单独插入时间时,需要以字符串的形式,按照对应的格式插入.
- 插入年份时,尽量使用4位值.
- 插入两位年份时:0<=value<=69 ,以20开头,比如50,结果2050;100>value>=70,以19开头,比如71,结果1971.

"
【MySQL】数据类型之数字相关的更多相关文章
- mysql 数据类型
1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) ...
- MySQL 数据类型 详解
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
- MySQL数据类型的验证
CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...
- MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题
MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...
- 浅谈MySQL数据类型
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...
- MySQL数据类型——数值类型
1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...
- 【转】MySQL数据类型和常用字段属性总结
来源:http://www.jb51.net/article/55853.htm 这里先总结数据类型.MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. ...
- Oracle、SQL Server、MySQL数据类型对比
1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...
- MySQL数据类型和常用字段属性总结
前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...
- MySql数据类型详解
可配合http://www.cnblogs.com/langtianya/archive/2013/03/10/2952442.html学习 MySql数据类型 1.整型(xxxint) MySQ ...
随机推荐
- php自带的密码哈希
常用的MD5.SHA1.SHA256哈希算法,是面向快速.高效进行哈希处理而设计的.随着技术进步和计算机硬件的提升,如今强大的计算机很容易破解这种算法.也就是说,不要用MD5.SHA1.SHA256这 ...
- 基于Linq表达式做的一个简单的表达式生成器
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; ...
- vs2015编译各种库
1.编译libcurl https://www.jianshu.com/p/f82d3d18da93
- C# LINQ GroupBy
一.先准备要使用的类: 1.Person类: class Person { public string Name { set; get; } public int Age { set; get; } ...
- 超大jtl解析jar包使用源于testfan
解决超大jtl解析过慢时间过长问题: usage: java -jar jmeter-graph.jar jtl_path interval_time (单位:s) 10G文件分析测 ...
- codeforces 1285D. Dr. Evil Underscores(字典树)
链接:https://codeforces.com/problemset/problem/1285/D 题意:给n个数a1,a2,a3.....an,找到一个数X,使得X 异或所有的ai ,得到的ma ...
- JavaScript 开胃菜
注释 单行注释:// 快捷键: CTRL + / 多行注释: /* 内容 */ 快捷键: ctrl + shift + / 变量 申明变量 var name; 赋值 name = 'peach'; 初 ...
- 解决无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
错误截图: 第一反应想到的是环境变量没有配置好,再仔细检查一下,并没有错误 在cmd窗口运行命令“ babel --version ”,如果出现对应的版本号,那就说明环境变量是正确的 解决方案: 用管 ...
- set,get,setter
JS对象属性中get/set与getter/setter是什么 2019-01-18 15:07:44 CHENKAI188 阅读数 686更多 分类专栏: JS修仙系列 版权声明:本文为博主原创 ...
- Go_sql注入
我们任何时候都不应该自己拼接SQL语句! sqlInjectDemo("xxx' or 1=1#") sqlInjectDemo("xxx' union select * ...