📜  PostgreSQL更新

📅  最后修改于: 2020-11-30 08:40:28             🧑  作者: Mango

PostgreSQL更新

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

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

更新命令的语法

update命令的语法如下:

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

我们有以下参数,在以上语法中使用:

Parameters Description
Update It is a keyword, which is used to update the rows of a table.
Table_name After the UPDATE clause, we will use this parameter to define the table name to update the data.
Column1 = value1,

Column2 = value2,
……
ColumnN = valueN
It is used to describe a column’s name in a table whose values need to be modified in the SET clause. We can use the comma (,) to separate every pair of the column and values.
Where We will use the WHERE clause to filter the records and fetch only the essential records.
Condition It is an expression, which is used to return a value of type Boolean. And this expression returns true only for rows.

PostgreSQL更新命令示例

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

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

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

SELECT * FROM department;

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

PostgreSQL UPDATE表的示例

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

UPDATE department
SET last_update = DEFAULT
WHERE
last_update IS NULL;

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

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

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

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

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

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

执行完上述查询后,它将更新部门表中的location列:

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

select* from department;

在同一张表中,我们还可以从其他列中更新列的数据。

以下命令用于将dept_name列的值复制到部门的description列:

UPDATE department
SET description = dept_name;

一旦执行上述查询,它将更新Department表中的description列:

之后,我们将使用select命令在部门表中查看更新的列(说明):

PostgreSQL更新联接命令示例

在这里,我们将使用department_tmp表,该表具有与department表相同的结构:

下面的命令来更新值,其中来自部门表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表:

要验证department_tmp表,我们将使用Select命令:

SELECT * FROM department_tmp; 

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


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

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

通过返回条件更新命令

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

以下命令用于更新部门表中具有Dept_id 1的行并返回更新的数据

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

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

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

SELECT
*
FROM
department
WHERE
dept_id = 1;

一旦运行上面的Select查询,我们将得到以下输出: