文档库 最新最全的文档下载
当前位置:文档库 › Update更新

Update更新

Update更新
Update更新

更新 (分析)

汇总

计算输入要素和更新要素的几何交集。输入要素的属性和几何根据输出要素类中的更新要素来进行更新。

图示

用法

?输入要素类型必须是面。

?此工具将不修改输入要素类。工具的生成结果将写入到新要素类。

?更新要素必须是面。

?输入要素类与更新要素类的字段名称必须保持一致。

?如果更新要素类缺少输入要素类中的一个(或多个)字段,则将从输出要素类中移除缺失字段的输入要素类字段值。

?如果在对话框中未选中边框参数(或在脚本或命令行中设置为 NO_BORDERS),则沿着更新要素外边缘的多边形边界将被删除。即使删除某些更新面的外边界,与输入要素重叠的更新要素的属性也被会指定给输出要素类中的面。

输入要素类的属性值将被复制到输出要素类。但是,如果输入图层是通过创建要素图层工具创建的并且选中了字段的“使用比率策略”选项,则将计算输出属性值与输入属性值的比率。如果启用了“使用比率策略”选项,分割叠加操作中的要素时,将按输入要素属性值的一定比例生成要素的属性值。输出值将根据输入要素几何被分割的比率得出。例如,如果输入几何被分割成相等的两部分,则每个新要素的属性值都等于输入要素属性值的一半。“使用比率策略”仅适用于数值字段类型。

语法

Update_analysis (in_features, update_features, out_feature_class, {keep_borders}, {cluster_tolerance})

参数说明数据类型

in_features 输入要素类或图层。几何类型必须是面。Feature Layer

update_features 更新“输入要素”时使用的要素。几何类型必须是面。Feature Layer

out_feature_class 将包含结果的要素类。请勿将此设置为与“输入要素”相同的要素类。Feature Class

keep_borders (可选) 指定是否保留更新面要素的边界。

?BORDERS —“更新要素”的外边界将保留在“输出要素类”中。这是默认选项。

?NO_BORDERS —“更新要素”的外边界将在插入“输入要素”之后被删除。“更新要素”的项值优先于“输入要素”的属性。

Boolean

cluster_tolerance

(可选)

所有要素坐标(结点和折点)之间的最?【嗬胍约白 昕梢匝? X 和/或 Y 方向移动的距离。Linear unit 代码示例

更新示例(Python 窗口)

以下 Python 窗口脚本演示了如何在立即模式下使用“更新”功能。

import arcpy

from arcpy import env

env.workspace = "C:/data"

arcpy.Update_analysis ("city_lots.shp", "data.gdb/flood_levels", "data.gdb/low_lots", "DROP_BORDER", 0.0003)

更新示例 2(独立脚本)

以下独立脚本显示了如何在脚本环境中使用“更新”功能。

# Name: UpdateZones.py

# Purpose: Update the "lots" feature class with features from "cutzones"

# Author: ESRI

# Import system modules

import arcpy

from arcpy import env

# Set the workspace

env.workspace = "c:/data/city.gdb"

# Set local parameters

inFeatures = "lots"

updateFeatures = "cutzones"

outFeatures = "futurecut"

#Process: Update

arcpy.Update_analysis(inFeatures, updateFeatures, outFeatures, "only_fid", 0.25)

Update中的From语句

Oracle\MS SQL Server的数据库多表关联更新UPDATE与多表更新【原】 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表 一、MS SQL Server 多表关联更新 sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。 一般形式: update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式 例如: UPDATE dbo.Table2 SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB FROM dbo.Table2 INNER JOIN dbo.Table1 ON (dbo.Table2.ColA = dbo.Table1.ColA); 实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的 二、Oracle 多表关联更新 Oracle没有update from语法,可以通过两种实现方式: 1、利用子查询: update A SET 字段1=(select 字段表达 式 from B WHERE ...), 字段2=(select 字段表达式 from B WHERE ...) WHERE 逻辑表达式 UPDATE多个字段两种写法:

