MySQL中常见数据类型内容梳理
Posted 不想掉头发$
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中常见数据类型内容梳理相关的知识,希望对你有一定的参考价值。
目录
前言
mysql与Java一样,也有数据类型。MySQL中数据类型主要应用在列上。
常用类型分类
1.数值型
整型
m代表限定的显示宽度
tinyint(m)
1个字节 范围(-128~127) 无符号[0,255]
smallint(m)
2个字节 范围(-32768~32767) 无符号[0,65535]
mediumint(m)
3个字节 范围(-8388608~8388607) 无符号[0,2^24-1]
int(m)
4个字节 范围(-2147483648~2147483647) 无符号[0,2^32-1]
bigint(m)
8个字节 范围(+-9.22*10的18次方) 无符号[0,2^64-1]
浮点型
float(m,d)
单精度浮点型 8位精度(4字节) m总个数,d小数位必有位数
double(m,d)
双精度浮点型 16位精度(8字节) m总个数,d小数位必有位数
定点型
定义:
定点数(英语:fixed-point number)
是一种实数数据类型,要求小数点后位数固定,
有时也要求小数点前位数固定。定点数与更复杂的浮点数相对。
decimal(m,d)
正常情况,与float、double 用法类似
特点:
1.默认限定为(10,0)
2.当DECIMAL(M,D)列存储的数值小于该列能表示的范围,则存储为DECIMAL(M,D)能表示的最小值。
3.当DECIMAL(M,D)列存储的数值大于该列能表示的范围,则存储为DECIMAL(M,D)能表示的最大值;
4.当DECIMAL(M,D)列存储的数值的小数位数超过D,则自动四舍五入到D位。但会报警提示warning
2.字符型
较短
char(n)
固定长度
n可省略,默认位1
char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。
所以char类型存储的字符串末尾不能有空格。
varchar(n)
可变类型
注意! : n 不可省略
varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),
所以varchar(4),存入3个字符将占用4个字节,char类型的字符串检索速度要比varchar类型的快。
较长
text
text是实际字符数+2个字节,text类型不能有默认值。
blob
用于保存较长的二进制数据
char VS varchar
适合场景:
固定长度 char
可变长度 varchar
varchar VS text
varchar可直接创建索引,text创建索引要指定前多少个字符。
varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。
补充:
binary,varbinary 类似于二进制的 char和varchar 保存较短的二进制
Enum类型(枚举)
要求插入值必须输入给定列表中
如果成员位 1~255 则需1字节存储
如过列表成员为255~65535 则需2字节存储
注意:忽略大小写
Set类型
可保存0~64个成员
set类型一次可以取很多个成员,Enum只能选一个
成员个数不同,存储字节也不同
1~8 - - 1
9~16 - - 2
17~26 - - 3
25~32 - - 4
33~64 - - 8
注意:忽略大小写
3.日期和时间类型
date
Date格式:
以YYYY-MM-DD的格式显示,比如:2009-07-19
长度:4字节
time
Time格式:
以HH:MM:SS的格式显示。比如:11:22:30
长度:3字节
datetime
Date Time格式:
以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30
长度:8字节
注意! : 只能反应插入时的当地时间
timestamp
TimeStamp格式:以YYYY-MM-DD的格式显示,比如:2009-07-19
长度:3字节
特点:
1.和实际时区有关,更能反应实际的日期
2.受MySQL版本和SQLMode影响很大
3.若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
datetimeVStimestamp
字节长度:
datetime - - - 8字节
timestamp - - - 4字节
范围:
datetime - - - 1000-9999
timestamp - - - 1970-2038
时区等影响:
datetime - - - no
timestamp - - - yes
以上是关于MySQL中常见数据类型内容梳理的主要内容,如果未能解决你的问题,请参考以下文章