共计 1813 个字符,预计需要花费 5 分钟才能阅读完成。
关系型数据库中的表十分相似纸面上的一张表:它由行和列组成。列的数目和程序是固定的,每个列都有一个名字。行的数目是变动的 (它反映了给定时刻存储的数据量)。SQL 对表中行的程序没有任何规定。当读取一个表时,即将会以一个随机的程序呈现,除非你明确地要求排序。另外,SQL 并不给行赋予惟一的标识,因而咱们很可能在一个表中有好几个完全相同的行。这是作为 SQL 根底的上层数学模型的必然结果,然而这通常是咱们不违心看到的。
每个列都指定一个数据类型。数据类型限度着一个列所有可能值的汇合,并且限度着列中数据的语义,这样它就能够用于计算。比方,一个申明为数值类型的列不会承受任意文本字符串,而存储在这种列里的数据能够用于数学计算。相比之下,一个申明为字符串类型的列承受简直任意类型的数据,然而它们不能进行数学计算 (不过能够进行像字符串连贯之类的操作)。
OushuDB 蕴含一套可观的内置数据类型,这些类型能够实用于许多利用。用户也能够定义它们本人的数据类型。大多数内置的数据类型有不言而喻的名字和语义。罕用的数据类型有:用于整数的 integer、用于可能为分数的 numeric、用于字符串的 text、用于日期的 date、用于工夫的 time、用于工夫戳的 timestamp。
要创立一个表,可应用 CREATE TABLE 命令。在这个命令里,你至多要为新表申明一个名字,还有各列的名字以及其数据类型。比方:
CREATE TABLE my_first_table (first_column text,second_column integer);
这样就创立了一个有两个列的名为 my_first_table 的 Append-Only 表。第一个列的名字是 first_column,数据类型为 text;第二个列的名字是 second_column,数据类型是 integer。
表和列的名字遵循 http://www.oushu.com/docs/ch/… 外面解释的标识符语法。
创立 ORC 格局表的语法如下:
CREATE TABLE my_first_table (first_column text,second_column integer) WITH (APPENDONLY = true, OIDS = FALSE, ORIENTATION = orc);
创立 MAGMA 格局表的语法如下 (MAGMA 表在创立时能够申明主键,且主键必须为表级束缚,而且如果主键束缚的列中蕴含变长列,此列需搁置最初一列申明):
CREATE TABLE my_first_table (second_column integer,first_column text,primary key (second_column)) FORMAT ‘MAGMAAP’;
创立 PARQUET 格局表的语法如下:
CREATE TABLE my_first_table (first_column text,second_column integer) with (appendonly=true, orientation=parquet);
当然,后面只是十分虚构的例子。通常,你会给表和列取有意义的名字,用以表白他们存储什么类型的数据,所以还是让咱们给一个比拟事实的例子:
CREATE TABLE products (product_no integer,name text,price numeric);
numeric 类型能够存储分数局部,金额很可能有这样的分数局部。
提醒:
如果你创立了许多互相关联的表,那么最好为表和列抉择统一的命名模式。比方,表名字能够对立抉择复数或者复数。
一个表能蕴含的列数目是有限度的。依据列类型的不同,这个数目可能在 250 到 1600 之间。不过,不论是哪一个数目,你设计的表蕴含这么多的列的状况如同都很不可能产生,否则就是设计上有问题的体现。
如果你不再须要一个表,那么能够用 DROP TABLE 命令删除它。像这样:
DROP TABLE my_first_table;DROP TABLE products;
试图删除一个不存在的表是一个谬误。不过,在 SQL 脚本文件里,咱们通常在创立表之前无条件删除它并疏忽谬误音讯,所以无论要删除的表存不存在,这个脚本都胜利。当然你还能够应用 DROP TABLE IF EXISTS 来防止谬误音讯,不过这并不合乎 SQL 规范。
应用以上语法,咱们能够创立性能残缺的表。本章剩下的局部是无关向表定义中减少个性、保障数据完整性、安全性或便利性的内容。