执行一条sql语句update多条记录实现思路

执行一条sql语句update多条记录实现思路 如果你想更新多行数据,并且每行记录的各字段值都是各不一样,怎么办? 通常情况下,我们会使用以下SQL语句来更新字段值: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源、教程指南、橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录。如果我想重新编排这些分类目录的顺序,例如改成(教程指南、橱窗展示、免费资源),这时就需要更新categories表相应行的display_order字段,这就涉及到更新多行记录的问题了,刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的php 程序示例: ? 1 2 3 4 5 foreach ($display_order as $id => $ordinal) { $sql="UPDATE categories SET display_order = $ordinal WHERE id = $id"; mysql_query($sql); } 这种方法并没有什么任何错误,并且代码简单易懂,但是在循环语句中执行了不止一次SQL 查询,在做系统优化的时候,我们总是想尽可能的减少数据库查询的次数,以减少资源占用,同时可以提高系统速度。 幸运的是,还有更好的解决方案,下面列举两种常用的方案只不过SQL语句稍微复杂点,但是只需执行一次查询即可,语法如下: ? 1 2 3 4 5 6 7 8 ?第一种:IF--THEN语句结合UPDATE mytable SET myfield = CASE other_field WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END

SQL UPDATE 语句

SQL UPDATE 语句
? ? Previous Page Next Page
Update 语句
Update 语句用于修改表中的数据。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
Person:
LastName Gates Wilson FirstName Bill Address Xuanwumen 10 Champs-Elysees City Beijing
更新某一行中的一个列
我们为 lastname 是 "Wilson" 的人添加 firstname:
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
结果: LastName Gates Wilson FirstName Bill Fred Address Xuanwumen 10 Champs-Elysees City Beijing
更新某一行中的若干列
我们会修改地址(address) ,并添加城市名称(city) :
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'
结果: LastName Gates FirstName Bill Address Xuanwumen 10 City Beijing

Wilson
Fred
Zhongshan 23
Nanjing

SQL语句之数据更新

