📅  最后修改于: 2020-11-30 08:40:28             🧑  作者: Mango
在本教程中,我们将学习用于更新表中当前数据的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 Update命令的示例。
我们将使用在插入命令部分中创建的部门表。
首先,我们将在以下命令的帮助下看到部门表的结构:
SELECT * FROM department;
执行select命令后,我们将得到以下结果:
在这里,我们将使用以下命令的帮助将last_update列的NULL值修改为当前日期:
UPDATE department
SET last_update = DEFAULT
WHERE
last_update IS NULL;
执行上面的命令后,我们将得到以下结果:
在上面的查询中,我们将DEFAULT关键字应用于采用默认值的当前日期的last_update列。并且WHERE子句仅更新last_update列值为NULL的那些行。
要将部门表中所有行的位置列中的值更新为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命令在部门表中查看更新的列(说明):
在这里,我们将使用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查询,我们将得到以下输出: