PostgreSQL ALTER TABLE 命令
PostgreSQL ALTER TABLE 命令
在 PostgreSQL 中,ALTER TABLE 命令可以用于修改一个已经存在的表。通过 ALTER TABLE 命令,可以添加、修改或删除表的列,添加或删除约束,修改表的相关设置等。
语法
下面是 ALTER TABLE 命令的基本语法:
ALTER TABLE table_name action
其中,table_name 是要修改的表的名称,action 是修改的动作,可以是以下任意一项:
- ADD COLUMN: 添加新列
- ALTER COLUMN: 修改列属性
- DROP COLUMN: 删除列
- ADD CONSTRAINT: 添加约束
- DROP CONSTRAINT: 删除约束
- RENAME TO: 修改表名
- SET TABLESPACE : 修改表空间
- ADD PARTITION : 添加分区
- DROP PARTITION : 删除分区
添加新列
可以通过 ALTER TABLE 命令的 ADD COLUMN 子句添加新列,语法如下:
ALTER TABLE table_name ADD COLUMN column_name column_type [column_constraint];
其中,column_name 是要添加的新列的名称,column_type 是新列的数据类型,column_constraint 是可选的列约束条件(如 NOT NULL 等)。
例如,添加一个名为 age 的年龄列,类型为 INTEGER,非空,可以这么做:
ALTER TABLE student ADD COLUMN age INTEGER NOT NULL;
修改列属性
使用 ALTER TABLE 命令的 ALTER COLUMN 子句可以修改一个已经存在的列的属性,例如修改列类型、修改列名等。语法如下:
ALTER TABLE table_name ALTER COLUMN column_name action;
其中,column_name 是要修改属性的列的名称,action 是所要执行的修改操作,可以是以下任意一项:
- SET DATA TYPE: 修改列数据类型
- RENAME TO: 修改列名
例如,将 student 表中的 age 列的数据类型从 INTEGER 改为 BIGINT,可以执行以下命令:
ALTER TABLE student ALTER COLUMN age SET DATA TYPE BIGINT;
删除列
使用 ALTER TABLE 命令的 DROP COLUMN 子句可以删除一个表中的列。语法如下:
ALTER TABLE table_name DROP COLUMN column_name;
其中,column_name 是要删除的列的名称。
例如,删除 student 表中的 age 列,可以执行以下命令:
ALTER TABLE student DROP COLUMN age;
添加约束
使用 ALTER TABLE 命令的 ADD CONSTRAINT 子句可以添加约束条件。语法如下:
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type (constraint_attributes);
其中,constraint_name 是约束名称,constraint_type 是约束类型,如 UNIQUE、PRIMARY KEY、FOREIGN KEY,constraint_attributes 是约束的属性。
例如,给 student 表的 id 列添加主键约束,可以这么做:
ALTER TABLE student ADD CONSTRAINT student_pkey PRIMARY KEY (id);
删除约束
使用 ALTER TABLE 命令的 DROP CONSTRAINT 子句可以删除一个表的约束。语法如下:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
其中,constraint_name 是要删除的约束名称。
例如,删除 student 表的主键约束,可以这么做:
ALTER TABLE student DROP CONSTRAINT student_pkey;
修改表名
使用 ALTER TABLE 命令的 RENAME TO 子句可以修改表的名称。语法如下:
ALTER TABLE table_name RENAME TO new_table_name;
其中,new_table_name 是新表的名称。
例如,将 student 表重命名为 teacher 表,可以这么做:
ALTER TABLE student RENAME TO teacher;
修改表空间
使用 ALTER TABLE 命令的 SET TABLESPACE 子句可以将表移动到不同的表空间。语法如下:
ALTER TABLE table_name SET TABLESPACE tablespace_name;
其中,tablespace_name 是目标表空间的名称。
例如,将 student 表移动到新的表空间 my_space,可以这么做:
ALTER TABLE student SET TABLESPACE my_space;
添加分区
使用 ALTER TABLE 命令的 ADD PARTITION 子句可以添加新的分区。语法如下:
ALTER TABLE table_name ADD PARTITION partition_name VALUES FROM (value1) TO (value2);
其中,partition_name 是新分区的名称,value1 和 value2 是划分分区的值。
例如,对 student 表按成绩划分分区,将 60 分及以下的学生划分到 low_score 分区,成绩在 60 到 90 分之间的学生划分到 mid_score 分区,成绩大于 90 分的学生划分到 high_score 分区,可以这么做:
ALTER TABLE student ADD PARTITION low_score VALUES FROM (MINVALUE) TO (59);
ALTER TABLE student ADD PARTITION mid_score VALUES FROM (60) TO (90);
ALTER TABLE student ADD PARTITION high_score VALUES FROM (91) TO (MAXVALUE);
删除分区
使用 ALTER TABLE 命令的 DROP PARTITION 子句可以删除指定的分区。语法如下:
ALTER TABLE table_name DROP PARTITION partition_name;
例如,删除 student 表的 low_score 分区,可以这么做:
ALTER TABLE student DROP PARTITION low_score;
总结
ALTER TABLE 命令是 PostgreSQL 中最常用的命令之一。通过 ALTER TABLE 命令,可以对表的结构进行修改,增加或删除列、添加或删除约束等。在实际应用中,需要根据具体业务需求进行操作。