ExcelVBAADOSQL入门教程19:UPDATE更新语句.docx

ExcelVBAADOSQL入门教程19:UPDATE更新语句.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ExcelVBAADOSQL入门教程19:UPDATE更新语句 能不能让我陪着你走? 既然你说留不住你? 回去的路有些黑暗 1, 我们上一章留了个小尾巴,说对于EXCEL文件,SQL可以删除单元格内的值,但不能使用DELETE语句删除整条记录,或者说删除单元格自身;否则会收到错误提示——那么如何删除单元格内的值呢? 请使用UPDATE语句。 UPDATE,顾名思义,修改或更新数据库中的数据之意 ;它的基础语法如下: UPDATE 表名 SET 列名称=新值 举个例子。夏天到了,酷暑难当,某公司决定为每位员工的工资增加200元防暑降温费。 ? ? ? ? ? SQL语句如下: UPDATE ?[工资表$] SET 工资=工资 200 完整VBA代码如下: Sub DoSql2() Dim cnn As Object, strSQL? As String Set cnn = CreateObject(adodb.connection) cnn.Open Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source= ThisWorkbook.FullName strSQL = UPDATE? [工资表$] SET 工资=工资 200 cnn.Execute (strSQL) cnn.Close Set cnn = Nothing End Sub 更新后的数据如下: ? ? ? ? ? 但等到发工资前的晚上,半夜12点,领导辗转反侧后忽然改主意了。他认为男女应该区别对待,男生的防暑降温费应改为150,女生改为250……以为领导是照顾女同胞?不系滴,毕竟公司男多女少嘛,能省一点是一点。 对此,我们得将代码中的SQL语句修改如下: UPDATE ?[工资表$] ?SET 工资=工资 IIF(性别=男,150,250) 语句使用IIF函数对性别进行判断,如果是男生,则返回数值150,否则返回250. 更新后的工资表如下图所示: ? ? ? ? ? 2. 再举几个常见的例子吧。 先看一个修改多列数据的小栗子。 ? ? ? ? ? 假设,我们发现员工‘芬子师妹’这个人的性别弄错了,应该是女生;工龄也错了,应该是3年;工资还是错了,应该是6666——如何用UPDATE语句进行更新呢? UPDATE ?[工资表$] SET 性别=女,工龄=3,工资=6666 WHERE 姓名=芬子师妹 语句通过WHERE子句指定更新条件,并在SET子句指定了多列应更新的数据,每列数据之间使用英文逗号间隔。 更新后的结果如下: ? ? ? ? ? 再看一个UPDATE搭配子查询的例子。 假设,有一天早晨,领导给了你一份名单,说这些人的工资每人加50元,同时工龄加1年。 名单表的名单如下: ? ? ? ? ? 如何根据名单对工资表做批量数据更新呢? 语句如下: UPDATE ?[工资表$] SET 工龄=工龄 1,工资=工资 50 WHERE 姓名 IN (SELECT * FROM [名单表$A:A]) 语句使用子查询的方式作为数据更新的条件,关于子查询:Excel VBA ADO SQL入门教程013:子查询 工资表数据更新后如下图所示: ? ? ? ? ? 最后举一个UPDATE关联查询更新的例子。 又过了一段时间,领导又给了您一份调薪表,要求你根据调薪表的人名和工资,对工资表对应的员工工资做批量修改。 调薪表的模样是下图酱紫的。 ? ? ? ? ? 沉默50秒,我需要严肃思考一下,为什么我的工资从5700掉到了73块?说四川普通话的那位白头发老头贸易保护我了?还是俺和“看见月光”蒙面诈骗领导小女儿的事情暴露了? ……好伐,如何使用UPDATE语句对工资表做对应的数据更新呢? UPDATE [工资表$] a INNER JOIN [调薪表$] b ON a.姓名=b.姓名 SET a.工资=b.工资 UPDATE子句通过内连接的查询方式指定了需要数据更新的记录行,并通过SET子句对工资修改为对应的新值。 不过需要说明的是,这是Excel和ACCESS (JET SQL)关联更新的写法,SQL SERVER(T-SQL)与此并不相同,后者的UPDATE是支持FROM子句的——打个响指,正如上文所言,两者之间的语句区别并不是本系列教程的重点,感兴趣的朋友可以自行百度。 更新后的工资表数据如下所示: ? ? ? ? ? 3. 好吧,亲爱的,回到我们最初的约定…… 如何使用UPDATE语句批量删除单元格内的值? 比如批量删除工资表的工资…… 其实很简单,对不对? UPDATE [工资表$] SET 工资=NULL ? ? ? ? ? 但就像我们在上一章所说的,SQL能做的只是

文档评论(0)

180****2140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档