PostgreSQL 更新


PostgreSQL 更新

在本教程中,我们将学习用于更新表中当前数据的PostgreSQL UPDATE命令。

在PostgreSQL 中,UPDATE 命令用于更改表中的现有记录。要更新选定的行,我们必须使用WHERE 子句);否则,所有行都将被更新。

更新命令的语法

更新命令的语法如下:

UPDATE table_name    
SET column1 = value1,   
column2 = value2....,   
columnN = valueN    
WHERE   
condition;

我们有以下参数,用于上述语法:

参数 描述
Update 它是一个关键字,用于更新表的行。
Table_name 在 UPDATE 子句之后,我们将使用这个参数来定义更新数据的表名
Column1 = value1, Column2 = value2, ...... ColumnN = valueN 它用于描述表中需要在SET子句中修改其值的列名。我们可以使用逗号 (,)来分隔每一对column 和 values
Where 我们将使用WHERE 子句来过滤记录并只获取必要的记录。
Condition 它是一个表达式,用于返回Boolean类型的。并且此表达式仅对行返回true

PostgreSQL 更新命令示例

为了更好地理解,我们将看到PostgreSQL更新命令的示例。

我们将采用我们在插入命令部分创建的部门表

首先,我们将在以下命令的帮助下看到部门表的结构:

  1. SELECT * FROM 部门;

执行select命令后,我们将得到以下结果:

PostgreSQL 更新

PostgreSQL UPDATE 表示例

在这里,我们将使用以下命令的帮助将last_update列的NULL值修改为当前日期

UPDATE department  
SET last_update = DEFAULT  
WHERE  
last_update IS NULL;

执行上述命令后,我们将得到以下结果:

PostgreSQL 更新

在上面的查询中,我们将DEFAULT 关键字应用于last_update列,该列将当前日期作为默认值。并且WHERE 子句仅更新last_update列值为NULL 的那些行。

使用 Update 命令升级表中所有行的示例

要将部门表中所有行的位置列中的值更新为USA,我们使用以下命令:

注意:在下面的更新命令中,我们忽略了 WHERE 子句:

UPDATE department  
SET location = 'U.S.A';

在执行上面的查询后,将更新位置列部门表:

PostgreSQL 更新

我们将使用select命令在部门表中验证上述命令的输出

select* from department;

PostgreSQL 更新

在同一个表中,我们还可以从附加列更新列的数据。

下面的命令用于复制DEPT_NAME列值的描述栏的的部门表:

UPDATE department  
SET description = dept_name;

一旦我们执行上面的查询,将更新的描述列部门表:

PostgreSQL 更新

在那之后,我们将使用选择命令来查看更新的列(介绍)部门表:

PostgreSQL 更新

PostgreSQL 更新连接命令示例

在这里,我们将采取department_tmp表,它具有相同的结构部门表:

以下命令用于更新来自于Department_tmp 表中列的部门表的值:

UPDATE department_tmp  
SET location = department.location,  
description = department.description,  
last_update = department.last_update  
FROM  
department  
WHERE  
department_tmp.Dept_id = department.Dept_id;

一旦我们执行了上面的查询,它就会更新department_tmp表:

PostgreSQL 更新

为了验证Department_tmp表,我们将使用Select命令:

SELECT * FROM department_tmp;

并且,我们将得到以下输出:

PostgreSQL 更新

注意:在上面的update命令中,我们使用了FROM子句来描述更新中包含的第二个表(部门)。

这里我们在WHERE 子句中使用了连接条件。有时,此 UPDATE 命令被称为UPDATE INNER JOIN 或 UPDATE JOIN,因为UPDATE命令中涉及两个或多个表。

通过返回条件更新命令

默认情况下,更新命令可以返回受影响的行数,并且在返回部分的帮助下也返回有效数据。

下面的命令来更新与该行DEPT_ID 1部门表并返回更新的数据

UPDATE department  
SET description = 'Names of departments',  
location = 'NewYork'  
WHERE  
dept_id = 1   
RETURNING dept_id,  
description,  
location;

执行上述命令后,我们将得到下表结构:

PostgreSQL 更新

之后,我们将使用select命令检查部门表中更新的数据

SELECT  
*  
FROM  
department  
WHERE  
dept_id = 1;

运行上面的 Select 查询后,我们会得到以下输出:

PostgreSQL 更新