PostgreSQL 向现有表中添加生成的列

PostgreSQL 向现有表中添加生成的列

在本文中,我们将介绍如何向现有的 PostgreSQL 表中添加生成的列。生成的列是根据现有表中的其他列计算得出的值。通过添加生成的列,我们可以方便地从现有数据中派生出新的数据,无需手动计算并更新。

阅读更多:PostgreSQL 教程

1. 创建一个示例表

为了演示添加生成的列的过程,我们首先创建一个示例表。假设我们有一个名为 “employees” 的表,其中包含员工的姓名、薪水和奖金信息。下面是创建该表的 SQL 语句:

CREATE TABLE employees (
   id SERIAL PRIMARY KEY,
   name VARCHAR(100) NOT NULL,
   salary DECIMAL(10, 2) NOT NULL,
   bonus DECIMAL(10, 2) NOT NULL
);

2. 添加生成的列

现在假设我们想通过将薪水和奖金相加来计算每个员工的总收入,并将其作为一个新的生成的列添加到表中。我们可以使用以下 SQL 语句来添加生成的列:

ALTER TABLE employees ADD COLUMN total_income DECIMAL(10, 2) GENERATED ALWAYS AS (salary + bonus) STORED;

在上述语句中,我们使用 ALTER TABLE 命令将一个名为 “total_income” 的新列添加到 “employees” 表中。GENERATED ALWAYS 关键字表示该列是由计算生成的,AS (salary + bonus) 表示生成列的计算逻辑,将薪水和奖金相加即可。STORED 关键字表示该生成的值将被存储,以便在查询中进行访问。

3. 查询生成的列

添加生成的列后,我们可以像查询普通列一样查询它。例如,我们可以使用以下 SQL 语句查找总收入超过 5000 的员工:

SELECT name, total_income
FROM employees
WHERE total_income > 5000;

通过查询生成的列,我们可以轻松地获得派生数据。这使得我们能够更方便地进行数据分析和报告生成等任务。

4. 更新生成的列

当表中的其他列发生变化时,生成的列也会自动更新。例如,如果某个员工的薪水或奖金发生了变化,生成的列 “total_income” 将自动重新计算并更新存储的数值。

5. 移除生成的列

如果我们决定不再需要生成的列,可以使用 ALTER TABLE 命令将其从表中移除。以下是移除生成的列的 SQL 语句示例:

ALTER TABLE employees DROP COLUMN total_income;

上述语句将从 “employees” 表中移除名为 “total_income” 的生成的列。

总结

在本文中,我们介绍了如何向现有的 PostgreSQL 表中添加生成的列。通过添加生成的列,我们可以轻松地从现有数据中派生出新的数据,无需手动计算和维护。生成的列可以通过简单的 SQL 语句添加和移除,并且会自动更新当表中的其他列发生变化时。这为我们进行数据分析和报告生成等任务提供了便利,并提高了数据的可访问性和可用性。希望本文能帮助您在 PostgreSQL 中有效地使用生成的列。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程