云优惠
 云服务器优惠大全

首页    数据库    MySQL数据类型介绍

MySQL数据类型介绍

创建时间:2019-01-11 19:46
浏览量:0
收藏

一、数据类型

    MySQL支持多种数据类型,主要有数值类型、日期/时间类型和字符串类型。

 

    数值数据类型

    整数类型:  TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

    浮点数类型:FLOAT、DOUBLE

    定点小数:  DECIMAL


    日期/时间类型

    YEAR、TIME、DATE、DATETIME、TIMESTAMP


    字符串类型,其中字符串又可以分为文本字符串和二进制字符串

    文本字符串:CHAR、VARCHAR、TEXT、ENUM、SET等   

    二进制字符串:BIT、BINARY、VARBINARY、BLOB


1、整数类型

    数值型数据类型主要用来存储数字,MySQL提供了多种数值数据类型,不同的数据类型提供不同的取值范围,可以存储的值的范围越大,其所需要的存储空间也会越大。整数类型的属性字段可以添加AUTO_INCREMENT自增约束条件。


 MySQL中整型数据类型


    从表中可以看出,不同类型整数存储所需要的字节数是不一样的,占用字节数越多的的类型所能表示的数值范围越大。根据占用字节数可以求出每一种数据类型的取值范围,如:TINYINT需要1个字节(8bits)来存储,那么TINYINT无符号数的最大值为2的8次方减1,也就是255,TINYINT有符号数的最大值为2的7次方减1,也就是127。其他类型的整数取值范围计算方法相同。

 不同整数类型的取值范围


    创建表的语句:

创建表的语句


    这个例子中TINYINT(4)、INT(11) 括号中的数字表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。这里要注意:显示宽度和数据类型的取值范围是无关的,显示宽度只是指明MySQL最大可能显示的数字个数,注意是可能。通俗点讲就是,比如INT字段,显示宽度为4,但是如果你插入的数据大于4,达到了8,6666 6666,那也没关系,只要插入的数值的位数不超过该类型整数的取值范围,就行,如果插入的数值长度是2,或者3,数值的位数小于指定的宽度,后面的位数就会由空格填空,5555插入INT字段,存的就是"555  "后面用空格补齐。还有一点,这个显示宽度没限制,你写100度没问题,但是插入数据时,实际起控制作用的还是数据类型的取值范围。如果不写显示宽度,就会用系统默认的,比如,INT的默认显示宽度是11,看上面表,最高也就能表示10位大小的数值,但是要注意,有符号的,也就是负数时,符号位也占一位。


2、浮点数类型和定点数类型

    MySQL中使用浮点数和定点数来表示小数。浮点类型有两种:单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)。定点类型只有一种:DECIMAL。浮点类型和顶点类型都可以用(M,N)来表示,其中M成为精度,表示总共的位数;N称为标度,是表示小数的位数。

MySQL中的小数类型


1、M,N表达的含义

    M:数值的总位数。 通俗点讲,就是看有多少个数字,比如,5.6789,M就是5

    D:小数点后面能保留几位。 比如上面的5.6789 ,D就是4。 这只是举一个例子,来说明M,D是什么,实际是先有M,D的,然后在来控制数值,而不是更具数值来确定M,D。

    不单单就MECIMAL有M,D这两个参数,FLOAT 和 DOUBLE 也有,比如:

不单单就MECIMAL有M,D这两个参数

    

    分析:a1的M为3,D为1,那么小数点上必须是占了一位数字,就算没有值,也会用0来填充,所以说,整数位上最多就只能是2位,这里要切记要先根据D的值,来算整数位能最多有多少位。通过分析a1,a2和a3也就简单了,a2字段上的值,整数部分最多是2位,小数点后的位   数最多是3位,也就是说小数点后超过了3位,就会四舍五入。a3字段上的值,整数部分最多只能是一位,小数点后的位数最多是2位,如果不足2位,也会用0补充。比如插入1.5,在数据库中存的就是1.50, 比如插入10.23,这个就会报错,因为整数部分只能是一位,小数点后的位数已经占了2位了。


2、FLOAT、DOUBLE、DECIMAL三者的区别。

    都是用来表示我们所说的小数的也就是浮点数,但是三种的精度不一样,也就是后面显示的位数不一样,

    ①区别一:

    FLOAT显示后面的小数点位大概在40多位;

    DOUBLE能显示的就是300多位了,不是一个层次上的;

    DECIMAL这个小数点后面能显示的位数跟DOUBLE差不多。

    ②区别二:

    FLOAT和DOUBLE在不指定精度时,也就是不用(M,D),默认会按照实际的精度,也就是你写多少就是多少,而DECIMAL如不指定 精度默认为(10,0),也就是如果不指定精度,插入数值56.89,在数据库中存储的就是57。所以一般使用DECIMAL时就会指定精度,而 使用FLOAT和DOUBLE就不用。

    ③区别三:

    浮点数相对与定点数(DECIMAL)的优点就是在长度一定的情况下,浮点数能够表示更大的数据范围,但是缺点是会引起精度问题。


