MySQL数据类型介绍(读书笔记)

MySQL的数据类型只要有以下三种:数值型、字符型、时间和日期类型,下面我们一一介绍。

一、数值型数据

数值型数据可以分为4类,整型类型、浮点数类型、定点数类型、位类型。

MySQL数据类型介绍(读书笔记)

       对于整型数据,类型数据后面的小括号的数字表示指定显示宽度,例如int(11)表示数值小于11位时前面会填满空格,同时11也是int默认的宽度。我们也可以利用关键字zerofill来指定用0填充。

MySQL数据类型介绍(读书笔记)

       整型类型数据都有一个可选属性unsigned(无符号),其下限是0,上限是有符号的两倍。如果一个列指定为zerofill,则MySQL自动为该列添加unsigned属性。整数类型还有一个属性:auto_increment,在需要产生唯一标识符或顺序值时,可利用此属性,这个属性只用于整数类型。

       对于小数,MySQL分为两种方式:浮点数和定点数。浮点数包括float和double,而定点数只有dec(decimal)一种表示。定点数在MySQL内部以字符串形式存放,比浮点数更精确。

      浮点数和定点数都可以在类型名后面加“(M,D)”的方式来进行表示,表示该值一共显示M位数字(整数位+小数位),其中D位位于小数点后面,M和D又称为精度和标度。

        对于浮点数,不写精度和标度,会按照实际精度值显示,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会标错;而对于定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作,并且如果数据超越了精度和标度,系统则会报警告!

MySQL数据类型介绍(读书笔记)

MySQL数据类型介绍(读书笔记)

       对于bit(位)类型,用于存放位字段值,bit(M)可以用来存放多位二进制,M的范围是1~64,如果不写则默认为1位。对于位字段,直接用select命令将不会看到结果,可以用bit(显示为二进制格式)或者hex(显示为十六进制格式)函数进行读取。

MySQL数据类型介绍(读书笔记)

二、时间日期类型

MySQL中的数据类型有以下五种,年月日的date,时分秒的time,年月日时分秒的datetime和timestamp,表示年的year。

MySQL数据类型介绍(读书笔记)

       在选择存储类型的时候,根据实际需要选择能够满足应用的最小存储的日期类型;如果要记录年月日时分秒,并且记录的年代比较久远,那最好使用datetime,因为timestamp表示的时间范围比datetime要短得多;如果记录的时间需要让不同时区的用户使用,那就使用timestamp,因为日期类型中只有它能够和实际时区相对应。

 

三、字符串类型

MySQL数据类型介绍(读书笔记)

(1)char和varchar类型

       两者都是用来保存MySQL中较短的字符串。Char列的长度固定为创建表时声明的长度,长度为0~255的任何值;而varchar列中的值是可变长字符串,长度为0~65535之间的值。在检索的时候,char列删除了尾部的空格,而varchar则保留这些空格。

MySQL数据类型介绍(读书笔记)

       由于char是固定长度,所以其处理速度比varchar块得多,但是缺点是浪费存储空间,程序需要对行尾空格进行处理,所以对于那些长度变化不大并且需要查询速度有较高要求的数据的可以考虑char类型。

(2)binary和varbinary类型

类似与char和varchar,不同的是它们包含二进制字符串而不包含非二进制字符串。

(3)ENUM类型

       枚举类型,它的值范围需要在创建表时通过枚举方式显示指定,对于1~255个成员需要1个字节存储,对于255~65535个成员,需要2个字节存储。最多允许65535个成员。

MySQL数据类型介绍(读书笔记)
 

(4)SET类型

SET与ENUM类似,里面可包含0~64个对象。最大的不同是SET类型一次可以选取多个成员,而ENUM则只能选一个。

MySQL数据类型介绍(读书笔记)

(5)TEXT与BLOB类型

       一般保存少量的字符串我们用char和varchar,但是保存大文本的时候,通常选择text和blob。二者的主要差别是blob能用来保存二进制数据,比如照片;而text只能保存字符数据。