设计数据库表时要不要定义字段的长度?指定字段长度和不指定长度有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计数据库表时要不要定义字段的长度?指定字段长度和不指定长度有啥区别?相关的知识,希望对你有一定的参考价值。

设计数据库表的时候,需要考虑数据存储的内容,因为你是设计者你会更清楚所存储的值的内容是什么,给上合理的数据类型和长度,比如一个flag字段给的长度是char(1),如果DBA不清楚还要询问你长度是多少,如果他没有询问你,自作主张建了 char(10)这样有些影响查询效率。所以在你清楚的情况下,给定字段的长度是非常不错的追问

一个字段定义为VARCHAR2(10)或VARCHAR2,这两种定义有什么区别?

追答

varchar2(10) 是字段最长10 最少0的可变
varchar2 是可变最长4000还是2000忘了。如果你确定你的字段最长不超过10 那就用第一个 查询效率会高点

参考技术A 一个是降低物理上的存储空间,一个是提高数据库的处理速度,还有一个附带功能是能校验数据是否合法。追问

一个字段定义为VARCHAR2(10)或VARCHAR2,这两种定义有什么区别?

追答

VARCHAR2(10)固定了存储这个字段就是10个字节,而VARCHAR2也是有存储长度限制的,只不过是默认最大的存储数据长度限制(oracle好像是65535)。

一个是降低物理上的存储空间:很容易理解了,10个字节自然会比默认的长度要短很多,所需要的磁盘空间当然小(可能你会想磁盘现在那么大,可是一条记录少几万个字节,但是假设这个表有几千万或者几亿条记录,节省的空间是可想而知的)
一个是提高数据库的处理速度:跟上面同理,在遍历字段内容的时候,10肯定比默认快。
还有一个附带功能是能校验数据是否合法:这个就是怕有些程序开发人员在使用数据的时候不符合长度限制的约束。

本回答被提问者采纳
参考技术B 1、需要指定长度,创建库表需要的;
2、开发人员需要知道长度,知道如何使用。追问

一个字段定义为VARCHAR2(10)或VARCHAR2,这两种定义有什么区别?

追答

不好意思,varchar2可以不定义长度么。请问,你使用的什么数据库?

追问

ORACLE

如何设计Sql数据库中的字段为自动填充数据并自动加1的自增量

对着你要设置的表右键单击,设计选中你要设置的字段,去下面看列属性,展开表设计器,展开标识规范,(是标识) 的:否改成:是 ,其它不用修改。前提:这个字段是 int 类型的,要不没有自动加1这个说法,字浮串不可能自动加1的。 参考技术A create table userinfo
(
id int identity(1,1) primary key not null,
...............
)
identity(1,1)自动增长列从1开始每次加1;primary key为主键,该列值不能重复
参考技术B 首先,字段应该设置成int类型的,列属性里有一项“标识规范”,设置成 是,就可以了。 参考技术C 有的数据库有这个功能,比如MySQL的字段添加auto_increment属性就能做到 参考技术D CREATE TABLE 表名(ID INT IDENTITY(1,1) PRIMARY KEY, ...)

以上是关于设计数据库表时要不要定义字段的长度?指定字段长度和不指定长度有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库中 int 长度最大是多少?

关于数据库建表时字段数据类型

oracle数据库中怎么设置一个字段的唯一性

SQL server约束

oracle数据库中怎么设置一个字段的唯一性?

数据库索引