3、什么时候使用FLOAT、DOUBLE、DECIMAL

             对精度要求比较高的时候,比如货币、科学数据等,使用DECIMAL的类型比较好。其他的时候,看你要存放的数据的大小而定了,一般使用DOUBLE。并且在使用浮点数时需要注意,尽量避免做浮点数的比较,比如加、减,谁大谁小,这样的操作,会引起精度缺失。

            

4、日期与时间类型

    MySQL中也有许多表示日期的数据类型,主要有:DATATIME、DATE、TIMESTAMP、TIME、和YEAR。

     MySQL中也有许多表示日期


5、文本字符串类型

    字符串类型用来存储字符串数据,除了可以存储字符串数据之外,还可以存储其他数据,比如图片和声音的二进制数据。MySQL支持两类字符型数据:文本字符串和二进制字符串。


    文本字符串数据类型

文本字符串数据类型


二进制字符串类型


二、如何选择数据类型   

          

1、整数和浮点数

    如果不需要小数部分,则使用整数来保存数据,并且根据整数的大小,来选择合适的整数类型,如果需要小数部分,则使用浮点数类型,浮点数类型中,有float和double,如果需要精度高一点,则选择double。根据自己的需求来决定选什么。


2、浮点数和定点数

    浮点数FLOAT、DOUBLE相对应定点数DECIMAL的优势在于:在长度一定的情况下,浮点数能表示更大的数据范围,但是浮点数容易产生误差,因此在精度比较高时,建议使用DECIMAL,比如货币这一类东西,就用DECIMAL比较合理,注意浮点数在进行加减运算时也容易出现问题。如果进行数值比较,也建议用DECIMAL


3、日期与时间类型

    可以看上面详解时的图,根据各种格式,选择自己所需要的数据类型,注意TIMESTAMP和DATETIME的区别,一个是跟时区有关,一个无关,其他没什么大的区别。


4、CHAR与VARCHAR之间的特点与选择

    区别:

    CHAR是固定长度字符、VARCHAR是可变长度字符。CHAR会自动删除插入数据的尾部空格,VARCHAR不会。 

    CHAR是固定长度,处理速度比VARCHAR更快,缺点很明显,浪费存储空间,所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之用VARCHAR。


5、ENUM和SET

    ENUM只能取单值,也就是从枚举类型中选取其中一个值,但是SET可以取多值,ENUM最多能存放65535个成员,SET只能65个空字符串也能在SET中存储,要存储一个人的喜爱时,最好使用SET类型,其实最重要的是看具体的情况在选取最为合适的把


6、BLOB和TEXT

    BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息,BLOB主要存储图片、音频信息,而TEXT只能存储纯文本文件。分清楚两者的用途


7、BINARY和VARBINARY

    这两个的区别和CHAR与VARCHAR的区别差不多,BINARY是固定长度、VARBINARY是可变程度,这两个的作用就是为了区分大小写的,注意这两个是字节字符串。


免费领取阿里云1888元代金券大礼包

 

阿里云新老用户均可领取!
自领取后:限时7天使用!

阿里云服务器2折优惠:低至293元/年

 

 

突发性能实例t5 1核1G:293元/年

突发性能实例t5 1核2G:459元/年

突发性能实例t5 2核4G:798元/年

共享型xn4实例1核1G内存:394元/年

共享型n4实例1核2G内存:653元/年

计算网络增强型实例2核4G内存:1566元/年

计算网络增强型实例4核8G内存:2991元/年

点此查看2折活动详情

阿里云高性能云服务器

 

 

网络增强型云服务器:2核4G ¥720元/年

高频应用云服务器:8核16G ¥4109元/年

本地SSD型云服务器:4核16G ¥6218.40元/年

大数据型云服务器:8核32G ¥11375.00元/年

GPU异构云服务器:16核40G ¥15563.00元/年

新用户满立减:每满1000立减50

 

1、到阿里云官网选购产品
2、加入到购物车
3、结算时立享满减

注意:新用户首次购买时必须先加到购物车,然后一起结算才享受此优惠。

腾讯云CVM云服务器22.07元起

 

 

腾讯云1核1G:22.07元/月、794.73元/3年

腾讯云2核2G:36.48元/月、1313.35元/3年

腾讯云2核4G:43.01元/月、1548.5元/3年

腾讯云4核8G:178.5元/月、6426元/3年