oracle建表时的字段大小有什么用

时间:2022-01-04 08:15:38
建表时大小是不是越大越好,varchar2根据实际字符大小判断,是不是我每次建的时候都用varchar(1000),
还有就是当我使用 varchar2(2)时,若我插入的字段过长,在JOB执行该插入的操作时,会直接暂停还是怎么样

6 个解决方案

#1


也不是越大越好,根据需要来定,比如你的业务逻辑,某个字段最大为10,超过即为非法,那么用varchar2(10)就很好。
job中插入如果超长,job直接失败,除非你在过程中捕获了异常并忽略它。

#2


那我定义成varchar2(10),但是实际值还是得根据插入的值确认大小的啊,对表空间没什么影响,实际定义的小了,只是用来限制输入值的大小?

#3


引用 2 楼  的回复:
那我定义成varchar2(10),但是实际值还是得根据插入的值确认大小的啊,对表空间没什么影响,实际定义的小了,只是用来限制输入值的大小?

对。

#4


关键并不是限制输入值的大小,而是表空间的大小,如果varchar2(10),输入的超过10个长度,就非法了~
但是如果所有的都varchar2(10000),占的空间又太大了.这其实跟程序里面定义一个变量是一样的道理,比如long型,interger,double,定义的同时,也就定义了它的数据内存空间.

Oracle是很看重数据本身的一种数据库,它着重数据本身的存储与安全,而不重在它的显示,没有sqlserver方便使用,但是确实非常安全.

#5


引用 4 楼  的回复:
关键并不是限制输入值的大小,而是表空间的大小,如果varchar2(10),输入的超过10个长度,就非法了~
但是如果所有的都varchar2(10000),占的空间又太大了.这其实跟程序里面定义一个变量是一样的道理,比如long型,interger,double,定义的同时,也就定义了它的数据内存空间.

Oracle是很看重数据本身的一种数据库,它着重数据本身的存储与安全,而不重在它的……
这个我记得,定义varchar2(10000)和varchar2(10)占的空间一样的啊

#6


最主要的用处就是,定义的宽度不一样的时候,在EXE代码里使用那种绑定数据源的显示方式的时候,这个宽度能够自动决定列宽!
这个太有用了....

#1


也不是越大越好,根据需要来定,比如你的业务逻辑,某个字段最大为10,超过即为非法,那么用varchar2(10)就很好。
job中插入如果超长,job直接失败,除非你在过程中捕获了异常并忽略它。

#2


那我定义成varchar2(10),但是实际值还是得根据插入的值确认大小的啊,对表空间没什么影响,实际定义的小了,只是用来限制输入值的大小?

#3


引用 2 楼  的回复:
那我定义成varchar2(10),但是实际值还是得根据插入的值确认大小的啊,对表空间没什么影响,实际定义的小了,只是用来限制输入值的大小?

对。

#4


关键并不是限制输入值的大小,而是表空间的大小,如果varchar2(10),输入的超过10个长度,就非法了~
但是如果所有的都varchar2(10000),占的空间又太大了.这其实跟程序里面定义一个变量是一样的道理,比如long型,interger,double,定义的同时,也就定义了它的数据内存空间.

Oracle是很看重数据本身的一种数据库,它着重数据本身的存储与安全,而不重在它的显示,没有sqlserver方便使用,但是确实非常安全.

#5


引用 4 楼  的回复:
关键并不是限制输入值的大小,而是表空间的大小,如果varchar2(10),输入的超过10个长度,就非法了~
但是如果所有的都varchar2(10000),占的空间又太大了.这其实跟程序里面定义一个变量是一样的道理,比如long型,interger,double,定义的同时,也就定义了它的数据内存空间.

Oracle是很看重数据本身的一种数据库,它着重数据本身的存储与安全,而不重在它的……
这个我记得,定义varchar2(10000)和varchar2(10)占的空间一样的啊

#6


最主要的用处就是,定义的宽度不一样的时候,在EXE代码里使用那种绑定数据源的显示方式的时候,这个宽度能够自动决定列宽!
这个太有用了....