实验SQL语句之数据更新 实验步骤 在Microsoft SQL Server2008 中查询数据。在打开的Microsoft SQL Server2008 中,用鼠标右击要查询的数据库,在弹出的快捷菜单中选择“新建查询(Q)”,在窗口中的新建查询编辑器中编辑SQL语句进行数据库的查询操作,最后点击左上方“执行”按钮。 1.SQL语句之数据插入操作 插入数据是把新的记录行或记录行集插入到已经建立的表中。通常有插入一条记录行和插入记录行集两种形式。 插入一行记录(元组) 语言格式: INSERT INTO <表名>[(<属性列1>[,<属性列2>.....)] V ALUES(<常量1>[,<常量2>].......) 插入记录集(子查询结果) 批量插入,指一次将子查询的结果全部插入指定表中。子查询可以嵌套在SELECT语句中构造父查询的条件,也可以嵌套在INSERT语句中以生成要查询的数据。 语言格式: INSERT INTO <表名>[(<属性列1>[,<属性列2>.....)] 子查询; ①将一个新学生记录(学号:201001903066;姓名:李四;性别:男;出生日期:NULL;所在系:计算机系;专业:网络工程;学年制:4)插入到StudentInfo表中去,SQL代码如下所示: INSERT INTO StudentInfo (sno,sname,sex,birthday,depart,major,lengsch) values ('201001903066','李四','男',null, '计算机系','网络工程','4'); ②将一个新老师记录(教师编号:09020;教师姓名:王伟年;性别:男;系别:经济管理系;职称:副教授;学位:本科;)插入到数据库ST的TeacherInfo表中去,SQL代码如下所示: INSERT INTO TeacherInfo (teacherid,tname,sex,depart,proftitle,degree)

SQL数据更新语句

SQL操作功能 插入记录 INSERT INTO dbf-name [frame1,frame2] V ALUE() INSERT INTO dbf-name 说明向指定表插入记录 [frame1,frame2] 当插入不完整记录时,用frame1,frame2 指定记录 V ALUE()给出具体值 INSERT TABLE表名FROM ARRAY数组名 SQL数据更新记录语句 UPDA TE 表名SET <列名1> =表达式[,列名2=表达式2] WHERE条件表达式 UPDA TA雇员SETEMAIL=ALLTRIM(部门号)+ALLTRIM(雇员号)+“@XXXX.@.com.cn UPDATEALL日期=DATA() 一般用WHERE子句指定条件,以更新满足条件的一些记录的字段值,并且一次可以更新多个字段,若不使用WHERE子句,则更新全部记录 俩表的连接条件在WHERE子句中指定,另外对记录进行记录的筛选的条件通过AND短语与表的连接条件一起凡在where子句之后 SELECT 字段名from 表名WHERE 连接条件GROUPE BYCOUNTHAVINGORDERBYASCDESC排序字段有多个,每个字段之间用英语逗号分开,默认排序方式是升序 TabIndex属性可以用来控制光标在控件之间移动次序,光标按照1、2、3的顺序依次移动 DELET删除记录 DELECT FROM 表名WHERE 条件 若不使用WHERE则删除所有记录 SetFocus可以让控件获得焦点,使其成为活动对象。如果一个控件的Enabled属性值和Visible属性值.F.,将不能获得焦点,如果一个控件获得焦点,则Enabled 属性值和Visible属性值.T. ALRET TABLE 表名ALRET CREATEVIEW视图名asSQL语句 表单 类、方法、事件 类只是实例对象的抽象,类并不进行任何行为操作。类是对相似对象的性质描述,对象具有相同的性质:相同种类的属性和方法 继承是基于现有的类创建新类,新类继承现有类的方法和属性,病创建新的属性和方法 子类继承父类所有属性和方法 事件是由系统预先定义而由用户或系统发出的动作,事件作用于对象,对象识别事件并作出相应的反应,事件集是固定的,用户不可以定义新事件 表单的事件、属性、方法 运行时事件load事件 Init事件在对象建立时引发。表单和控件对象同时包含Init事件,将首先应发控

ORACLE 多表关联 UPDATE 语句

为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 1.--客户资料表 2.create table customers 3.( 4.customer_id number(8) not null, -- 客户标示 5.city_name varchar2(10) not null, -- 所在城市 6.customer_type char(2) not null, -- 客户类型 7.... 8.) 9.create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在城市等准确信息,于是你将该部分信息提取至一张临时表中: SQL 代码

1) 最简单的形式 SQL 代码 2) 两表(多表)关联update -- 仅在where字句中的连接SQL 代码 3) 两表(多表)关联update -- 被修改值由另一个表运算而来SQL 代码

注意在这个语句中, =(select b.city_name,b.customer_type from tmp_cust_city b where b.customer_id=a.customer_id ) 与 (select 1 from tmp_cust_city b where b.customer_id=a.customer_id) 是两个独立的子查询,查看执行计划可知,对b表/索引扫描了2篇;如果舍弃where条件,则默认对A表进行全表 更新,但由于 SQL 代码

ORACLE 多表关联 UPDATE 语句

