MySQL的数据类型以及int(11)的理解

本文详细介绍了MySQL中的数据类型,包括数值型(整型、浮点型、定点型)、字符型和日期时间类型,并解释了每种类型的存储方式及取值范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在MySQL中,大致可以分成如下几种类型:
这里写图片描述

1.数值型

(1)整型

数据类型占的字节数有符号范围
tinyint(m)1个字节范围(-128~127)
smallint(m)2个字节范围(-32768~32767)
mediumint(m)3个字节范围(-8388608~8388607)
int(m)4个字节范围(-2147483648~2147483647)
bigint(m)8个字节范围(+-9.22*10的18次方)

注意:
1.取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
2.int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,个人觉得加m没用
3.如果向数据库中加范围以外的值是加不进去的,会报错误

(2)浮点型

数据类型占的字节数有效位数
float(m,d)4字节8位
double(m,d)8字节16位

其中:
m=整数位数+小数位数
d=小数位数
设一个字段定义为float(5,2),如果插入一个123.456,数据库只会存123.46;不可以插入整数位大于3(即5-2)的数字。

(3)定点型

数据类型字节数
decimal(m,d)m+2

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

其中:
m<65,d<30;

2.字符型

字符型包括:char,vchar,text,blob等;

类型长度最多字符
char(n)固定长度最多255字符
vchar(n)可变长度最多65535字符
text可变长度最多65535字符
blob可变长度适合存照片

注意:对于name char(3),如果你插入’abcd’,会报错误(ERROR 1406 (22001): Data too long for column ‘name’ at row 1),而且不能插入数据库.对于网上有人说,超过你设定的长度会被截断,但是我测试的时候发现,超过设定长度根本不能存下,所以请以当前环境为准.

3.日期和时间类型

数据类型占的字节数含义格式
date3字节日期2017-01-01
time3字节时间10:38:10
datetime8字节时间日期2017-01-01 10:38:10
year1字节2017

例子:
insert into test(date) values(“20170101”);
或者:insert into test(date) values(“2017-01-01”);
注意:
时间戳(timestamp)系统会自动添加当前时间,格式和datetime一样。

关于int(11)的理解:

例如:ID int(m);
在 integer 数据类型中,m 表示最大显示宽度。
在 int(m) 中,m 的值跟 int(m) 所占多少存储空间无任何关系。 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。唯一的不同就是显示给用户的方式不同(还要结合zerofill 才能看到)。

结论:
在创建表时,完全不需要写成ID int(m),写成ID int即可,除非对显示有特定的要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值