前言:数据类型就是为了对就是进行控制。
1.数据类型整型

1Bytes = 8BITS=11111111=255
选择数据类型的关键点: 1、 合适的。 2、简短的。 3、 完整的。
1字节=8个二进制数=11111111=255这是最大二进制不包括0的情况下,1字节最大长度是3位数也就是 255
注意,在生产环境中最好选择,合适的数据类型,占用字节少的,数据长度刚好够的节约资源。
2.数字类型-浮点型与定点数
FLoat
Float:表示不指定小数位的浮点数
Float(M,D):表示一共存储M个有效数字,其中小数部分占D位
Float(10,2):整数部分为8位,小数部分为2位
Double
Double又称之为双精度:系统用8个字节来存储数据,表示的范围更大,10^308次方,但是精度也只有15位
左右。
Decimal:
Decimal系统自动根据存储的数据来分配存储空间,每大概9个数就会分配四个字节来进行存储,同时小数和
整数部分是分开的。
定点数:能够保证数据精确的小数(小数部分可能不精确,超出长度会四舍五入),整数部分一定精确
Decimal(M,D):M表示总长度,最大值不能超过65,D代表小数部分长度,最长不能超过30。
3.字符串类型
3.1Char(64)
定长字符:指定长度之后,系统一定会分配指定的空间用于存储数据
基本语法:char(L),L代表字符数(中文与英文字母一样),L长度为0到255
3.2Varchar(64)
变长字符:指定长度之后,系统会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度)
基本语法:Varchar(L),L代表字符数,L的长度理论值位0到65535
因为varchar要记录数据长度(系统根据数据长度自动分配空间),所以每个varchar数据产生后,系统都会
在数据后面增加1-2个字节的额外开销:是用来保存数据所占用的空间长度
如果数据本身小于255个字符:额外开销一个字节;如果大于255个,就开销两个字节
3.3Char和varchar的区别
1、 char一定会使用指定的空间,varchar是根据数据来定空间
2、 char的插入数据效率理论上比varchar高:varchar是需要通过后面的记录数来计算
使用哪一种类型?
如果确定数据一定是占指定长度,那么使用char类型;
如果不确定数据到底有多少,那么使用varchar类型;
如果数据长度超过255个字符,不论是否固定长度,都会使用text,不再使用char和varchar
varchar(250) utf8 751字节 不超过 765字节 行格式: compact , dymanic
varchar(190) utf8mb4 761字节 不超过 765字节
3.4Enum
枚举类型:在数据插入之前,先设定几个项,这几个项就是可能最终出现的数据结果。
如果确定某个字段的数据只有那么几个值:如性别,男、女、保密,系统就可以在设定字段的时候规定当前字
段只能存放固定的几个值:使用枚举
基本语法:enum(数据值1,数据值2…)
系统提供了1到2个字节来存储枚举数据:通过计算enum列举的具体值来选择实际的存储空间:如果数据值列
表在255个以内,那么一个字节就够,如果超过255但是小于65535,那么系统采用两个字节保存,Enum:单选框(只能插入一个)。
3.5Text longtext
文本类型:本质上mysql提供了两种文本类型
Text:存储普通的字符文本
Blob:存储二进制文本(图片,文件),一般都不会使用blob来存储文件本身,通常是使用一个链接来指向
对应的文件本身。
Text:系统中提供的四种text
Tinytext:系统使用一个字节来保存,实际能够存储的数据为:2 ^ 8 + 1
Text:使用两个字节保存,实际存储为:2 ^ 16 + 2
Mediumtext:使用三个字节保存,实际存储为:2 ^ 24 + 3
Longtext:使用四个字节保存,实际存储为:2 ^ 32 + 4
注意:
1、 在选择对应的存储文本的时候,不用刻意去选择text类型,系统会自动根据存储的数据长度来选择合适
的文本类型。
2、 在选择字符存储的时候,如果数据超过255个字符,那么一定选择text存储
3.6Set
集合:是一种将多个数据选项可以同时保存的数据类型,本质是将指定的项按照对应的二进制位来进行控制:
1表示该选项被选中,0表示该选项没有被选中。
基本语法:set(‘值1’,’值2’,’值3’…)
系统为set提供了多个字节进行保存,但是系统会自动计算来选择具体的存储单元
1个字节:set只能有8个选项
2个字节:set只能有16个选项
3个字节:set只能表示24个选项
8个字节:set可以表示64个选项
Set和enum一样,最终存储到数据字段中的依然是数字而不是真实的字符串
数据在存储的时候,如果被选中,那么对应的位的值就为1,否则为0
系统在进行存储的时候会自动将得到的最终的二进制颠倒过来,然后再进行转换成十进制存储
Set集合的意义: 1、 规范数据 2、 节省存储空间
Set:复选框(可以插入多个)
3.7时间类型
时间类型下面两个是常用的,上面三个在上产几乎使用不到
