PostgreSQL是一个关系数据库管理系统,即它是以集合理论为基础的系统,在实现上,它定义为一些二维表,表中包含数据行和具有严格数据类型的列。
扩展
自然语言解析、多维索引、地理查询、自定义数据类型等。
具有高级的事务处理能力,支持十几种不同语言的存储过程,能在各种平台上运行。PostgreSQL内置支持Unicode、序列、表继承、子查询,而且是市场上遵循ANSI SQL标准最好的关系数据库之一。它快速可靠,可以处理TB量级的数据。
创建一个名为book的数据库
createdb book
确保扩展包已经正确安装:
psql book -c "SELECT '1'::cube;"
服务进程默认监听5432端口,可以用psql这个命令行工具连接。
关系数据库的名称源于它们包含关系(即表),它们是元组(即行)的集合,元组又将属性映射到原子值
关系数据库的关系是因为它的数学基础,不是因为表通过外键彼此“关联”。
RDBMS 基于集合理论的为关系代数,它包括选择(WHERE…)、投影(SELECT…)、笛卡尔积(JOIN…)等操作。
关系查询的描述性远胜于此,它源于一个数学分支,名为元组关系演算,可以转换为关系代数。
psql book
输入‘h’,可以列出有关SQL命令的信息,? 列出以反斜杠开始的psql特有命令的帮助信息。
CREATE TABLE countries (
country_code char(2) PRIMARY KEY,
country_name text UNIQUE
);
INSERT INTO countries (country_code, country_name)
VALUES ('us','United States'), ('mx','Mexico'), ('au','Australia'),
('gb','United Kingdom'), ('de','Germany'), ('ll','Loompaland');
约束是PostgreSQL这样的关系数据库用来确保数据完整的方法。
CREATE TABLE cities (
name text NOT NULL,
postal_code varchar(9) CHECK (postal_code <> ''),
country_code char(2) REFERENCES countries,
PRIMARY KEY (country_code, postal_code)
);
cities表中的name列的约束是不允许其值为NULL的。
postal_code列的约束,是其值不能是空字符串(<>表示不等于)。
保持参照完整性
MATCH FULL是一个约束,确保两个值都存在,或两者均为NULL。
可以选择指定PostgreSQL在插入后返回一些列,方法是让请求以RETURNING语句结尾。
INSERT INTO venues (name, postal_code, country_code)
VALUES ('Voodoo Donuts', '97205', 'us') RETURNING venue_id;
id
– – – –
2
外联接是合并两张表的一种方式,不论另一张表中是否存在匹配的列值,第一张表的结果总是必须返回。
列出数据模式中的所有索引:
book=# di
本文链接:https://www.zhantian9.com/232774.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2000000@qq.com 举报,一经查实,本站将立刻删除。