数据定义
在关系型数据库中,裸数据是存储在表中的。
表中存储的数据有什么特性。
表如何组织层模式?
如何给表赋予权限。
影响数据存储的其他因素,有继承,视图,函数,触发器。
这些都需要我们去理解。
表的基本概念
关系型数据库中的表类似我们的Excel,他是由行和列组成的。字段的树木和顺序是固定的,每个字段都有一个名字。行的数组是变化的。sql对表中行的顺序没有任何承诺。当读取一个表时,行将会以一个未指定的顺序出现,除非你明确的要求排序。另外,sql并不给行赋予唯一的标识,因此我们很可能在一个表中有好几个完全相同的行。
每个字段都有一个数据类型。数据类型控制着一个字段所有可能值的集合,并且控制着字段中数据的语义,这样它就可以用于计算。比如,一个声明为数值类型的字段,不会接受任意文本字符串,而存储在这种字段里的数据可以用于数学计算。相比之下,一个声明为字符串类型的字段,接受几乎任意类型的数据,但是它们不能进行进行数学计算。
postgresql包含一套可剪裁的内置数据类型,这些类型可以适用于许多应用。用户也可以定义它们的数据类型。大多数内置的数据类型有显而易见的名字和语义。
常用的数据类型有:
用于整数的integer,
用于可能为分数的numeric,
用于自妇产的text,
用于日期的date,
用于时间的time,
用于时间戳的timestamp。
要创建一个表,可以使用create table命令。在这个命令中,我们至少要为新表声明一个名字,还有各个字段的名字以及其数据类型。
案例:
create table my_first_table(
fist_column text,
second_column integer
);
如上sql,创建了一个有两个字段,名为my_first_table的表。第一个字段的名称是first_column,数据类型是text,…,类型名通常也是标识符,注意字段列表是逗号分隔的,并且用圆括号包围。
通常我们会根据需求来给表中的字段取有意义的名字,用以表达他们存储的什么类型的数据。
案例:
create table products(
product_no integer,
name text,
price numeric
);
其中numeric类型可以存储分数部分,金额很可能有这样的分数部分。
注意:当我们在创建多个相互关联的表时,最好为表和字段选择一直的命名模式,比如表名字可以统一选择单数,或者复数。
当我们不在需要某张表时,可以通过drop table 命令删除它。
案例:
drop table my_first_table;
drop table products;