PostgreSQL

来源:互联网 发布:计算机专业不想编程 编辑:程序博客网 时间:2024/06/11 19:16

PostgreSQL支持大部分SQL标准并且提供了很多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。

PostgreSQL是支持平台最多的数据库管理系统。

1  连接

内连接(自然连接):只有两个表想匹配的行才能在结果集中出现。例如:

SELECT *    FROM weather, cities    WHERE city = name;
     city      | temp_lo | temp_hi | prcp |    date    |     name      | location---------------+---------+---------+------+------------+---------------+----------- San Francisco |      46 |      50 | 0.25 | 1994-11-27 | San Francisco | (-194,53) San Francisco |      43 |      57 |    0 | 1994-11-29 | San Francisco | (-194,53)

或者:

SELECT *    FROM weather INNER JOIN cities ON (weather.city = cities.name);

外连接:包含左外连接(左边的表不加限制)、右外连接(右边的表不加限制)、全外连接(左右表都不加限制)。

左外连接:

SELECT *    FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);     city      | temp_lo | temp_hi | prcp |    date    |     name      | location---------------+---------+---------+------+------------+---------------+----------- Hayward       |      37 |      54 |      | 1994-11-29 |               | San Francisco |      46 |      50 | 0.25 | 1994-11-27 | San Francisco | (-194,53) San Francisco |      43 |      57 |    0 | 1994-11-29 | San Francisco | (-194,53)
这个查询是一个左外连接,因为连接操作符(LEFT OUTER JOIN)左边的表中的行在输出中至少出现一次,而右边的表中的行只输出那些与左边的表有匹配的行。如果输出的左表中的行没有右表中的行与其对应,那么右表中的字段将填充为 NULL 。

自连接:连接发生在一张基表内。


2 继承

CREATE TABLE cities (      --城市  name       text,  population real,  altitude   int     -- (单位是英尺));CREATE TABLE capitals (   --首都  state      char(2)) INHERITS (cities)

SELECT name, altitude         FROM ONLY cities      ---cities 前面的 ONLY 指示系统只对 cities 表运行查询,而不包括继承级别中低于 cities 的表。    WHERE altitude > 500;

3  写法

标识符和关键字大小写无关,故

UPDATE MY_TABLE SET A = 5;

也可以等效地写成

uPDaTE my_TabLE SeT a = 5;

一种好习惯是把关键字写成大写,而名字等用小写:

UPDATE my_table SET a = 5;


注:

1 并发控制,保证了ACID,其中原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

2 多版本并发控制(MVCC,Multiversion concurrency control)

0 0