常见的数据类型:
整数类型: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(m,d) 参数m是总个数,d是小数位。
查询速度:char > varchar > text
char:定长,效率高,一般用于固定长度的表单提交数据存储 ;例如:身份证号,手机号,电话,密码等。char长度不足时,在右边使用空格填充,而varchar值保存时只保存需要的字符数。
varchar:不定长,效率偏低,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。
text:不需要指定存储长度,能用varchar就不用text。
来源地址:https://blog.csdn.net/weixin_55888879/article/details/129820547