PostgreSQL – 更改表
在 PostgreSQL 中,可以使用 ALTER TABLE 语句修改现有表的结构。
Syntax: ALTER TABLE table_name action;
PostgreSQL 支持使用 ALTER TABLE 执行的各种操作,如下所示:
- 向现有表中添加一列,如下所示:
ALTER TABLE table_name ADD COLUMN new_column_name TYPE;
- 从现有表中删除一列,如下所示:
ALTER TABLE table_name DROP COLUMN column_name;
- 重命名现有表中的列,如下所示:
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
- 更改现有表中列的默认值,如下所示:
ALTER TABLE table_name ALTER COLUMN column_name [SET DEFAULT value | DROP DEFAULT];
- 更改 NOT NULL 约束如下:
ALTER TABLE table_name ALTER COLUMN column_name [SET NOT NULL| DROP NOT NULL];
- 向列添加 CHECK 约束,如下所示:
ALTER TABLE table_name ADD CHECK expression;
- 添加约束如下:
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_definition;
- 将现有表重命名如下:
ALTER TABLE table_name RENAME TO new_table_name;
现在让我们看一个例子。出于同样的目的,让我们首先创建一个表(比如链接),我们可以在我们的示例中使用以下语句对其进行更改:
CREATE TABLE links (
link_id serial PRIMARY KEY,
title VARCHAR (512) NOT NULL,
url VARCHAR (1024) NOT NULL UNIQUE
);
例子:
在这个例子中,我们将在链接表中插入一个新列,如下所示:
ALTER TABLE links
ADD COLUMN active boolean;
以下语句从links
表中active
ALTER TABLE links
DROP COLUMN active;
title
列重命名link_title
,请使用以下语句:
ALTER TABLE links
RENAME COLUMN title TO link_title;
以下语句将一个名为target
的新列添加到links
表中:
ALTER TABLE links
ADD COLUMN target VARCHAR(10);
要将 _blank 设置为links
target
列的默认值,请使用以下语句:
ALTER TABLE links
ALTER COLUMN target
SET DEFAULT '_blank';
如果在没有为目标列指定值的情况下将新行插入到links
target
列将采用 _blank 作为默认值。为了演示,让我们插入一些数据,如下所示:
INSERT INTO links (link_title, url)
VALUES('PostgreSQL Tutorial', 'https://www.geeksforgeeks.org/');
从links表查询数据:
SELECT * FROM links;
输出: