在mysql中设计:
id:tinyint,长度是1,输入130显示out of rang,
将其长度设计为5,输入130,为什么还是显示out of rang?如果说tinyint数据范围是-128 到127,那长度的意义在哪里?

解决方案 »

  1.   

    那个长度,只是显示长度,与实际存储无关,
    你的TINYINT,只是一个字节,存储范围是-128 到127。
      

  2.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    白话解释,你往数据库里插入 130 的时候,是储存长度,这个是由数据类型来管理的如int,tinyint等,因为你出入的130,超出了tinyint的-128 到127的范围,所以会报错。但你select的时候,显示在你眼前的这个数字1,3,0这三个数字是实际长度,是由int(11)或tinyint(3)里的参数'11','3'来管理的。
    所以tinyint管理的是130这个数字的大小,tinyint里面的参数(3)管理的是组成130的这三个字符:1,3,0的长度。也就是说数字的大小和数字的长度不是一个概念。
    虽然有些不符合书面规范,但很容易让人理解。
      

  4.   


    引用一下我刚才说的,突然又想到了一个例子,希望可以帮助你。
    假如一个公园,它就是数据库,你就是一个数据,你想进入这个公园。这个公园的门是1米{tinyint(1)},可这个公园规定只有-128 到127岁的人才能进入(也就是tinyint),可你偏偏到了130岁,但你的身高是3米。虽然你很有钱,自己把这个门阔到了3米高{tinyint(3)},但是你无法改变你的年龄,你还是130岁,所以这里不是你娱乐的地方。所以数据库报错。