一. 整型
Tinyint
迷你整型,系统采用一个字节来保存的整型,一个字节=8位,最大的表示值是0-255
Smallint
小整型,系统采用两个字节来保存的整型,能表示0-65535之间
Mediumint
中整型,系统采用3个字节来保存的整型
Int
标准整型,系统采用4个字节来保存数据
Bigint
大整型,系统采用8个字节来保存数据。
无符号设定
无符号,表示存储的数据在当前字段中,没有负数(只有正数)
基本语法:在类型之后加上一个 unsigned
显示长度
显示长度:指数据(整型)在数据显示的时候到底可以显示多少位
Tinyint(3):
表示最长可以显示3位,unsigned 说明只是正数,0-255永远都不会超过3个长度
Tinyint(4):
表示最长可以显示-127 – 128
显示长度只是代表了数据是否可以达到指定长度,但是不会自动满足到指定长度,如果想要显示数据的时候,保持最高位(显示长度),那么还需要给字段增加一个zerofill属性才行。
Zerofill:
从左侧开始填充0,(左侧不会改变数值大小)所以负数的时候就不能使用zerofill,一旦使用了zerofill就相当于确定该字段为unsigned
如果不足3位,那么填充到3位,如果本身已经够了或者超出,那么就不会再填充。
显示长度可以自己设定,超出长度(不超出范围)不会影响,只会对不够长度的进行补充(显示长度)
二.小数类型
专门用来存储小数的在mysql中,将小数又分为两类,浮点型和定点型
浮点型
浮点型又称之为精度类型,是一种由可能丢失精度的数据类型,数据有可能不那么准确(尤其是在超出范围的时候)不是大小范围而是精度范围
浮点型之所以能够存储较大的数值(不精确),利用存储数据的位来存的指数。
整型,所有位都位1
1 1 1 1 1 1 1 1浮点型,有部分用于存数据,有部分用于存指数
1 1 1 1 1 1 1 1
前三位转换成十进制之后用作10的指数 10^7
Float
又称为单精度类型,系统提供4个字节来存储数据(标准整型)但是能表示的数据范围要比整型大很多,大概是10^38次方,只能保证大概7个左右的精度(如果数据在7位以内,那么基本准确,但是超过了7位,那么就是不准确的)
基本语法:
Float:表示不指定小数位的浮点数
Float(M,D):表示一共存储M个有效数字,其中小数部分站D位
Float(10,2):表示整数部分为8位,小数部分为2位
浮点数的应用:通常是用来保存一些数据量特别大,大到可以不用那么精确
例如:宇宙中星体数量,人体细胞含量
三. 定点型
Decimal定点数:系统自动根据存储的数据来分配存储空间,每大概9个数就会分配4个字节来进行存储,同时小数部分和整数部分是分开的。
基本语法:
Decimal(M,D):M表示总长度,最大值不能超过65,D代表小数部分长度,最大值不能超过30.
定点数应用:如果涉及到钱的时候使用定点数。
四.时间日期类型
Date
日期类型:系统使用3个字节来存储数据,对应的格式位:yyyy-mm-dd 能表示的范围是从 1000-01-01 到9999-12-12 初始值为0000-00-00
Time
时间类型:能够表示某个指定的时间,但是系统同样是提供3个字节来存储,对应的格式为:HH:ii:ss,但是在mysql中的time类型能够表示时间范围要大的多,能表示从-838:59:59—838:59:59 ,在mysql中具体的用处是描述时间段。
Datetime
日期时间类型,就是将前面的date和time的结合,表示的时间用8个字节来存储数据。格式为:yyyy-mm-dd hh:ii:ss 能表示的区间为1000-01-01 ---- 9999-12-12 23:59:59
可以为0值:0000-00-00 00:00:00
Timestamp
时间戳类型:mysql中的时间戳只是表示从格林威治时间开始,但是其格式依然是yyyy-mm-dd hh:ii:ss
Year
年类型:占用一个字节来保存,能表示1900-2155年,但是mysql中year有两种插入方式0-99和四位数具体的年。
五.字符串
Char
定长字符类型:指定长度之后,系统一定会分配指定的空间用于存储数据
基本语法:char(L) 代表字符数(中文与英文字母一样)L的长度范围是0-255
Varchar
变长字符类型:指定长度后,系统会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度)
基本语法:varchar(L)L代表长度,L长度的理论值0-65535
因为varchar要记录数据长度(系统根据数据长度自动分配空间),所以每个varchar数据产生后系统都会再根据数据后面增加1-2
个字节的额外开销,用来保存数据所占空间长度,如果数据本身小于127个字符额外开销1个字节,如果大于127个,开销2个字节。
Char和varchar存储数据对比:(UTF8,一个字符都会只能用3个字节)
存储数据 Char(2) Varchar(2) Char所占字节 Varchar占字节
A A A 2*3=6 1*3+1=4
AB AB AB 2*3=6 2*3+1=7
Char和varchar的区别:
Char一定会使用指定的空间,varchar是根据数据来指定空间
Char的数据查询效率比varchar高,varchar是需要通过后面的记录数来计算
如果确定数据一定是占用指定的长度,要使用char,如果不确定 要使用varchar
如果数据长度超过了255个字符了,不论是否固定长度,都会使用Text,不会再使用char或者是varchar。
Text
文本类型:mysql中提供了两种文本类型
Text:存储普通的字符文本
Blob:存储二进制文本(图片、文件),一般不会使用blob来存储文件本身,通常是存放url路径来只想对应文件的本身。
Text系统中提供了4中text
Tinytext:系统使用一个字节来保存,实际能够存储的数据位2^8+1
Text:使用了2个字节来保存数据,实际存储位:2^16+2
Mediumtext:使用3个字节来保存数据,实际存储2^24+3
Longtext:使用4个字节来保存数据,实际存储位2^32+4
注意:在选择对应的存储文件的时候,不用刻意去选择text类型,系统会自动根据存储的数据长度来选择合适的文本类型。
在选择字符存储的时候,如果超过255个字符,一定选择text存储(效率高)
Enum
枚举类型:在数据插入之前,先设定几个项,这几个项就是可能最终出现的数据结果。
如果确定某个字段的数据只有那么几个值:例如:男、女、保密,系统就可以在设定字段的时候规定当前字段只能存放固定的几个值。
基本语法:enum (数据值1,数据值2.。。。。)
系统使用了1-2个字节来存储枚举数据,通过计算enum列举的具体值来选择实际的存储空间,如果数据值列表在255以内,那么一个字节就够,如果超过255但是小于62235那么系统采用2个字节来保存。