postgresql字段新增、删除、增删约束、字段和表重命名

  • 新增字段
在t_test表里添加名为t1,类型为VARCHAR(10)的列
ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10);

如果列是整型可以VARCHAR(10)换成integer

ALTER TABLE t_test ADD COLUMN t2 integer;

如果加上非空约束或者默认值

ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10) not null;表示不能为空
ALTER TABLE t_test ADD COLUMN t1 VARCHAR(10) default '';表示默认值为字符串


  • 删除字段
删除t_test表里t1字段
ALTER TABLE t_test DROP COLUMN t1; 

如果t1字段被另外的表外键引用,直接执行删除会报错,需要使用cascade删除外键的依赖

ALTER TABLE t_test DROP COLUMN t1 cascade;

  • 增加约束
ALTER TABLE t_test ADD CHECK (t2 > 0);表示t2得大于0

ALTER TABLE t_test ADD CONSTRAINT unique_test_key UNIQUE(t1);表示t1是唯一约束


ALTER TABLE t_test ALTER COLUMN t1 SET NOT NULL;表示给t1增加非空约束

注意在添加这些约束的时候,前提是这些表里已存在的数据也符合这些约束,否则会失败
  • 删除约束
ALTER TABLE t_test DROP CONSTRAINT unique_test_key unique_test_key;表示删除t_test里名为unique_test_key的唯一约束

删除约束需要知道约束的名称,所以可以使用\d的命令查看有约束的名称,有点特殊的是非空的约束是没有名称的,但可以这样执行删除

ALTER TABLE t_test ALTER COLUMN t1 DROP CONSTRAINT NOT NULL;
  • 修改、删除默认值
ALTER TABLE t_test ALTER COLUMN t2 SET DEFAUL 1;表示给t2列设置默认值

ALTER TABLE t_test ALTER COLUMN t2 DROP DEFAUL;

  • 修改数据类型
ALTER TABLE t_test ALTER COLUMN t1 TYPE text;表示将t1的varchar类型转换成text类型

值得注意的是只有字段里的每个项都能隐式的转成新类型,这个操作才会成功
假如varchar(40)转成varchcar(10),如果有数据是长度是大于10的,那么转换就会失败
  • 重命名字段
ALTER TABLE t_test RENAME COLUMN t2 TO t3;
  • 重命名表
ALTER TABLE t_test RENAME TO t_test1;

你可能感兴趣的:(postgresql字段新增、删除、增删约束、字段和表重命名)