暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【松勤软件测试基础】MySQL中的数据类型

松勤软件学院 2018-05-15
197



诚信丨进取丨合作丨创新

招进松勤,送去企业 你若有梦,松勤有心


自动化测试班

5月16日开课

关注撩小编,咨询课程~


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

一、数值类型

数值类型包括:

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

浮点数类型有FLOAT和DOUBLE

定点小数类型DECIMAL

日期/时间类型:包括YEAR、TIME、DATE、DATATIME和TIMESTAMP。

字符串类型:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET等。字符串类型又分为文本字符串和二进制字符串。


1.整数类型

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


需要注意的是,在设计数据库的时候,在实体类中long型的变量对应BIGINT,INT对应int类型的成员变量。 
例:


id字段的数据类型为INT(11),“11”表示该数据类型指定的显示宽度,指定能显示的数值中数字的个数。 


注意:显示宽度和数据类型的取值范围是无关的。显示宽度只是指明MySQL最大可能显示的数字个数,数值的位数小于指定宽度时会有空格填充。但是,如果插入了大于显示宽度的值,只要该值不超过取值范围,数值依然可以插入,而且在查询该列值的时候,将会显示完整的插入值,而不会进行显示宽度处理。例如下列语句创建表user:


插入数据:


查询结果显示:


INT默认显示4,但是插入19999依然正常显示。请牢记:INT(3)中的数字3仅仅限制显示而已。


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

浮点类型有2中:单精度(FLOAT)和双精度(DOUBLE)。定点类型只有DECIMAL。二者都可以用(M,D)来表示,其中M称为精度,表示总的位数,D称为标度,表示小数点后的位数。



DECIMAL类型不同于FLOAT和DOUBLE,DECIMAL类型实际上是以串存放的。 

不论是定点类型还是浮点类型,如果用户指定的数据超出精度范围,则会进行四舍五入处理。


问:如果不指定精度,系统如何处理?

答:FLOAT和DOUBLE在不指定精度的时候,默认按照实际的精度(由计算机硬件和操作系统决定),DECIMAL默认为(10,0)。


二、日期与时间类型

这里只是简单说一下DATE和TIMESTAMP类型:


使用CURRENT_DATE或者NOW()插入当前系统日期。


应该注意的是,CURRENT_DATE只返回当前日期值,不包括时间部分;NOW()函数返回日期和时间,但是在保存到数据库时,只保留其日期部分。


TIMESTAMP类型显示宽度固定在19个字符,且其值的存储是以UTC(世界标准时间)格式保存的,存储时间时对当前时区进行转换,检索时再次进行转换。即查询时,当前时区不同,显示的时间值是不同的。


三、文本字符串类型

字符串类型用来存储字符串数据,也可以用来存储其他数据,比如图片和音频的二进制数据等等。 

文本字符串分为两类:文本字符串、二进制字符串

MySQL中文本字符串数据类型


上面几种数据类型,我们着重说一下CHAR和VARCHAR,ENUM,SET 
CHAR(M)为固定长度的字符串,定义时指定字符串列长,保存时右侧填充空格以达到指定长度。M表示列长度,M的范围是0-255个字符。检索时,尾部的空格将会被删除。如果存入了一个超过M长度的字符串,会导致该字符串被截断,只保留前M位。

VARCHAR(M)是长度可变的字符串,M表示最大列的长度。M的范围是0-65535。

例如,VARCHAR(50) 定义了一个最大长度为50的字符串,如果输入的字符串只有10个字符,那么只需要实际存储的是10个字符和一个长度信息字符。VARCHAR在值保存和值检索的时候,空格保存。

看下面的例子:

从上面可以看出,检索时,CHAR型会删掉尾部的空格,而VARCHAR不会。

ENUM类型:

来个实际的例子:


从上面我们可以看到,数据库中存储的是ENUM类型数据的索引值。 

另外,如果ENUM列总有一个默认值,如果该列可以为NULL,那么默认值为NULL,如果NOT NULL,那么为允许列表中的第一个值。


SET类型:

SET也是一个字符串对象,不过跟ENUM不同的是,SET类型的字段可以取 SET列表中的0个或者多个值。SET列最多有64个成员。 

如果插入的的值有重复,那么MySQL会自动删除重复的值,插入SET字段的值的顺序并不重要,MySQL在存储的时候,会按照定义的顺序显示;如果插入不正确的值,MySQL会阻止插入。

注意A,X,D的顺序,是和创建表时的顺序一样的。


关注“松勤软件学院”

松勤网:www.songqinnet.com

软件测试交流QQ群:555945090

软件自动化测试QQ群:398140461

软件性能测试交流QQ群:348074292

学习技术,多问问题,和松勤一起成长


点赞加鸡腿

留言涨工资

分享包对象

小编能否走上人生巅峰

拜托正在看文的你

文章转载自松勤软件学院,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论