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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,451评论 0 9
  • 作者:烨竹 数据库的基本操作 登陆MySQL数据库服务:mysql -h服务器地址 -P端口号 -u用户名 ...
    DragonRat阅读 1,395评论 0 7
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 1,187评论 0 4
  • 在PostgreSQL中,数据就是存放在数据表中,在一张数据表中,每一列就是一个字段,即表示哪种类型的数据。每一行...
    shark_tear阅读 1,001评论 0 1
  • 山竹将要来临,沉醉的夜里,呼呼声不断,为做清洗前的最后准备,全城准备着,心里悬着的便是那些即将被台风洗劫的固定不动...
    藏拾叁阅读 185评论 0 0