OushuDB 创建和管理表的基本结构之表的基本概念

简介: OushuDB 创建和管理表的基本结构之表的基本概念

image.png


关系型数据库中的表非常类似纸面上的一张表:它由行和列组成。列的数目和顺序是固定的,每个列都有一个名字。行的数目是变化的(它反映了给定时刻存储的数据量)。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 标准。

使用以上语法,我们可以创建功能完整的表。本章剩下的部分是有关向表定义中增加特性、保证数据完整性、安全性或便利性的内容。

目录
相关文章
|
9月前
|
SQL 存储 关系型数据库
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~1
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~
|
9月前
|
SQL 存储 关系型数据库
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~3
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~
OushuDB 产品基本介绍——表(下)
OushuDB 产品基本介绍——表(下)
52 0
|
存储 数据库 索引
【系统架构】数据库中建立索引的顺序
【系统架构】数据库中建立索引的顺序
136 0
|
存储 SQL NoSQL
OushuDB 产品基本介绍——表(上)
OushuDB 产品基本介绍——表
74 0
|
SQL 存储 关系型数据库
OushuDB 创建和管理表的基本结构之表的基本概念
关系型数据库中的表非常类似纸面上的一张表:它由行和列组成。列的数目和顺序是固定的,每个列都有一个名字。行的数目是变化的(它反映了给定时刻存储的数据量)。SQL 对表中行的顺序没有任何规定。当读取一个表时,行将会以一个随机的顺序出现,除非你明确地要求排序。另外,SQL 并不给行赋予唯一的标识,因此我们很可能在一个表中有好几个完全相同的行。这是作为 SQL 基础的下层数学模型的必然结果,但是这通常是我们不愿意看到的。
107 0
OushuDB 创建和管理表的基本结构之表的基本概念
|
存储 SQL NoSQL
OushuDB 表介绍
OushuDB表由行(rows)和(columns)组成。每一个列有一个列名和一个数据类型,一个表的列数和列的顺序是固定的。一个表的行数是可变的。SQL并不假设表中行的顺序。当读一个表时,除非显示要求排序,返回的行会以任意顺序出现。另外,SQL并不给每一行一个唯一标志符,所以,一个表中具有同样几个同样的行是可能的。
129 0
OushuDB 表介绍
|
数据库
【自然框架】元数据的数据库结构的详细说明和示例(三):项目与数据库字段的关联
【自然框架】PowerDesigner 格式的元数据的表结构 【自然框架】元数据的数据库结构的详细说明和示例(一):项目描述部分 【自然框架】元数据的数据库结构的详细说明和示例(二):数据库描述部分     1、Manage_FunListCol(列表用字段) 字段名...
955 0
|
数据库
【自然框架.视频】基础设置(二)下载演示程序用的数据库,和数据表结构简介
  本来想这个月做一套视频演示的,但是现在看来是做不出来了。客观原因是家里拆迁、买房子、搬家,确实有点忙;主观原因是自己还是比较懒。     虽然有客观原因,但是主要的还是主观原因。既然没做好,那就不要找理由,而要为能够做好找点方法!     今天是第二个视频—— demo用的数据库的下载,下载后附加数据库以及数据库里表(元数据、人员、角色等)的简介。
722 0