【发布时间】:2016-08-06 12:28:36
【问题描述】:
假设我正在创建一个包含一些列的表,例如:
COLUMN_NAME DATA_TYPE NULLABLE and .......
=========== ========= ======== ============================
NAME VARCHAR2(100 BYTE) No
GENDER VARCHAR2(1 BYTE) No
在创建表时,我需要定义 NAME (100 BYTE) 和 GENDER (1 BYTE) 列的数据大小。
有人能解释一下这样做的确切目的吗?
对于NAME 列,我分配100 BYTE。但有时名称值可能不会占用100 BYTE。所以它浪费了一些空间,对吧?为什么DB本身不能自动管理?
【问题讨论】:
-
varchar是可变长度数据类型。在varchar(100)列中仅存储 1 个字符时不会浪费空格。 -
@a_horse_with_no_name 谢谢,但我可以知道定义该可变长度的目的吗?
-
这是一个业务限制。您声明您不想将值存储得更长(顺便说一句。在 Postgres 中,您不需要指定最大长度)。您可能想阅读以下内容:stackoverflow.com/q/8295131/330315 和 Oracle 概念指南:docs.oracle.com/database/121/CNCPT/…