CREATE TABLE语法
CREATE [[ GLOBAL | LOCAL ]{ TEMPORARY | TEMP }] TABLE table_name
(
{ column_name data_type [ DEFAULT default_expr ][ column_constraint [...]]
| table_constraint
| LIKE parent_table [{ INCLUDING | EXCLUDING } DEFAULTS ]
}[,...]
)
[ INHERITS ( parent_table [,...])]
[ WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP }]
[ TABLESPACE tablespace ]
紧跟在字段定义后
column_constraint |
和字段定义并列写在表定义中(约束子句)
table_constraint |
|
|
[CONSTRAINT constraint_name] CHECK (expression) |
[CONSTRAINT constraint_name] CHECK ( expression ) |
表约 束 |
检查 |
NOT NULL | NULL |
|
字段 约束 (修 饰词) |
非空 |
[CONSTRAINT constraint_name] CHECK (colunmn is not null) |
[CONSTRAINT constraint_name] CHECK (colunmn is not null) |
表约 束 |
非空 |
UNIQUE [USING INDEX TABLESPACE tablespace] |
[CONSTRAINT constraint_name] UNIQUE (column_name [,...]) [USING INDEX TABLESPACE tablespace] |
表索 引约 束 |
惟一 |
[CONSTRAINT constraint_name] REFERENCES ref_table [( ref_column )] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ][ ON UPDATE action ] |
[CONSTRAINT constraint_name] FOREIGN KEY ( column_name [,...]) REFERENCES ref_table [( ref_column [,...])] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ][ ON UPDATE action ] |
表外 键 |
外键 |
ADD [ COLUMN ] column type [ column_constraint [...]] ALTER [ COLUMN ] column SET DEFAULT expression ALTER [ COLUMN ] column DROP DEFAULT ALTER [ COLUMN ] column { SET | DROP } NOT NULL |
ADD table_constraint DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ] CLUSTER ON index_name |
相关 DDL |
|
非空约束not null有两种方式实现,一种是修饰词“非空”,如
creata table a(a int not null);
alter table a alter a drop not null;
一种是check,而check又分为字段约束和表约束,如
create table a(a int check(a is not null));
alter table a drop constraint a_a_check;
默认值default 也是经过alter语句的set和drop来进行修改的。
惟一约束unique 能够经过DROP CONSTRAINT 约束名称来删除。
在使用alter table 语句添加新字段的时候只能使用column_constraint,只有单纯添加约束才能使用table_constraint,两种状况下unique约束就存在区别。