分享

SQL入门教程第19课:UPDATE更新语句

 asaser 2022-08-26 发布于四川
 戳蓝字Excel星球关注我哦。

菜单→资源礼包✔领取更多SQL教程👆

HI,大家好,我是星光。

我们上一章留了个小尾巴,说对于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 = NothingEnd Sub 

更新后的数据如下:

图片

但等到发工资前的晚上,半夜12点,领导辗转反侧后忽然改主意了。他认为男女应该区别对待,男生的防暑降温费应改为150,女生改为250……以为领导是照顾女同胞?不系滴,毕竟公司男多女少嘛,能省一点是一点。

对此,我们得将代码中的SQL语句修改如下:

UPDATE [工资表$] SET 工资=工资+IIF(性别='男',150,250)

语句使用IIF函数对性别进行判断,如果是男生,则返回数值150,否则返回250.

更新后的工资表如下图所示:

图片

打个响指,再举几个常见的例子吧。

先看一个修改多列数据的小栗子。

图片 

假设,我们发现员工'芬子师妹’这个人的性别弄错了,应该是女生;工龄也错了,应该是3年;工资还是错了,应该是6666——如何用UPDATE语句进行更新呢?

UPDATE  [工资表$] SET 性别='女',工龄=3,工资=6666 WHERE 姓名='芬子师妹' 

语句通过WHERE子句指定更新条件,并在SET子句指定了多列应更新的数据,每列数据之间使用英文逗号间隔。

更新后的结果如下:

图片

再看一个UPDATE搭配子查询的例子。

假设,有一天早晨,领导给了你一份名单,说这些人的工资每人加50元,同时工龄加1年。

名单表的名单如下:

图片

如何根据名单对工资表做批量数据更新呢?

语句如下:

UPDATE [工资表$] SET 工龄=工龄+1,工资=工资+50 WHERE 姓名 IN ( SELECT * FROM [名单表$A:A])

语句使用子查询的方式作为数据更新的条件,关于子查询,可以参考本系列教程第13章:什么是子查询。

工资表数据更新后如下图所示:

图片

最后举一个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子句的——打个响指,正如前文所言,两者之间的语句区别并不是本系列教程的重点,感兴趣的朋友可以自行百度。

更新后的工资表数据如下所示:

图片

好吧,亲爱的,回到我们最初的约定……

如何使用UPDATE语句批量删除单元格内的值?

比如批量删除工资表的工资……

其实很简单,对不对?

UPDATE [工资表$] SET 工资=NULL

图片 

但SQL能做的只是删除单元格的值,并不能删除单元格本身。

左上角点关注,右下角点个赞,赠人玫瑰,手有余香,咱们下期再见。

案例文件下载百度网盘..▼

https://pan.baidu.com/s/1jJ0q0ghoyc19x6H4IOPyDA 
需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?加入我的付费社群,与4500+学员一起,同微软最有价值专家(MVP)全面精进表格之道👇

👀

加入我的Excel会员,全面学习Excel
透视表 函数 图表 VBA PQ想学啥学啥

👇本文由公众号“Excel星球”首发。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多