当前位置: 代码迷 >> Oracle开发 >> 定义数据库表时为啥要有字段长度这个选项,数据类型本身不就是有范围的吗
  详细解决方案

定义数据库表时为啥要有字段长度这个选项,数据类型本身不就是有范围的吗

热度:36   发布时间:2016-04-24 06:40:19.0
定义数据库表时为什么要有字段长度这个选项,数据类型本身不就是有范围的吗?
定义数据库表时为什么要有字段长度这个选项,数据类型本身不就是有范围的吗?
字段长度的单位是什么啊?字节?
比如我定义了个int型的字段,int本身4个字节,但是我选择字段长度10,这不是矛盾吗?
------解决方案--------------------
看书去,孩子
------解决方案--------------------
引用:
Quote: 引用:

看书去,孩子

数据库的教材貌似很少回答这样的问题

如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。
如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。
其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

看书去,孩子

数据库的教材貌似很少回答这样的问题

如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。
如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。
其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?

这里字段长度的单位是字节吧,比如在mysql中int默认是4个字节,能表示2^32范围的数,
我声明一个int型字段,却在括号里写10或100,反正就是超过4的一个值,怎么执行时数据库不会报错?
指定的长度不应该超过该类型的最大长度吧,是不是这道理?

还有个问题:int(10)是表示值的大小不超过10个字节所表示范围,还是字符位数不超过10个?比如23313这个值只有5位


1E38
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

看书去,孩子

数据库的教材貌似很少回答这样的问题

如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。
如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。
其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?

这里字段长度的单位是字节吧,比如在mysql中int默认是4个字节,能表示2^32范围的数,
我声明一个int型字段,却在括号里写10或100,反正就是超过4的一个值,怎么执行时数据库不会报错?
指定的长度不应该超过该类型的最大长度吧,是不是这道理?

还有个问题:int(10)是表示值的大小不超过10个字节所表示范围,还是字符位数不超过10个?比如23313这个值只有5位


INT、INTEGER 是 NUMBER 的受限子类型(只表示整数),相当于 NUMBER(38)。
------解决方案--------------------
引用:
Quote: 引用:


INT、INTEGER 是 NUMBER 的受限子类型(只表示整数),相当于 NUMBER(38)。

您好像没有回答我的问题啊,所谓的字段长度是设置的字节数还是字符位数?

字节
  相关解决方案