数据类型int(1),char(1)的不同

 我来答
新科技17
2022-07-12 · TA获得超过5911个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:75.4万
展开全部
新建test表,字段如下:

定义字段ID int(1),对于这个长度1,想当然的认为ID只能存0-9的数字,
但向这个字段插入9999同样没问题.所以括号里的1并不是该字段的最大长度.

int型变量,在系统中有固定的范围 (0 到 4294967295),也就是int型的字段能存的最大无符号数是4294967295,假设在id字段写入9999999999999,超过这个最大值,数据就会出错,
所以想用int型存11位的手机号是不行的,就算你设置int(100),同样存不进去,因为int类型占用4字节,存不了这么大的数据.
总结:
无符号int型,存储数据大小跟括号里的数字无关.

但是char,varchar 和 int不同.
name字段为varchar(1),只能存放一个字符,多余的部分会舍去.
sex字段为char(1),也只能存放一个字符,多余的部分会舍去.
可见char和varchar括号中的数字,表示该字段能存放的最大字符数.

myslq手册里有一张图,解释char和varchar的区别:

可见,定义char(4),即使存储的内容不到4个字节,系统会自动用空格补齐,难免会造成磁盘空间浪费,而且取出数据时需要去掉数据后边的空格,
优点是,数据定长,执行速度快.
对于varchar(4),会有1字节的前缀,即使内容为空也会占用一个字节,可变长度的优点是节省空间,缺点是执行效率相对较慢.

一般用varchar,如果可以确定数据的长度,比如存放MD5加密的密码,固定32位,可以存成char(32).
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式