ORACLE 多表关联UPDATE 语句 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, --客户资料表 create table customers ( customer_id number(8) not null, -- 客户标示 city_name varchar2(10) not null, -- 所在城市 customer_type char(2) not null, -- 客户类型 ... ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在 城市等准确信息,于是你将该部分信息提取至一张临时表中: create table tmp_cust_city ( customer_id number(8) not null, citye_name varchar2(10) not null, customer_type char(2) not null ) 1) 最简单的形式 --经确认customers表中所有customer_id小于1000均为'北京' --1000以内的均是公司走向全国之前的本城市的老客户:) update customers set city_name='北京' where customer_id<1000 2) 两表(多表)关联update -- 仅在where字句中的连接 --这次提取的数据都是VIP,且包括新增的,所以顺便更新客户类别update customers a -- 使用别名 set customer_type='01' --01 为vip,00为普通 where exists (select 1 from tmp_cust_city b where b.customer_id=a.customer_id ) 3) 两表(多表)关联update -- 被修改值由另一个表运算而来 update customers a -- 使用别名 set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id) where exists (select 1

MySQL UPDATE更新语句精解

MySQL UPDATE更新语句精解 一、INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理重复的数据。 1.INSERT的一般用法 MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。 INSERT INTO tablename(列名…)V ALUES(列值); 而在MySQL中还有另外一种形式。 INSERT INTO tablename SET column_name1=value1,column_name2= value2,…; 第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。如下面的语句向users表中插入了一条记录: INSERT INTO users(id,name,age)V ALUES(123,'姚明',25); 第二种方法允许列名和列值成对出现和使用,如下面的语句将产生中样的效果。INSERT INTO users SET id=123,name='姚明',age=25; 如果使用了SET方式,必须至少为一列赋值。如果某一个字段使用了省缺值(如默认或自增值),这两种方法都可以省略这些字段。如id字段上使用了自增值,上面两条语句可以写成如下形式: INSERT INTO users(name,age)V ALUES('姚明',25); INSERT INTO uses SET name='姚明',age=25; MySQL在V ALUES上也做了些变化。如果V ALUES中什么都不写,那MySQL 将使用表中每一列的默认值来插入新记录。 INSERT INTO users()V ALUES(); 如果表名后什么都不写,就表示向表中所有的字段赋值。使用这种方式,不仅在V ALUES中的值要和列数一致,而且顺序不能颠倒。INSERT INTO users V ALUES(123,'姚明',25); 如果将INSERT语句写成如下形式MySQL将会报错。 INSERT INTO users V ALUES('姚明',25); 2.使用INSERT插入多条记录 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语句不就可以插入多条记录了吗!但使用这种方法要增加服务器的负荷,因为,执行每一次SQL 服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中使用。

mysql批量更新多条语句

mysql 更新语句很简单,更新一条数据的某个字段,一般这样写: 1 UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql 也很简单,修改下where 即可: 1 UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values'); 这里注意 ‘other_values’ 是一个逗号(,)分隔的字符串,如:1,2,3 那如果更新多条数据为不同的值,可能很多人会这样写: 1 2 3 4 foreach ($display_order as $id => $ordinal ) { $sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id"; mysql_query($sql ); } 即是循环一条一条的更新记录。一条记录update 一次,这样性能很差,也很容易造成阻塞。 那么能不能一条sql 语句实现批量更新呢?mysql 并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现。 1 2 3 4 5 6 7 UPDATE mytable SET myfield = CASE id WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END

WHERE id IN (1,2,3) 这里使用了case when 这个小技巧来实现批量更新。 举个例子: 1 2 3 4 5 6 7 UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END WHERE id IN (1,2,3) 这句sql 的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。 即是将条件语句写在了一起。 这里的where 部分不影响代码的执行,但是会提高sql 执行的效率。确保sql 语句仅执行需要修改的行数,这里只有3条数据进行更新,而where 子句确保只有3行数据执行。 如果更新多个值的话,只需要稍加修改: 01 02 03 04 05 06 07 08 09 10 11 12 UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END , title = CASE id WHEN 1 THEN 'New Title 1' WHEN 2 THEN 'New Title 2' WHEN 3 THEN 'New Title 3' END WHERE id IN (1,2,3)

怎样用excel生成数据库update语句

2010-04-15 14:18 by 听风吹雨, 7150阅读, 16评论, , 需求: 我们需要把Excel中的一些资料更新到数据库表中,比如学生的考试系统,在数据中已经有了考生的ID,这里有一份考生ID和考生成绩的Excel表,我们如何把考生成绩更新到数据库表中呢? 方案: 1.我们最常使用的做法就是把这个Excel表导入到数据库中,在使用update语句来 更新表。没错,这就是我通常使用的方法,但是有些人他们不安常理出牌,有时 候客户说:我只会执行SQL,我不知道怎么把Excel导入到数据库中。 2.这个时候我们如何把要更新的内容生产SQL语句给到客户呢?如何是一两条记录, 我们手动写SQL就可以了,但是如果有几百个学生,我们要手动写几百条语句吗? 是否有批量生成SQL脚本的方法?这就是我们这里要讲到的:使用Excel批量生 成SQL脚本(小技巧) 过程: 这是一个原始的Excel表,它包括了一些ID值和需要更新字段的值: (图:1) 1:确定需要生成的SQL语句模型。 --根据需求写一条SQL模板 update表set[Longitude]='', [Latitude]=''where[ID]=''and[Name]=''

2:删除Excel表中多余的列,保留需要更新和查询条件的列。并按照需要生成的sql语句顺序进行排序。 前面两个列是需要更新的值,后面两个是where的条件字段 (图:2) 3:在Excel表插入空列,拷贝相关的语句进去。 拷贝第一语句放入合适的单元格,把把这一列一拖到底,生成同样的语句 (图:3) 4:把结果拷贝到查询分析器中,使用替换把多余的空格去掉。 (图:4) --下面就是生成的语句 update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619 7-a068-4eae-83cd-01f75e827234'and[Name]='XXXX' update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619 7-a068-4eae-83cd-01f75e827234'and[Name]='XXXX' update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619 7-a068-4eae-83cd-01f75e827234'and[Name]='XXXX' --。。。。。。

ORACLE__UPDATE_语句

ORACLE_UPDATE 语句 Update 语句 Update 语句用于修改表中的数据。 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, --客户资料表 create table customers ( customer_id number(8) not null, -- 客户标示city_name varchar2(10) not null, -- 所在城市 customer_type char(2) not null, -- 客户类型 ... ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在城市等准确信息,于是你将该部分信息提取至一张临时表中: create table tmp_cust_city ( customer_id number(8) not null, citye_name varchar2(10) not null, customer_type char(2) not null ) 1) 最简单的形式 --经确认customers表中所有customer_id小于1000均为'北京' --1000以内的均是公司走向全国之前的本城市的老客户:) update customers set city_name='北京' where customer_id<1000 2) 两表(多表)关联update -- 仅在where字句中的连接 --这次提取的数据都是VIP,且包括新增的,所以顺便更新客户类别update customers a -- 使用别名 set customer_type='01' --01 为vip,00为普通 where exists (select 1 from tmp_cust_city b where b.customer_id=a.customer_id

SQLITEUPDATE语句

sqlite3实验指导书 ——2014版本 实验3 sqlite中的高级sql 实验目的: 1.熟练掌握在数据库中插入、修改和删除数据的操作方法,加深对标准sql更新语句的理解。 2.了解sqlite中用约束来维护数据完整性的机制。掌握在sqlite中如何创建、使用及删除约束的方法。 3.掌握在sqlite中创建、删除视图的sql语句的用法,加深理解视图的用途。 4.掌握在sqlite中创建、删除索引的sql语句,加深理解索引的用途。 5.掌握在sqlite中创建、删除触发器的sql语句的用法,加深理解触发器的用途。 6.掌握在sqlite中创建事务的sql语句的用法,加深理解事务的各种冲突解决方案。 实验内容: 1.基于实验一创建的教学管理jxgl数据库,参考教材数据更新的sqlite操作实例,实现数据的插入、修改和删除操作。 2.基于实验一创建的供应系统gyxt数据库,实现数据的插入、修改和删除操作。 3.基于实验一创建的教学管理jxgl数据库,实现约束的创建、查看和删除操作。 4.创建人事关系rsgx数据库及其中的职工数据表和部门数据表,并实现完整性约束条件的定义。 5.基于实验一创建的教学管理jxgl数据库及供应系统gyxt数据库,参考教材视图的sql操作实例,实现视图的创建、删除、查询操作。 6.基于jxgl数据库,学习如何创建索引。 7.基于jxgl数据库,创建触发器,体会触发器的作用。 8.基于jxgl数据库,参考教材上事务的应用实例,掌握事务的创建及各种冲突解决方案的用法。 实验步骤: 1.在教学管理jxgl数据库中进行如下操作: (1) 将一个新学生记录(学号:200215126;姓名:陈冬;性别:男;所在系:is;年龄:18)插入student表中。 insert into student values(200215126,陈冬,男,18,is); (2) 数据的插入操作:插入一条选课记录,学号为200215126的学生选修了1号课程。 (3) 对每门课程,求学生的平均分数,并把结果存入数据库。 (4) 将学生200215126转到数学系。 (5) 所有学生成绩乘系数0.8。 (6) 删除200215126学生的记录。 (7) 删除数学系所有学生的选课记录。 2.在供应系统gyxt数据库中进行如下操作: (1) 往s,p,j,spj表中插入部分数据(此题实验一已完成) (2) 将供应商序号为s5的名称改为宏民厂。 (3) s表中删除供应商序号为s5的记录,考虑对spj表的相应操作。 (4) 在s表中插入一条供应商信息:(s6,华天,深圳)。 (5) 把全部红色零件的颜色改为粉红色。 (6) 将s1供应给j1的零件p1改为由s2供给。 (7) 删去全部蓝色零件及相应的spj记录。

怎样用excel生成数据库update语句

使用Excel批量生成SQL脚本(小技巧) 2010-04-15 14:18 by 听风吹雨, 7150阅读, 16评论, 收藏, 编辑 需求: 我们需要把Excel中的一些资料更新到数据库表中,比如学生的考试系统,在数据中已经有了考生的ID,这里有一份考生ID和考生成绩的Excel表,我们如何把考生成绩更新到数据库表中呢? 方案: 1.我们最常使用的做法就是把这个Excel表导入到数据库中,在使用update语句来 更新表。没错,这就是我通常使用的方法,但是有些人他们不安常理出牌,有时 候客户说:我只会执行SQL,我不知道怎么把Excel导入到数据库中。 2.这个时候我们如何把要更新的内容生产SQL语句给到客户呢?如何是一两条记录, 我们手动写SQL就可以了,但是如果有几百个学生,我们要手动写几百条语句吗? 是否有批量生成SQL脚本的方法?这就是我们这里要讲到的:使用Excel批量生 成SQL脚本(小技巧) 过程: 这是一个原始的Excel表,它包括了一些ID值和需要更新字段的值:

(图:1) 1:确定需要生成的SQL语句模型。 --根据需求写一条SQL模板 update表set[Longitude]='', [Latitude]=''where[ID]=''and[Name]='' 2:删除Excel表中多余的列,保留需要更新和查询条件的列。并按照需要生成的sql语句顺序进行排序。 前面两个列是需要更新的值,后面两个是where的条件字段 (图:2)

3:在Excel表插入空列,拷贝相关的语句进去。 拷贝第一语句放入合适的单元格,把把这一列一拖到底,生成同样的语句 (图:3) 4:把结果拷贝到查询分析器中,使用替换把多余的空格去掉。 (图:4) --下面就是生成的语句 update[XX]set[Longitude]='113.41993', [Latitude]='23.42718'where[ID]='dd9a619

SQLUPDATE语句WHERE

sql语句中的更新语句update是最常用的语句之一,下面将为您介绍update语句的三种使用方法,供您参考,希望对您有所帮助。 一、环境: mysql-5.0.41-win32 windows xp professional 二、建立测试环境: drop table if exists t_test; create table t_test ( bsbigint(20) not null auto_increment, usernamevarchar(20) not null, passwordvarchar(20) default null, remarkvarchar(200) default null, primary key (bs) ) engine=innodb auto_increment=4 default charset=gbk; insert into t_test values (1,lavasoft,123456,null); insert into t_test values (2,hello,null,null); insert into t_test values (3,haha,zz,tt); 三、测试 1、set一个字段 在表t_test中设置第二条记录(bs为2)的password为***。 updatet_test t sett.password = *** where t.bs = 2; 2、set多个字段 在表t_test中设置第一条记录(bs为1)的password为*、remark为*。 updatet_test t sett.password = *, t.remark = * where t.bs = 1; 3、set null值 在表t_test中设置第三条记录(bs为3)的password为null、remark为null。 updatet_test t sett.password = null, t.remark = null where t.bs = 3; 这个是按照标准语法写的,在不同的数据库系统中,update还有更多的写法,但是标准写 法都是支持的。以上三个例子为了说明情况,每次都更新一行。在实际中,可以通过where 语句约束来控制更新行数。篇二:sql的update语句功能非常强大 语法 update { table_name with ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited

SQL Server UPDATE语句的用法

SQL Server UPDATE语句的用法 SQL Server中的数据改动是免不了的,使用UPDATE语句就可以实现我们对数据库数据的更新修改操作,下面就让我们来了解一下UPDATE语句的用法。 SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解。 现实应用中数据库中的数据改动是免不了的。通常,几乎所有的用户数据库中的大部分数据都要进行某种程度的修改。在SQL Server数据库中要想修改数据库记录,就需要用UPDATE语句,UPDATE语句就是为了改变数据库中的现存数据而存在的。这条语句虽然有一些复杂的选项,但确实是最容易学习的语句之一。这是因为在大多数情况下,这条语句的高级部分很少使用。在用户看来,UPDATE语句只是用来改变指定行中的数据。但实际的内部情况是,SQL Server从表中删除旧的数据行并插入新行。 SQL Server UPDATE语句的语法如下: 1.update set = where 下面是语法选项简介: 表的名称。该表包含了要修改值的列 要修改数据的列的名称 要输入到列中的新值 这是UPDATE语句中最重要的部分。通过指定一个好的搜索条件,你能够限定表内被修改的行数。如果你不指定搜索条件,SQLServer会用新值修改表内的所有行示例: 现在我们来看看如何实际修改表中的某些行。我们在表中有一列使用了唯一值,可以区分表中的每一行。因此,我们可以轻松地写下UPDATE语句,只改变对应某作者的那行数据。如下: 1.update users set phone=78789831 where number =231; 比如现在我们要把超市表内的每件商品价格都提高11%,是否有必要为每一行都写一条独立的UPDATE语句呢?就现在的情况而言,也许不会有很多的UPDATE语句要写,但如果是

MySQL数据库之UPDATE更新语句精解

MySQL数据库之UPDATE更新语句精解(1) 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。本文以MySQL为背景来讨论如何使有SQL 中的更新语句。 一、INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理重复的数据。 1. INSERT的一般用法 MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。 INSERT INTO tablename(列名…) VALUES(列值); 而在MySQL中还有另外一种形式。 第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。如下面的语句向users表中插入了一条记录: 第二种方法允许列名和列值成对出现和使用,如下面的语句将产生中样的效果。 如果使用了SET方式,必须至少为一列赋值。如果某一个字段使用了省缺值(如默认或自增值),这两种方法都可以省略这些字段。如id字段上使用了自增值,上面两条语句可以写成如下形式: MySQL在VALUES上也做了些变化。如果VALUES中什么都不写,那MySQL将使用表中每一列的默认值来插入新记录。 INSERT INTO users () VALUES(); 如果表名后什么都不写,就表示向表中所有的字段赋值。使用这种方式,不仅在VALUES中的值要和列数一致,而且顺序不能颠倒。 如果将INSERT语句写成如下形式MySQL将会报错。 2. 使用INSERT插入多条记录 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语句不就可以插入多条记录了吗!但使用这种方法要增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中使用。

oracle的update的五种方式

Oracle的update语句优化研究 一、update语句的语法与原理 1.语法 单表:UPDATE 表名称SET 列名称= 新值WHERE 列名称= 某值 如:update t_join_situation set join_state='1'where year='2011' 更新年度为“2011”的数据的join_state字段为“1”。如果更新的字段 加了索引,更新时会重建索引,更新效率会慢。 多表关联,并把一个表的字段值更新到另一个表中的字段去: update 表a set a.字段1 = (select b.字段1 from 表b where a. 字段2=b.字段2) where exists(select 1 from 表b where a.字段 2=b.字段2) oracle的更新语句不通MSSQL那么简单易写,就算写出来了,但执行时可能 会报 这是由于set哪里的子查询查出了多行数据值,oracle规定一对一更新数据, 所以提示出错。要解决这样必须保证查出来的值一一对应。 2.原理 Update语句的原理是先根据where条件查到数据后,如果set中有子查询,则 执行子查询把值查出来赋给更新的字段,执行更新。 如:update 表a set a.字段1 = (select b.字段1 from 表b where a.字段2= b.字段2) where exists(select 1 from 表b where a.字 段2=b.字段2)。查表a的所有数据,循环每条数据,验证该条数据是否符合 exists(select 1 from 表b where a.字段2=b.字段2)条件,如果是 则执行(select b.字段1 from 表b where a.字段2=b.字段2)查询, 查到对应的值更新a.字段1中。关联表更新时一定要有exists(select 1 from 表b where a.字段2=b.字段2)这样的条件,否则将表a的其他数据 的字段1更新为null值。 二、提高oracle更新效率的各种解决方案 1.标准update语法

SQL语句中UPDATE的三种用法

SQL语句中的更新语句update是最常用的语句之一,下面将为您介绍update语句的三种使用方法,供您参考,希望对您有所帮助。 一、环境: MySQL-5.0.41-win32 Windows XP professional 二、建立测试环境: DROP TABLE IF EXISTS t_test; CREATE TABLE t_test ( bsbigint(20) NOT NULL auto_increment, usernamevarchar(20) NOT NULL, passwordvarchar(20) default NULL, remarkvarchar(200) default NULL, PRIMARY KEY (bs) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gbk; INSERT INTO t_test VALUES (1,'lavasoft','123456',NULL); INSERT INTO t_test VALUES (2,'hello',NULL,NULL); INSERT INTO t_test VALUES (3,'haha',zz,tt); 三、测试 1、set一个字段 在表t_test中设置第二条记录(bs为2)的password为'***'。 updatet_test t sett.password = '***' where t.bs = 2; 2、set多个字段 在表t_test中设置第一条记录(bs为1)的password为'*'、remark为'*'。 updatet_test t sett.password = '*', t.remark = '*' where t.bs = 1; 3、set null值 在表t_test中设置第三条记录(bs为3)的password为null、remark为null。 updatet_test t sett.password = null, t.remark = null where t.bs = 3; 这个是按照标准语法写的,在不同的数据库系统中,update还有更多的写法,但是标准写

SQL查询更新语句 课堂练习和习题

SQL查询语句课堂练习和习题 一、试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询: S(sno,sname,SAGE,SSEX) 各字段表示学号,姓名,年龄,性别 Sc(sno,cno,grade) 各字段表示学号,课程号,成绩 C(cno,cname, TEACHER) 各字段表示课程号,课程名和教师名 其中SAGE,grade是数值型,其他均为字符型。 要求用SQL查询语句实现如下处理: 1.统计有学生选修的课程门数。 2.求选修C4课程的学生的平均年龄。 3.求LIU老师所授课程的每门课程的学生平均成绩。 4.统计每门课程的学生选修人数(超过2人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 5.检索学号比WANG同学大,而年龄比他小的学生姓名。 6.检索姓名以WANG打头的所有学生的姓名和年龄。 7.在SC中检索成绩为空值的学生学号和课程号。 8.求年龄大于女同学平均年龄的男学生姓名和年龄。 9.求年龄大于所有女同学年龄的男学生姓名和年龄。 其中涉及单表题:1.4.6.7 参考答案: 1.统计有学生选修的课程门数。 SELECT COUNT(DISTINCT Cno) FROM SC 2.求选修C4课程的学生的平均年龄。 SELECT AVG(SAGE ) FROM S WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='4') 或者, SELECT AVG(SAGE ) FROM S,SC WHERE S.Sno=SC.Sno AND Cno='4' 3.求LIU老师所授课程的每门课程的学生平均成绩。 SELECT AVG(GRADE)

相关文档