1.视图
创建一个视图用来保存查询的中间结果,以后可以反复使用。
CREATE VIEW myview AS
SELECT city, temp_lo, temp_hi, prcp, date, location
FROM weather, cities
WHERE city = name;
SELECT * FROM myview;
2.外键约束
一个外键约束指定一列(或一组列)中的值必须匹配出现在另一个表中某些行的值。维持了两个关联表之间的引用完整性。
相当于你在外键表插入数据的时候,都会自动扫描一下主键所在的表,看该外键是否存在。
CREATE TABLE cities (
city varchar(80) primary key,
location point
);
CREATE TABLE weather (
city varchar(80) references cities(city),
temp_lo int,
temp_hi int,
prcp real,
date date
);
3.事务
一连串的命令,要么全部执行,要么全部不执行。避免中间某条命令出错,造成一部分命令执行另一部分命令不能执行。
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
-- etc etc
COMMIT;
4.窗口函数
单独的group by函数
SELECT depname, empno, salary, avg(salary) OVER (PARTITION BY depname) FROM empsal;
https://time-track.cn/postgresql-window-function.html
5.继承
CREATE TABLE cities (
name text,
population real,
altitude int -- (in ft)
);
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);
参考文献:
http://www.postgres.cn/docs/10/tutorial-views.html
http://www.postgres.cn/docs/10/tutorial-fk.html
http://www.postgres.cn/docs/10/ddl-constraints.html#DDL-CONSTRAINTS-FK