第1节的目的:就是在看这篇博客之前迅速熟悉这些数据类型的关键字,以至于不会对这些数据类型感到很陌生,这样做的好处就是能够更容易的往后面读,以至于不会产生抵触。我这么细节还不给个三连~
char&varchar
和binary$varbinary
blob
和text
整型和浮点型
字符(char)
字节(byte)
int
型,那么这个字段就占4个字节,也就是4*8=32比特位,因此该字段的取值范围就是(-231~231);如果被unsign zerofill
修饰,那么取值范围就是(0~2^32)类型 | 范围(字节) | 说明 |
---|---|---|
char | 0~255 | 长度固定;超出指定范围进行截取,没有超出指定范围以空格进行填充 |
varchar | 0~65535 | varchar(20)修饰某个字段时,指的是只能存放20个字符;可以自定义长度且长度可变 |
blob | 0~65535(2^16-1) | “二进制对象”一般用来存储字节文件,比如图片、音乐等 |
tinyblob | 0~255(2^8-1) | |
mediumblob | 0~16772150(2^24-1) | |
longblob | 0~4294967295(2^32-1) | |
text | 0~65535(2^16-1) | 一般用来存储文本内容,无需指定大小 |
tinytext | 0~255(2^8-1) | |
mediumtext | 0~16772150(2^24-1) | |
longtext | 0~4294967295(2^32-1) |
数值类型
类型 | 范围 | 精度 | 大小 | 说明 |
---|---|---|---|---|
tinyint | -128~127 | 1个字节 | ||
smallint | -32768~32767 | 2个字节 | ||
mediumint | -8388608~8388607 | 3个字节 | ||
int | -231~231-1 | 4个字节 | unsigned:无符号数,一般常用来扩大范围 | |
bigint | -263~263-1 | 8个字节 | ||
float | 大约6~9位数字 | 4个字节 | ||
real | ||||
double | 大约15~17位数字 | 8个字节 | ||
decimal | 大约28~29位数字 | |||
numeric |
日期类型
类型 | 格式 | 说明 |
---|---|---|
time | HH:mm:ss | 时:分:秒 |
timestamp | 毫秒数 | 时间戳,从1970年0时0分0秒 |
date | YY:MM:dd | 年:月:日 |
datetime | YY:MM:dd HH:mm:ss | 年:月:日:时:分:秒(最常用时间格式) |
year | YY | 只返回年份 |
布尔类型
类型 | 范围 | 说明 |
---|---|---|
boolean | 取值:true、false | |
bool | 取值:1、0 | |
二进制数据类型
类型 | 范围(字节) | 说明 |
---|---|---|
binary | 0~8000 | 二进制数据类型;它们二者之间的区别和char和varchar类似; |
varbinary | 0~8000 | 定义时需要指定长度 |
bit | 位 | |
特殊类型
类型 | 范围 | 说明 |
---|---|---|
enum | ||
set | ||
json |
char和varchar之间的区别
blob和text的区别
int(10)、char(10)、varchar(10)
中的数字10是什么意思?
int(10)
:这里的数字10并不是表示修饰字段的范围大小,而仅仅表示显示的数值的宽度(也可以说是数值位数)char(10)和varchar(10)
:这里的数字10表示可存储的字符的多少(mysql5.0以上,char(10)和varchar(10)
中的10都表示10个字符,也就是说无论存储字母数字还是汉字都能存储10个)
int(10)和int(10)
的区别