Mysql 的数据类型

一、整型

在mysql的数据类型中有如下定义,整型类型(显示宽度)
注意,正确的理解,其实是显示宽度,因为整型的显示宽度,对数值大小无影响,只是当设置了zerofill的时候,在显示的时候补0而已。
在这里插入图片描述

二、浮点型与定点型

在mysql的数据类型中浮点型分为两种,float()与double()类型,定点型为decimal()
数据类型(M,D)

M: 精度,数据的总长度;
D: 标度,小数点后的长度;

其区别在于:
1、当不指定精度时,Float、Double默认会保存实际精度,而Decimal默认是整数;
2、当标度不够时,都会四舍五入,但Decimal会警告信息。

在这里插入图片描述

三、日期和时间类型

MySQL日期时间所有种类如下:
在这里插入图片描述
DATE类型前面可以加个D,D表示天即24小时,如往DATE类型插入 ‘2 15:20:20’
在这里插入图片描述
另外TimeStamp类型与DateTime在无输入的情况下要注意下:
1、TimeStamp使用Current_TimeStamp()而DateTime使用NOW(来获取当前时间);
2、输入NULL时,系统会输入系统当前日期与时间;
3、无任何输入时,系统会输入系统当前日期与时间;

四、字符串类型

字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM、SET

1、CHAR与VARCHAR
其定义方式为:字符串类型(M)

这个M是长度的意思,插入该列的字符串长度将不允许超过M所指定的长度。另外,由于MySQL在建库时就指定了字符集,因此就不存在nchar、nvarchar、ntext这种数据类型了。

char最长可取255;
varchar最长可取65535;

2、TEXT
TEXT分为4种,与SQLServer不同:
在这里插入图片描述
3、ENUM类型
ENUM类型(枚举类型),与C#的概念一样,在定义时指定取值范围。
其定义方式为:
属性名 ENUM(‘值1’,‘值2’,‘值3’…‘值n’)

ENUM有NOT NULL属性,其默认值为取值列表的第一个元素;
ENUM无NOT NULL,则ENUM类型将允许插入NULL,并且NULL为默认值;
在这里插入图片描述
4、SET类型
在创建表时,就指定SET类型的取值范围
属性名 SET(‘值1’,‘值2’,‘值3’…,‘值n’)
在这里插入图片描述
5、二进制类型
二进制类型是在数据库中存储二进制数据的数据类型。二进制类型包括BINARY、VARBINARY、BIT、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB。
在这里插入图片描述
1、BINARY和VARBINARY
两者唯一的差别在于BINARY当长度不够时会补\0。

2、BIT类型
BIT类型与SQLServer里的就差别大了。 其定义方式为:BIT(M)

其中"M"指定了该二进制的最大字节长度为M,M的最大值为64。如BIT(4)就是数据类型为BIT类型,长度为4。其能够存储的值为0-15。因为变成二进制后,15的值为1111。

3、BLOB类型
BLOB类型是一种特殊的二进制类型。BLOB可以存储数据量很大的二进制数据,如图片,视频等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们之间的区别也只是最大长度不同。

五、数据类型的选择

1、整型:根据要显示的最大值决定;
2、浮点型:要显示小数。如果要精确到小数点后10位,就选择DOUBLE,而不应该选择FLOAT。DECIMAL精度较高,浮点数会出现误差,如果精度较高,则应选择定点数DECIMAL;
3、字符串型:定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快,如果长度变化不大,如身份证号码那种,最好选择CHAR类型。而对于评论字符串,最好选择VARCHAR;
4、时间:根据需要显示的类型咯,特别是TIMESTAMP,如果需要显示的时间与时区对应,就应该选择TIMESTAMP;
5、ENUM类型和SET类型:长度不同,ENUM类型最多可以由65535个成员,而SET类型最多只能包含64个成员。且ENUM只能单选,而SET类型可以多选;
6、TEXT类型和BLOB类型:TEXT只能存储字符数据,而BLOB可以存储二进制数据。如果是纯文本,适合TEXT。如果是图片等适合存二进制;

六、问题总结

1、存储路径的问题
MySQL中,如果路径中使用"“符号时,这个符号会被过滤。解决的办法是路径中用”/“或”\“来代替”"。这样MySQL就不会自动过滤路径中的分隔符。

2、MySQL中的布尔类型
MySQL中没有Bool或Boolean类型,但是为了支持SQL标准,也可以定义Bool或Boolean类型的,但是Bool或Boolean类型最后转换成的是TinyInt(1),也就是说,在MySQL中,布尔类型实际上是TinyInt(1)。

3、MySQL中如何存储JPG图片或MP3音乐
一般情况下,数据库中不直接存储图片和音频文件,而是存储图片或音频文件的路径,如果在特殊情况下需要在MySQL数据库中存储图片和音频文件,可以选择BLOB类型;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值