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

程猿薇茑
Java领域优质创作者
博客专家认证
2014-06-21 05:12:05
定义数据库表时为什么要有字段长度这个选项,数据类型本身不就是有范围的吗?
字段长度的单位是什么啊?字节?
比如我定义了个int型的字段,int本身4个字节,但是我选择字段长度10,这不是矛盾吗?
...全文
1997 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CT_LXL 2014-07-03
  • 打赏
  • 举报
回复
引用 2 楼 zpcandzhj 的回复:
[quote=引用 1 楼 hwhtj 的回复:] 看书去,孩子
数据库的教材貌似很少回答这样的问题[/quote] 如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。 如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。 其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?
程猿薇茑 2014-07-03
  • 打赏
  • 举报
回复
引用 1 楼 hwhtj 的回复:
看书去,孩子
数据库的教材貌似很少回答这样的问题
CT_LXL 2014-07-03
  • 打赏
  • 举报
回复
引用 7 楼 zpcandzhj 的回复:
[quote=引用 6 楼 zlloct 的回复:] INT、INTEGER 是 NUMBER 的受限子类型(只表示整数),相当于 NUMBER(38)。
您好像没有回答我的问题啊,所谓的字段长度是设置的字节数还是字符位数?[/quote] 字节
程猿薇茑 2014-07-03
  • 打赏
  • 举报
回复
引用 6 楼 zlloct 的回复:
INT、INTEGER 是 NUMBER 的受限子类型(只表示整数),相当于 NUMBER(38)。
您好像没有回答我的问题啊,所谓的字段长度是设置的字节数还是字符位数?
CT_LXL 2014-07-03
  • 打赏
  • 举报
回复
引用 4 楼 zpcandzhj 的回复:
[quote=引用 3 楼 zlloct 的回复:] [quote=引用 2 楼 zpcandzhj 的回复:] [quote=引用 1 楼 hwhtj 的回复:] 看书去,孩子
数据库的教材貌似很少回答这样的问题[/quote] 如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。 如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。 其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?[/quote] 这里字段长度的单位是字节吧,比如在mysql中int默认是4个字节,能表示2^32范围的数, 我声明一个int型字段,却在括号里写10或100,反正就是超过4的一个值,怎么执行时数据库不会报错? 指定的长度不应该超过该类型的最大长度吧,是不是这道理? 还有个问题:int(10)是表示值的大小不超过10个字节所表示范围,还是字符位数不超过10个?比如23313这个值只有5位[/quote] INT、INTEGER 是 NUMBER 的受限子类型(只表示整数),相当于 NUMBER(38)。
CT_LXL 2014-07-03
  • 打赏
  • 举报
回复
引用 4 楼 zpcandzhj 的回复:
[quote=引用 3 楼 zlloct 的回复:] [quote=引用 2 楼 zpcandzhj 的回复:] [quote=引用 1 楼 hwhtj 的回复:] 看书去,孩子
数据库的教材貌似很少回答这样的问题[/quote] 如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。 如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。 其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?[/quote] 这里字段长度的单位是字节吧,比如在mysql中int默认是4个字节,能表示2^32范围的数, 我声明一个int型字段,却在括号里写10或100,反正就是超过4的一个值,怎么执行时数据库不会报错? 指定的长度不应该超过该类型的最大长度吧,是不是这道理? 还有个问题:int(10)是表示值的大小不超过10个字节所表示范围,还是字符位数不超过10个?比如23313这个值只有5位[/quote] 1E38
程猿薇茑 2014-07-03
  • 打赏
  • 举报
回复
引用 3 楼 zlloct 的回复:
[quote=引用 2 楼 zpcandzhj 的回复:] [quote=引用 1 楼 hwhtj 的回复:] 看书去,孩子
数据库的教材貌似很少回答这样的问题[/quote] 如果不指定长度,数据库在存储的时候都必须给每个字段预留最大的存储空间,这样极大的浪费了空间,也加大了数据库本身管理的难度。 如 varchar2.假如最大长度为4800,如果不指定长度,每个字段都必须预留这么大的空间(包括有些只能用的极少空间的字段),这样极大的浪费了资源,对数据库本身而言也增加了管理资源。 其实就是一句话:用多少,申请多少。你不觉得这样更节约吗?[/quote] 这里字段长度的单位是字节吧,比如在mysql中int默认是4个字节,能表示2^32范围的数, 我声明一个int型字段,却在括号里写10或100,反正就是超过4的一个值,怎么执行时数据库不会报错? 指定的长度不应该超过该类型的最大长度吧,是不是这道理? 还有个问题:int(10)是表示值的大小不超过10个字节所表示范围,还是字符位数不超过10个?比如23313这个值只有5位
瘦马 2014-06-21
  • 打赏
  • 举报
回复
看书去,孩子

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