定义普通表
表是由数据库管理员维护的逻辑结构,由行和列组成。可以从数据角度,将表定义为数据定义的一部分。定义表之前,需首先定义数据库和模式,本节将介绍如何利用Data Studio创建表。执行如下步骤在数据库中定义表:
- 在“对象浏览器”窗格中,右键单击“普通表”,选择“创建普通表”。
- 定义基本表信息,如表名称、表类型等。详情请参见提供基本信息。
- 定义列相关信息,如列名、数据类型模式、数据类型、列约束等。详情请参见定义列。
- 选择表数据分布信息详情请参见选择数据分布类型。
- 为不同约束类型定义列约束。约束类型包含主键(PRIMARY KEY)、唯一(UNIQUE)、检查(CHECK)。详情请参见定义表约束。
- 定义表索引信息,如索引名称、访问方法等。详情请参见定义索引。
在“SQL预览”页签,可以查看输入所自动生成的SQL查询。详情请参见SQL预览。
- 填写“表名”。“表名”指定要创建的表名称。
选择“区分大小写”复选框可保存“表名”字段中输入的文本的大小写。例如,如果输入的表名称“Employee”,则表名将创建为“Employee”。
创建表的模式名称显示在“用户模式”中。
- 从“表存储方式”中选择表存储方式。
- ROW:创建行存表。
- COLUMN:创建列存表。
- 选择“表类型”。“表类型”指定表类型。
- “正常”:如指定为“正常”,则创建一个标准的表。
- “非正常”:如指定为“非正常”,则创建一个无日志表。对无日志表写入数据时,将不记录到日志中,这样使无日志表的写入速度大大超过一般表的速度。尽管如此,无日志表也是不安全的:在冲突或异常关闭后,无日志表会被自动截断;另外,无日志表的内容不会被备份到备机,且创建无日志表的索引时,也不会自动录入日志。
- 选择选项:
- 如不存在相同名称的表,勾选“如果不存在”,创建该表。
- 勾选“带OIDS”,为新创建的表分配OID(对象标识符)。创建需要带OID的新表时,请选择该选项。
- 选择“填充因子”表填充因子取值范围为10~100。默认值为100,表示完全填充。
“填充因子”指定为较小值时,“INSERT”操作仅填充表页面到指定的百分比。表页面预留的剩余空间,将用于更新该页面的行。这样使得“UPDATE”操作可以在和原页面相同的页面上,放置更新后的行内容,比放置在不同的页面上更加高效。对于从未更新过表项的表来说,完全填充是最好的选择。但是对于更新规模较大的表,较小填充因子更加合适。TOAST表不支持设置该参数。
- 在“设置表描述”框中填写表的简短描述。
- 提供完这些通用信息后,单击“下一步”定义表的列信息。
下表列出了“一般”中普通表支持的字段。
字段 |
行存表 |
列存表 |
ORC表 |
---|---|---|---|
表类型 |
|
|
|
如果不存在 |
|
|
|
带OIDS |
|
|
|
填充因子 |
|
|
|
定义列
列定义了行中的信息单元,每一行为一个表项,每一列为应用于所有行的信息的分类。数据库添加表时,可以定义组成该数据库的列,列决定了表可以包含的数据类型。提供表的通用信息后,单击“列”页签定义列清单,每一列包含名称、数据类型和其他可选属性。
- 在“列名”区域填写列名称。“列名”指新表中待创建的列的名称,列名在表中唯一。
勾选“区分大小写”复选框可保留“列名”字段中输入的文本的大小写。例如,如果输入的表名称为“Name”,则表名将创建为“Name”。
- 选择“阵列维度”。“阵列维度”指列的阵列尺寸。
例如:如果某列的数组维度定义为integer [],该列数据会添加为单维数组。
上表的marks列创建为单维数据,subject列创建为二维数据。
- 从“数据类型”中选择列的数据类型。例如,为整数值选择“bigint”。
对于复杂的数据类型:
- 从“模式数据类型”中选择模式。
- 从“数据类型”中选择对应的数据类型。该列表显示所选模式的表和视图。
用户无法选择自定义数据类型。
- 在“精度/大小”字段选择所输入数据的类型。仅当数据类型可以用精度/尺寸来定义时,该选项可选。
- 在“范围”字段选择输入的数据类型的范围。
- 根据需要在“列约束”区域选择如下约束:
- “非空”:指该列不能包含空值。
- “唯一”:指列可能仅包含唯一值。
- “默认”:指定该列未定义值的情况下使用的默认值。
- “检查”:指生成boolean结果的表达式,该结果中,新增行或更新行的操作需成功执行。
- 如果要在“创建普通表”对话框的“列”页签添加列注释信息,则在“设置列描述(最多5000个字符)”文本框中进行输入,之后单击“添加”。此外,也支持通过单独的新增列窗口添加注释信息。完成之后,可以在普通表的属性窗口中查看该信息。
- 输入新增列的所有信息后,单击“添加”按钮也可以从清单中删除列或修改列顺序,定义完所有列后,单击“下一步”。
- 支持对列进行添加、删除、编辑、调整顺序等操作。
下表列出了“列”中普通表支持的字段。
字段 |
行存表 |
列存表 |
ORC表 |
---|---|---|---|
阵列维度 |
√ |
x |
x |
模式数据类型 |
√ |
x |
x |
非空 |
√ |
√ |
√ |
默认 |
√ |
√ |
√ |
唯一 |
√ |
x |
x |
检查 |
√ |
x |
x |
分布类型如下表所示:
分布类型 |
说明 |
---|---|
默认分布 |
分配默认分布类型。 |
REPLICATION |
每一行复制到数据库集群的所有数据节点。 |
HASH |
根据指定列的哈希值分布行。 |
RANGE |
根据range值分布行。 |
LIST |
根据list值分布行。 |
选择数据分布后,单击“下一步”。
下表列出了“数据分布”中普通表支持的选项。
分布类型 |
行存表 |
列存表 |
ORC表 |
---|---|---|---|
默认分布 |
√ |
√ |
x |
HASH |
√ |
√ |
√ |
REPLICATION |
√ |
√ |
x |
定义表约束
创建约束为可选操作一个表有一个(且只能有一个)主键,建议创建主键。
下表列出了“表约束”中普通表支持的选项。
约束类型 |
行存表 |
列存表 |
ORC表 |
---|---|---|---|
CHECK |
√ |
x |
x |
UNIQUE |
√ |
x |
x |
PRIMARY KEY |
√ |
x |
x |
在“约束类型”中可选择如下选项:
- 主键(“PRIMARY KEY”)
一个表只可指定一个主键,作为列约束或表约束主键约束应命名一组列,该组列不同于同一表定义的任何唯一约定命名的其他组的列。
在“约束类型”中选择“PRIMARY KEY”,然后填写“约束名”。在“可用列”清单中选择列,单击“添加”。如需多列主键,为其他列重复执行该步骤。
表的“填充因子”取值范围为10~100。默认值为100,表示完全填充。“填充因子”指定为较小值时,“INSERT”操作仅填充表页面到指定的百分比。表页面预留的剩余空间,将用于更新该页面的行。这样使得“UPDATE”操作可以在和原页面相同的页面上,放置更新后的行内容,比放置在不同的页面上更加高效。对于从未更新过表项的表来说,完全填充是最好的选择。但是对于更新规模较大的表,较小填充因子更加合适。TOAST表不支持设置该参数。
“延迟”:勾选该复选框延迟该选项。
“初始化延迟”:勾选该复选框,在设置的默认时间点检查约束。
然后,在“约束”区域框单击“添加”。
可单击“删除”,删除“约束”中的主键。
各域的必选参数用星号(*)标识。
- 唯一(“UNIQUE”)
在“可用列”清单中选择列,单击“添加”。如需多列“UNIQUE”,为其他列重复执行该步骤添加第一列后,“UNIQUE”名自动从表名填入该名称支持修改。
可单击“删除”删除“约束”中的“UNIQUE”。
- 检查(“CHECK”)
执行“INSERT”或者“UPDATE”操作,如果检查表达式错误,表数据不可更改。
双击“可用列”清单中的列,则“检查表达式”编辑行插入到当前光标位置。
然后,在“约束”区域框单击“添加”。也可单击“删除”,删除“约束”中的“CHECK”。各域的必选参数用星号标识。
定义索引
创建索引为可选操作。索引主要用于增强数据库性能。该操作建立指定表中指定列的索引,如需创建“唯一索引”,勾选该复选框。
在“访问方式”中选择要使用的索引方法名称。默认方法是B-tree。
索引的“填充因子”指索引方法填充索引页面的百分比。“访问方式”为B-trees时,初次建立索引以及在右侧扩展索引(填写新的最大键值)时,叶子页面填充到该百分比如果后续完全填满,页面将拆分,这样会导致索引效率逐步衰减。B-trees使用默认填充因子90,也可以选择10~100范围内的整数。如果为静态表,填充因子100,这样可以尽量减小索引的物理尺寸。对于更新量较大的表,推荐填充因子设置为较小值,这样可以尽量减少页面拆分的需求。其他索引方法使用的填充因子不同,但是比较类似。默认的填充因子随方法不同而不同。
可以直接提到索引的用户定义的表达式,也可以使用“可用列”创建索引在“可用列”列表中选择列,单击“添加”。如需多列索引,为其他列重复执行该步骤。
输入新增索引的所有信息后,单击“添加”按钮。
可单击“删除”删除清单中的索引定义完所有列后,单击“下一步”。
下表列出了“索引”中普通表所支持的字段/选项。
字段/选项 |
行存表 |
列存表 |
ORC表 |
---|---|---|---|
唯一索引 |
√ |
x |
x |
btree |
√ |
√ |
x |
gin |
√ |
√ |
x |
gist |
√ |
√ |
x |
hash |
√ |
√ |
x |
psort |
√ |
√ |
x |
spgist |
√ |
√ |
x |
填充因子 |
√ |
x |
x |
用户自定义表达式 |
√ |
x |
x |
部分索引 |
√ |
x |
x |