1. mysql基本数据类型

发布于:2023-09-15 ⋅ 阅读:(73) ⋅ 点赞:(0)

常见的数据类型:

整数类型:bit、tiny int、small int、medium int、 int、 big int

浮点数类型:float、double、decimal

字符串类型:char、varchar、tiny text、text、medium text、longtext

日期类型:Date、DateTime、TimeStamp、Time、Year

整型

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节
int(m) 4个字节
bigint(m) 8个字节

int(m) :m 用于指定显示宽度

int(5)表示整数类型的字段,其中的5是用来指定该字段显示的宽度,也就是显示时所占用的字符数。这里需要注意的是,这里的宽度只是一种显示效果,不会改变该字段的存储方式或取值范围

以int(5)为例,当一个数值小于5位数(比如1234)时,在数据库中该字段的实际存储空间仍然是4个字节,取值范围也与普通整数类型相同。但当这个值进行查询或者在应用程序中进行输出时,会在其前面自动添加0,使其占据5个字符的宽度,从而保证了输出的格式整齐美观(其实就是显示的格式,内存大小是4字节是不会变的)。

下面是一个简单的示例,用于演示int(5)类型的显示效果:

CREATE TABLE test (id INT(5));
INSERT INTO test VALUES (123);
INSERT INTO test VALUES (12345);

SELECT * FROM test;

执行上述SQL语句后,输出结果如下:

+-------+
| id    |
+-------+
|   123 |
| 12345 |
+-------+


浮点型

在这里插入图片描述
在MySQL中,float类型是一种浮点数类型,用于存储单精度浮点数。由于float类型采用二进制科学计数法来表示小数,因此在存储时会存在精度问题。

由于float类型的精度问题,当存储一些小数的时候,可能会发生精度丢失的问题。例如,当存储0.1这个小数时,由于0.1的二进制表示不能被完全表示,因此在进行存储和计算时会产生误差,从而导致精度丢失。

下面是一个简单的示例,用于演示float类型的精度问题:

CREATE TABLE test (id FLOAT);

INSERT INTO test VALUES (0.1);

SELECT * FROM test;

执行上述SQL语句后,输出结果如下:

+-----+
| id  |
+-----+
| 0.1 |
+-----+

从上述结果可以看出,虽然我们存储的值是0.1,但实际上输出的结果为0.100000001490116。这是由于float类型的精度问题导致的,相同的问题在其它编程语言中也可能存在。

因此,在MySQL中,如果需要精确存储小数,建议使用decimal类型,而不是float类型

decimal类型是一种高精度的十进制数类型,可以在存储和计算时保持精度不变。但需要注意的是,decimal类型占用的存储空间会比float类型更大,因此在实际使用中需要根据实际情况进行选择。


定点数 decimal

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值,不会丢失精度。定点数以字符串形式存储。

decimal(m,d) 参数m是总个数,d是小数位。


字符串

在这里插入图片描述
查询速度:char > varchar > text

char:定长,效率高,一般用于固定长度的表单提交数据存储 ;例如:身份证号,手机号,电话,密码等。char长度不足时,在右边使用空格填充,而varchar值保存时只保存需要的字符数。

varchar:不定长,效率偏低,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

text:不需要指定存储长度,能用varchar就不用text。


网站公告

今日签到

点亮在社区的每一天
去签到