免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5426 | 回复: 7
打印 上一主题 下一主题

int(M),char(M),varchar(M)后面长度的含义!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-05 16:46 |只看该作者 |倒序浏览
本帖最后由 冷月汉宫秋 于 2014-12-05 16:47 编辑

   
     各位大牛们,请教一个问题,我实在是搞不清了这些字段类型后面的长度具体含义了。网上查找说是代表最大显示宽度,但是我测试了下,发现不管我int(M)的长度设为多少,插入长度都不能超过10,一旦超过,就报warning了!!
  举例:



mysql> alter table t1 modify a int(1);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> insert into t1 values(1234567890);
Query OK, 1 row affected (0.06 sec)

mysql> insert into t1 values(12345678901);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1264 | Out of range value for column 'a' at row 1 |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)

mysql> alter table t1 modify a int(255);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> insert into t1 values(1234567890);
Query OK, 1 row affected (0.00 sec)

mysql> insert into t1 values(12345678901);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1264 | Out of range value for column 'a' at row 1 |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
2 [报告]
发表于 2014-12-05 18:59 |只看该作者
m就是长度啊,用m  byte字节存储

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
3 [报告]
发表于 2014-12-06 15:11 |只看该作者
长度定义好了,越狱就是你自己的问题,程序继续跑

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
4 [报告]
发表于 2014-12-06 15:11 |只看该作者
假如是银行账户也这么搞,会把公司赔死的

论坛徽章:
0
5 [报告]
发表于 2014-12-10 12:20 |只看该作者
int(M),char(M),varchar(M)后面长度的含义!!!

INT,占4个字节,一个字节8位,一共32位,能表示最大值是2的32次方,也就是21亿多,如果定义成无符号的,省掉一个符号标志位,可表示数字扩大一倍,到42亿多。
42 0000 0000 这就是10位数的,超过这个数就表示不了了。

CHAR,VARCHAR里面的,都是表示字符数。

这些东西在官方文档上都有明确说明的。

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
6 [报告]
发表于 2014-12-10 16:37 |只看该作者
你定义的只是在这个字段里面,你每个数据占用的长度,超出为实际长度
不管多长,都不能超出int规定的范围

论坛徽章:
0
7 [报告]
发表于 2014-12-11 12:03 |只看该作者
1、1年以上全职MYSQL/REDIS DBA工作经验.
2、精通/熟悉MySQL数据库的运行机制和体系架构.
3、精通/熟悉MySQL数据库的管理,有丰富的故障处理经验优先.
4、熟悉linux操作系统的使用,有一定的运维经验.
5、熟悉shell/python编程,善于利用脚本解决重复问题
6、熟悉mysql/redis/mongodb的使用优化.
7、基础扎实,做事认真,善于总结,有想法,能承受压力
8、性格沉稳细致或者灵活有原则,愿意陪公司一起成长

工作地点:珠海魅族总部  待遇面议,高于业界普通水平
面试过程:先QQ,电话面试,达成一致后到公司来面谈一下就可以定下来。
联系QQ:32416070,不是猎头。

论坛徽章:
3
2015亚冠之卡尔希纳萨夫
日期:2015-08-04 19:46:43数据库技术版块每日发帖之星
日期:2015-08-07 06:20:00数据库技术版块每日发帖之星
日期:2016-08-15 06:20:00
8 [报告]
发表于 2014-12-12 11:39 |只看该作者
本帖最后由 ipx-spx 于 2014-12-12 11:40 编辑

int(M)  这是该字段将显示M位,int默认是4字节,即插入-2的32次方到+2的32次方-1,2亿多点,超过就没办法插入,会报错,因为默认的sql_mode的设置问题
char(M) 定长字段,表示该字段最多可以插入M个字符,varchar(M) 边长字段,表示可以插入M个字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP