更新PostgreSQL数据

修改已经存储在数据库中的数据的行为叫做更新。你可以更新单独的一行,也可以更新表中所有的行,还可以更新其中的一部分行。我们可以独立地更新每个字段,而其它的字段则不受影响。

要更新现有的行,使用UPDATE命令。这需要三种信息:

  1. 表的名字和要更新的字段名
  2. 字段的新值
  3. 要更新哪些行

SQL通常并不为数据行提供唯一标识。因此我们无法直接声明需要更新哪一行。但是,我们可以通过声明一个被更新的行必须满足的条件。只有在表里存在主键的时候 (不依赖于你是否声明它),我们才能通过选取匹配主键的条件可靠地指定一个独立的行。图形化的数据库访问工具依赖上述方法来让我们可以独立地更新某些行。

比如,这条命令将所有价格为 5 的产品重定价为 10 :

UPDATE products SET price = 10 WHERE price = 5;

这样做可能导致零行、一行或多行数据被更新。如果我们试图执行一个不匹配任何行的更新,那也不算错。

让我们仔细看看这个命令。首先是关键字UPDATE后面紧跟着表名。和平常一样,表名也可以是用模式修饰的,否则就会从模式路径中把它找出来。然后是关键字SET跟着字段名与一个等号以及新的字段值。新的字段值可以是任意标量表达式,而不仅仅是常量。比如,如果你想把所有产品的价格提高 10% ,可以用:

UPDATE products SET price = price * 1.10;

如你所见,新值的表达式也可以引用行中现有的数值。我们还忽略了WHERE 子句。如果我们忽略了这个子句,那么表中所有的行都要被更新。如果出现了WHERE子句,那么只有匹配其条件的行才会被更新。请注意在SET子句中的等号是一个赋值,而在WHERE 子句中的等号是比较,不过这样并不会导致任何歧义。当然WHERE 条件不一定非得是等式判断。也可以使用很多其他的操作符。但是表达式必须得出一个布尔结果。

你还可以在一个UPDATE命令中更新更多的字段,方法是在SET子句中列出更多赋值语句。比如:

UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;
时间: 2024-08-13 17:48:21

更新PostgreSQL数据的相关文章

MVC5+EF6--8 更新关联数据

近期学习MVC5+EF6,找到了Microsoft的原文,一个非常棒的系列,Getting Started with Entity Framework 6 Code First using MVC 5,网址:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-appli

arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤

转自原文 arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤 Arcgis server  发布动态图层及调用动态图层 做这个动态图层功能的原由是 有一个30万的数据需要通过arcgis GP工具转成shp然后渲染加载进地图,原来的做法是遍历生成shp面要素,读取面的环状点然后转成json,这个也能实现结果但是时间较长,与预期的时间差别较多,在公司内部讨论时有提到这个动态图层可以解决海量频繁数据的替换,要是每个都发一个图层服务这样不可取.故此讨论后研究这个神奇的功能.

使用 TOP 限制更新的数据

可以使用 TOP 子句来限制 UPDATE 语句中修改的行数.当 TOP (n) 子句与 UPDATE 一起使用时,将针对随机选择的 n 行执行删除操作.例如,假设您要为一位高级销售人员减轻销售负担,而将一些客户分配给了一位初级销售人员.下列示例将随机抽样的 10 个客户从一位销售人员分配给了另一位. 1 USE AdventureWorks2008R2; 2 UPDATE TOP (10) Sales.Store 3 SET SalesPersonID = 276 4 WHERE SalesP

SQL快速操作技巧2_datatable批量更新到数据表

(为了给您节省时间,您可以只看高亮部分内容) 要将datatable 批量更新到数据表其实是两步: (1)将datatable快速存入一个表中: (2)根据一个数据表更新另外一个数据表: 下面细说: (1)将datatable快速存入一个表中: 1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename);3)   sqlbulkcopy.WriteToServer(datatable); 1.生成测试的datatable表,表结构如

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序更新相关数据 原文: Updating Related Data with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的链接. 在之前的教程中您已经成功显示了相关数据.在本教程中

yui--datatable 更新table数据

更新datasource中_oData数据 var myTable = Map.realYUIDataTable; var recordsSet = myTable.getRecordSet(); var records = recordsSet.getRecords(); for(var i=0; i<results.length; i++){ vehicleid = results[i].VEHICLEID; speed = results[i].SPEED; gpsTime = resul

PostgreSQL数据的导出导入

PostgreSQL数据的导出导入 导出PostgreSQL数据库中的数据: $ pg_dump -U postgres  -f mydatabase.sql  mydatabase 导入数据时首先创建数据库再用psql导入: $ createdb newdatabase$ psql -d newdatabase -U postgres -f mydatabase.sql 创建数据库 CREATE DATABASE test WITH OWNER = postgres ENCODING = 'U

sqlite学习笔记6:更新表数据

一 条件判断 在SQL中条件判断使用where,相当于其他变成语言中的if,基本用法如: SELECT column1, column2, columnN FROM table_name WHERE [condition] 另外,SQL支持数学运算,逻辑运算,位于运算等等,均可放在WHERE子句中. 二 更新表 基本语法如下: UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE

vue使用ECharts时的异步更新与数据加载

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #737373 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco