
诚信丨进取丨合作丨创新
招进松勤,送去企业 你若有梦,松勤有心
❤
自动化测试班
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
学习技术,多问问题,和松勤一起成长

点赞加鸡腿
留言涨工资
分享包对象
小编能否走上人生巅峰
拜托正在看文的你







