在关系型数据库中,表由行和列组成。
其中表的列的数目和顺序是固定的,每个列都有一个名字,并且有指定的数据类型,即限制着这个 列可以存储的范围。比如,声明为数值类型的列不可以存储字符串,否则该列不能用于数学计算, 声明为字符串类型的列可以存储几乎任意类型的数据,但是却不能进行数学计算。常用的数据类型 有:用于整数的integer类型、用于可能为分数的numeric类型、用于字符串的text类型、用于日期 的date类型等等,在后面的课程中,我们会对OushuDB支持的这些数据类型进行详细的介绍。 与表的列不同,表的行数目是变化的,它反映了在某个时刻表中存储的数据量。行是没有顺序的, 除非在查询时对其进行要求,另外,行也没有唯一的标识符,不同行的数据完全相同的情况是被允 许的,如果不希望这样,也可以通过一些限制来处理。
下面,我们来使用CREATE TABLE命令创建一个表。 在这个命令里,你需要为声明新表的名称、各列的名称及数据类型。比如:
这样就创建了一个有两个列的名为my_first_table的默认格式表。第一个列的名字是first_column,数据 类型为text;第二个列的名字是second_column,数据类型是integer。
OushuDB现在支持多种存储格式:AO、ORC和Magma。AO是按行存储的格式,而ORC、Magma是按 行列存储的格式。 其中Magma 是在4.0.0.0发布的全新的存储格式。Magma和ORC都支持update/ delete, 且Magma还支持index。
这三种存储格式的特性支持情况如图所示,大家可以根据自己的需求来选择。
|
CREATE TABLE my_first_table (
first_column text,
second_column integer
); |
这三种不同的存储格式下,创建表的命令也有所区别,下面给出几个例子以供参考。
# 默认创建的是AO表
CREATE TABLE rank1 (id int, rank int, year smallint,gender char(1), count int );
# 和上面的创建的表一样,显式指定存储格式类型
CREATE TABLE rank2 (id int, rank int, year smallint,gender char(1), count int )
with (appendonly =true, orientation =row);
当我们不再需要一个表,那么可以用DROP TABLE命令删除它。如删除一个表名为my_first_table的表:
好的,学习以上内容,就可以完成一个表的创建了。
下面我们来说一下,在创建表时可以设置的缺省值和约束。




