PostgreSql 数据库对象操作——表

这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战

更改表属性

超级用户执行

ALTER TABLE table_name RENAME TO new_name;
ALTER TABLE table_name SET SCHEMA new_schema;
ALTER TABLE table_name OWNER TO role_name;
ALTER TABLE table_name SET TABLESPACE tablespace_name;
复制代码

table_name:表名。
RENAME TO new_name:重命名表名。
SET SCHEMA new_schema:把该表移动到另一个模式中。相关的该表列拥有的索引、约束和序列也会被移动。
OWNER TO role_name:更改 owner。
SET TABLESPACE tablespace_name:把该表移动到另一个表空间中。相关的该表列拥有的索引、约束和序列也会被移动。

更改表字段

超级用户或表 owner 执行

ALTER TABLE table_name ADD column_name datatype;
ALTER TABLE table_name DROP column_name;
ALTER TABLE table_name ALTER column_name TYPE datatype;
ALTER TABLE table_name RENAME column_name TO new_column_name;
ALTER TABLE table_name ALTER column_name {SET|DROP} NOT NULL;
ALTER TABLE table_name ALTER column_name SET DEFAULT expression;
复制代码

ADD column_name datatype:增加字段。
DROP column_name:删除字段。涉及到该列的索引和表约束也将会被自动删除。如果该列的移除会导致引用它的多元统计信息仅包含单一列的数据,则该多元统计信息也将被移除。如果在该表之外有任何东西(例如外键引用或者视图)依赖 于该列,你将需要用到 CASCADE
ALTER column_name TYPE datatype:修改字段类型。涉及到该列的索引和简单表约束将通过 重新解析最初提供的表达式被自动转换为使用新的列类型。可选的 COLLATE子句为新列指定一种排序规则,如果被省略, 排序规则会是新列类型的默认排序规则。可选的USING 子句指定如何从旧的列值计算新列值,如果被省略,默认的转换和从旧类型 到新类型的赋值造型一样。如果没有从旧类型到新类型的隐式或者赋值造型, 则必须提供一个USING子句。
RENAME column_name TO new_column_name:修改字段名。
ALTER column_name {SET|DROP} NOT NULL:设置/删除字段非空。
SET DEFAULT expression:设置字段默认值。

更改表约束

超级用户或表 owner 执行

ALTER TABLE table_name RENAME CONSTRAINT constraint_name TO new_constraint_name;
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY(id);
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(id);
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(id > 100);
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY(id) REFERENCES reftable(id);
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
复制代码

RENAME CONSTRAINT constraint_name TO new_constraint_name:更改约束名。
ADD CONSTRAINT constraint_name PRIMARY KEY(id):增加主键约束。一个表中主键约束只能有一个。
ADD CONSTRAINT constraint_name UNIQUE(id):增加唯一约束。
ADD CONSTRAINT constraint_name CHECK(id > 100):增加检查约束。
ADD CONSTRAINT constraint_name FOREIGN KEY(id) REFERENCES reftable(id):增加外键约束。
DROP CONSTRAINT constraint_name:删除约束。

猜你喜欢

转载自juejin.im/post/7033665742356774925