一、整型
tinyint(迷你整型) | 迷你整型,系统采用一个字节来保存的整型,一个字节=8位,最大表示的值为0-255 |
smallint(小整型) | 小整型,系统采用两个字节来保存的整型,能表示0-65535之间 |
mediumint(中整型) | 中整型,系统采用三个字节来保存的整型。 |
int(整型,标准整型) | 整型,标准整型,采用4个字节来保存的整型。 |
bigint(大整型) | 大整型,采用8个字节来保存数据。 |
1、无符号设定
无符号:表示存储的数据在当前字段中,没有负数,只有正数。
基本语法:在类型之后增加一个 unsigned
2、显示长度
显示长度:指数据(整型)在数据显示的时候到底可以显示多少位
Tinyint(3) :表示最长可以显示3位,unsigned说明只是正数,0-255永远都不会超过3个长度
Tinyint(4): 表示最长可以显示4位 -127—128
显示长度只是代表了数据是否可以达到指定长度,但不会自动满足到指定长度,如果想要显示数据的时候,保持最高位(显示长度),那么还需要给字段增加一个zerofill属性才行。
Zerofill:
1、从左侧开始填充0,所以负数的时候就不能使用zerofill,一旦使用了zerofill,就相当于确定该字段为unsigned。
2、如果不足3位,那么填充到3位,如果本身已经够了或者超出,那么就不再填充。
3、显示长度可以自己设定,超出长度(但是没有超出范围)不会影响,只会对不够长度的进行补充。
二、小数类型
1、浮点型
浮点型又称为精度类型,是一种有可能丢失精度的数据类型,数据有可能不那么准确,尤其是超出范围的时候,不是大小范围,而是精度范围。
1、1 单精度浮点型——float
又称为单精度类型,系统提供了4个字节来存储数据(标准整形)但是能表示的数据范围要比整型大的很多,大概是10^38次方,只能保证 大概7个左右的精度,如果数据在7位以内,那么基本准确,但是超过了7位,那么就是不准确的了。
基本语法:
Float:表示不指定小数位的浮点数
Float(M,D):表示一共存储M个有效数字,其中小数部分占D位
Float(10,2):表示整数部分8位,小数部分有2位
浮点数的应用:通常是用来保存一些数量特别大,大到可以不用那么精确。
1、2 多精度浮点型——double
双精度:系统采用8个字节来存储数据,表示的范围更大,大概是10^308次方,但是精度也只有15位左右。基本语法与单精度浮点型类似
2、定点型——decimal
系统自动根据存储的数据来分配存储空间,每大概9个数就会分配4个字节来存储,同时小数部分和整数部分是分开存储的。
基本语法:
Decimal(M,D): M表示总长度,最大值不能超过65,d代表小数部分长度,最长不能超过30.
定点数的应用:如果涉及到钱的时候使用定点数。
三、时间日期类型
1、Date
日期类型:
1、系统使用三个字节来存储数据,对应的格式为:yyyy-MM-dd
2、能表示的范围从1000-01-01 到9999-12-31 初始值为0000-00-00
2、time
时间类型:
1、能表示某个指定的时间,系统同样提供3个字节来存储,对应的格式为HH:mm:ss.
2、mysql中的time类型能够表示的时间范围要大的多,能表示从-838:59:59—838:59:59。
3、在mysql中具体的用处是描述时间段。
4、在时间按格式之前加一个空格,然后指定一个数字(可以为负数)系统会自动将数字转换为该数字*24小时, 再加上后面的时间
3、datetime
时间日期类型:
1、就是将前面的date和time的结合,表示的是年月日时分秒,使用8个字节来存储数据,格式为:yyyy-MM-dd HH:mm:ss。
2、能表示的区间1000-01-01 00:00:00----9999-12-31 23:59:59。
3、可以为0值 0000-00-00 00:00:00
4、timestamp
时间戳类型:
1、mysql中的时间戳只是表示从格林威治时间开始,但是其格式仍然是yyyy-MM-dd HH:mm:ss
2、时间戳类型不能为空,有默认值为当前时间对应的时间戳;当数据被更新时,这个字段自动更新为当前最新的时间
5、year
年类型:
1、占用一个字节来保存,能表示1900-2155年,但是year有两种数据插入方式 0-99或者是四位数的具体年。
2、year的特殊性:
(1)可以采用2位数的数据插入也可以采用4位年份的插入,year进行2位数的数据插入时,有一个区间划分,临界点就是69和70。
(2)当输入69以下的数字,系统时间为20+
(3)当输入70以上,那么系统时间为19+
四、字符
1、char
1、 定长字符类型:
指定长度之后,系统一定会分配指定的空间用于存储数据
2、基本语法:
char(L) 代表字符数,中文与英文字母一样L长度方位是0-255
2、varchar
1、变长字符类型:
指定长度后,系统会根据实际的数据来计算长度,分配合适的长度,数据没有超出长度。
2、基本语法:
varchar(L) L代表长度,理论值为0-65535
3、因为varchar要记录数据长度,系统会根据数据长度自动分配存储空间,所以每个varchar数据产生后系统都会再数据后面增加1-2个字节的额外开销,用来保存数据所占空间长度,如果数据本身小于127个字符,额外开销1个,如果大于127个,额外开销2个。
char与varchar的区别比较
存储数据 | char(2) | varchar(2) | char所占字符 | varchar所占字符 |
A | A | A | 2*3=6 | 1*3+1=4 |
AA | AA | AA | 2*3=6 | 2*3+1=7 |
1、Char一定会使用指定的空间,varchar是根据数据的长度来指定空间
2、Char的数据查询效率比varchar高,varchar需要通过后面的记录数来计算。所以当确定某个字段一定会填写固定长度的数据的时候,推荐使用char,因为效率高;如果不确定,使用varchar。
3、如果数据长度超过255个字符了,不论是否固定长度,都会使用text,不会再使用char或者varchar
五、text
文本类型:
mysql中提供了两种文本类型
1、Text:存储普通的字符文本
2、Blob:存储二进制文本(图片、文件)
一般不会使用blob来存文件本身,通常使用url路径来指向对应的文件本身。
3、分类:mysql提供了4种test类型
tinytext | 系统使用一个字节来保存,实际能够存储的数据为2^8+1 |
text | 使用2个字节来保存,实际存储 2^16+2 |
mediumtext | 使用3个字节来保存,实际存储 2^24+3 |
longtext | 使用4个字节来保存,实际存储2^32+4 |
4、注意:
1、在选择对应的存储文件的时候,不用刻意的去选择text的类型,系统会自动根据存储的数据的长度来选择合适的文本类型
2、在选择字符存储的时候,如果超过255个字符,那么一定选择text存储,效率高。
六、enum
1、枚举类型:
在数据插入之前,先设定几个项,这几个项是可能最终出现的数据结果。
如果确定某个字段的数据只有那么几个值,例如男、女、保密,系统就可以在设定字段的时候规定当前字段只能存储固定的几个值。
2、基本语法:
enum (数据值1,数据值2……..)
3、系统提供了1-2个字节来存储枚举数据
通过计算enum列举的具体值来选择实际的存储空间,如果数据值列表在255以内,那么一个字节就够,超过255但是小于65535,系统采用2个字节保存。