postgresql alter table命令用于添加,删除或修改现有表中的列。您还可以使用alter table
命令在现有表上添加和删除各种约束。
语法:
使用alter table
语句在现有表中添加新列的基本语法如下:
alter table table_name add column_name datatype;
现有表中alter table
到drop column
(删除某个字段)的基本语法如下:
alter table table_name drop column column_name;
alter table
更改表中列的data type
(修改字段类型)的基本语法如下:
alter table table_name alter column column_name type datatype;
alter table
向表中的列添加not null
约束的基本语法如下:
alter table table_name modify column_name datatype not null;
alter table
添加唯一约束add unique constraint
到表中的基本语法如下:
alter table table_name
add constraint myuniqueconstraint unique(column1, column2...);
alter table
将“检查约束”添加到表中的基本语法如下所示:
alter table table_name
add constraint myuniqueconstraint check (condition);
alter table
添加主键add primary key
约束的基本语法如下:
alter table table_name
add constraint myprimarykey primary key (column1, column2...);
使用alter table
从表中删除约束(drop constraint
)的基本语法如下:
alter table table_name
drop constraint myuniqueconstraint;
使用alter table
从表中删除主键约束(drop primary key
)约束的基本语法如下:
alter table table_name
drop constraint myprimarykey;
考虑一个表 - company
有以下记录:
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | paul | 32 | california| 20000
2 | allen | 25 | texas | 15000
3 | teddy | 23 | norway | 20000
4 | mark | 25 | rich-mond | 65000
5 | david | 27 | texas | 85000
6 | kim | 22 | south-hall| 45000
7 | james | 24 | houston | 10000
以下是向现有的company
表中添加新列的示例:
h3_db=# alter table company add gender char(1);
现在,company
表被更改,以下使用select
语句输出:
id | name | age | address | salary | gender
----+-------+-----+-------------+--------+--------
1 | paul | 32 | california | 20000 |
2 | allen | 25 | texas | 15000 |
3 | teddy | 23 | norway | 20000 |
4 | mark | 25 | rich-mond | 65000 |
5 | david | 27 | texas | 85000 |
6 | kim | 22 | south-hall | 45000 |
7 | james | 24 | houston | 10000 |
(7 rows)
以下是现有表中删除 gender
列的示例:
h3_db=# alter table company drop gender;
现在,company
表被更改,以下将从select
语句输出:
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | paul | 32 | california| 20000
2 | allen | 25 | texas | 15000
3 | teddy | 23 | norway | 20000
4 | mark | 25 | rich-mond | 65000
5 | david | 27 | texas | 85000
6 | kim | 22 | south-hall| 45000
7 | james | 24 | houston | 10000