创建表
创建表分为基本信息、约束、物理特性和分区四个部分讲解。
基本信息
首先在基本信息中,现在给出的信息比以前的版本更加丰富,如种子、默认值等功能。
约束
约束用于限定表中某些字段的取值,可以针对单个字段,也可以针对多个字段,它是保障整个数据库系统逻辑一致性的重要手段。下面介绍几种约束的创建。
外键约束。外键约束是用于与另一个表建立关联。通过与另一个表中的主键列(或者具有唯一值约束列)关联,这些列构成了另一个表的外键。
值检查约束。值检查约束是用来指定某列的取值范围,它通过限制输入到列中的值来强制域的完整性。值检查约束可以作用在多列上。值检查约束表达式的填写标准是一个关系表达式,如 ID>10 AND NAME= ‘ZHUFENG’AND ADDR LIKE ‘CD’。
唯一值约束。用来限制不受主键约束的列上的数据的唯一性,即表中任意两行在指定列上都不允许有相同的值。唯一值约束与主键约束的区别在于唯一值约束允许在该列上存在 NULL 值,而主键约束限制的更加严格,不但不允许有重复,而且也不允许有空值。
分区
表分区是指在创建表时,按照一定的划分条件,将表切分成若干个子表,在逻辑上,分区表与单一表具有相同的特性,对分区进行插入、更改、删除、选择等操作的命令与对单一表的操作命令完全一样,但分区表的各个分区拥有独立的存储实体,因此,分区表的各个分区可以存放在不同的存储空间上,从而实现表在物理上的分割。
虚谷数据库提供了两级三种分区方式:- 一级分区的方式有:列表分区、范围分区和哈希分区。
- 二级分区的方式有:列表分区、范围分区和哈希分区。
下面介绍的是列表分区。在这里要注意的是分区条件的选择,列表分区一般针对的是无规律数据,所以一般的列表分区的分区键是选择字符数据类型。在下面的例子中,选择 ADDR 字段作为分区键,二级分区不选就表示不使用二级分区。可以看到在下面还有一个 OTHERVALUES 分区,这是一个异常分区,表示在前面的分区中不符合分区条件的记录都被存放在 OTHERVALUES 分区中。
范围分区一般是针对数值数据类型的一种分区,如 1-100,101-200 这样的数据,一般选择范围分区。在范围分区中,可以看到有一个 MAXVALUES 分区条件,MAXVALUES 分区就相当于列表分区中的 OTHERVALUES 分区。在下图所示的例子中分区条件表示从负无穷到 0,1 到 9999,10000 到 9999999,10000000 到 MAXVALUES,这涵盖了所有的整数分区。
哈希分区则是按分区字段的散列值为键将记录分散到各个分区中,除非查询的条件表达式中含有与分区键字段相关的等式,否则查询不能被裁剪为只针对表的一个或少数几个分区,在此情况下,系统主要通过启用并行查询算法来提高查询的性能,因此,在以下情况下,可以考虑使用哈希分区:
- 不适合使用列表分区和范围分区。
- 作为分区条件的键字段的取值繁多,其散列值分布较均匀。
- 查询的条件中与分区键字段相关的关系表达式是等式。
可以在列表分区当中建立二级分区: