标签:枚举类 可见 注册时间 lint current byte mys png edit
"
目录
MySQL常用数据类型概括:
1. 数字:
整型:tinyint int bigint
小数:
2. 字符串:
sql优化:创建表时,定长的类型往前放(比如性别),变长的往后放(比如地址或描述信息).
>255个字符,超了就把文件路径放到数据库中,比如图片,视频等找一个文件服务器,数据库中只存放路径或url.
3. 事件类型:
4. 枚举类型与集合类型
整数类型: 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
默认是有符号的
![在这里插入图片描述](/media/ai/2019-03/a9b689f5-1862-452d-a39a-8c93dc0838a1.png)
指定unsigned后,即为无符号
![在这里插入图片描述](/media/ai/2019-03/4f299fdd-e300-42f3-8106-1b767fe67b2e.png)
int类型后面可指定的数字是显示宽度,而不是存储宽度.
![在这里插入图片描述](/media/ai/2019-03/5a128ad1-1209-4ad1-8f0c-b86dc73a3c06.png)
注意:为改类型指定宽度时,仅仅只是指定了查询结果的显示宽度,与存储范围无关,存储范围如下表:
![在这里插入图片描述](/media/ai/2019-03/9adee1c9-f145-4555-869b-41e7b9f6e503.png)
完全没有必要为整数类型指定显示宽度,使用默认的就可以了.
默认的显示宽度,都是在最大值的基础上加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能够存储精确值的原因在于其内部按照字符串存储
![在这里插入图片描述](/media/ai/2019-03/e970eef8-ee11-4afd-b225-6834ef50fc9b.png)
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 年某时)
![在这里插入图片描述](/media/ai/2019-03/73282bc0-2c3a-4e68-b1ae-0a6ff37c9ced.png)
now():MySQL只带函数,调用时会自动获取当前类型指定的时间.
接上图:
![在这里插入图片描述](/media/ai/2019-03/f3c83ddf-613d-4e50-b42d-98ed5e42922f.png)
![在这里插入图片描述](/media/ai/2019-03/3b4006af-5dbc-496d-b310-cd9e372c0f35.png)
可见,插入的记录默认为当前时间,指定为null时依然为当前时间.
在实际应用的很多场景中,MySQL的这两种日期类型都能够满足我们的需要,存储精度都为秒,但在某些情况下会展现出它们各自的优劣.
下面是这两种日期类型的区别:
"
标签:枚举类 可见 注册时间 lint current byte mys png edit
原文地址:https://www.cnblogs.com/zyk01/p/11375902.html