distinct [column1] |[column2]|…
distinct 表示查询不重复的元素,如上的话,表示column 1 和column2 同时不重复的数据。
外键设置
参考资料:
http://blog.csdn.net/wujiang88/article/details/51578794
表 products
CREATETABLE
products (
product_no integer PRIMARY KEY,
name text,
price numeric
);
方式1
CREATETABLE
orders (
order_id integer PRIMARY KEY,
product_no integer REFERENCES products (product_no),
quantity integer
);
方式二:
CREATETABLE
orders (
order_idintegerPRIMARY KEY,
product_nointeger,
CONSTRAINTorder_product_fk
FOREIGNKEY (product_no) REFERENCES products (product_no),
quantity integer
);
外键约束之表约束写法完整语法:
[ CONSTRAINT constraint_name ] FOREIGN KEY ( column_name [, … ] ) REFERENCES reftable [ ( refcolumn [, … ] ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ]
[ ON DELETE action ] [ ON UPDATE action ]
当删除被引用行或者更新被引用列时,对于引用表或引用列,不同的action有不同的行为。可用的action如下:
NO ACTION
如果违反外键约束会产生一个错误。如果约束被延迟,那么到事务结束检查约束时如果仍然因为存在一个引用行而违反外键约束,则仍会产生错误。这是默认值。其他的动作action都不能被延迟。
RESTRICT
违反外键约束会产生一个错误。
CASCADE
级联删除或更新。分别删除一个引用行或者更新一个引用列的值。
SET NULL
设置引用列(referencing column(s))的值为null
SET DEFAULT
设置引用列为其缺省值。如果缺省值不是null,那么仍然需要被引用表中有一条记录的被引用字段的值与之匹配,否则操作会失败。
[ MATCH matchtype ]
当向引用表的引用列(referencing column(s))插入数据时,根据给定的匹配规则matchtype匹配被引用表的被引用列的值。匹配规则如下:
MATCH FULL
不允许多列外键约束中的任何一个为null,除非他们全部为null,这样不要求被引用表中有与其匹配的数据。
MATCH PARTIAL
此特性尚未实现
MATCH SIMPLE
这是默认值。允许外键约束中的任何一列为null,只要外键约束中的一列为null,则不要求与被引用表相匹配。
外键约束也可以引用自身表中的字段。