对修改表都需要使用ALTER TABLE命令
增加字段
ALTER TABLE table_name ADD COLUMN column_name varchar(10);
ALTER TABLE table_name ADD COLUMN column_name varchar(10) DEFAULT '1'::character varying NOT NULL;
删除字段
ALTER TABLE table_name DROP COLUMN column_name;
不管字段里有啥数据,都会消失,和这个字段相关的约束也会被删除。不过, 如果这个
字段被另一个表的外键约束所引用,PostgreSQL 则不会隐含地删除该约束。你可以通过使用CASCADE指明删除任何依赖该字段的东西:
ALTER TABLE table_name DROP COLUMN column_name CASCADE;
修改字段类型
ALTER TABLE table_name ALTER COLUMN column_name TYPE varchar(10);
注意此种只能修改可以隐含的转换成新类型时才可能成功。需要强转时例如varchar转int,需要用到using。
ALTER TABLE table_name ALTER COLUMN column_name TYPE INTEGER USING column_name ::INTEGER ;
重命名字段
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;
改变字段的默认值
修改或增加默认值
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT value ;
注意这么做不会影响任何表中现有的数据行,它只是为将来的INSERT命令改变默认值。
删除默认值
ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT ;