Oracle数据库--------------------数据更新(修改数据Update)

本文介绍了Oracle数据库中数据更新(修改数据Update)的语法和实例,包括使用WHERE子句进行特定条件的更新。讨论了全表更新的性能问题,提出在大型社交网站场景下,通过拆分操作和在用户登录时更新活跃用户信息的解决方案,强调了在执行更新操作时务必包含WHERE子句以避免不必要的性能影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Oracle数据库的学习记录:

二十三、数据更新(修改数据)
当需要进行更新的时候,采用如下语法:
UPDATE 表名称 SET 字段 1=值 1,字段 2=值 2,...[WHERE 更新条件(s)];
在使用更新的时候,WHERE子句里面的内容可以使用IN、BETWEEN...AND、LIKE等限定查询
范例:将SMITH的工资修改为8000,佣金修改为9000
UPDATE myemp SET sal=8000,comm=9000 WHERE ename='SMITH';
范例:将ALLEN的工资修改为SCOTT的工资
UPDATE myemp SET sal=(
             SELECT sal
             FROM myemp
             WHERE ename='SCOTT')
WHERE ename='ALLEN';
范例:将工资低于公司平均工资的雇员工资上涨20%
**公司的平均工资:
SELECT avg(sal) FROM myemp;
**更新工资信息:
UPDATE myemp SET sal=sal*(1+0.2) WHERE sal<(SELECT avg(sal) FROM myemp)

如果更新影响了多条记录,那么也会同时返回更新的数据量的信息

范例:将所有雇员的雇佣日期改为今天
UPDATE myemp SET hiredate=SYSDATE;

实际上在数据库更新数据的时候,其他的用户是不能针对当前的数据进行任何操作的

案例:如果说现在有一个某大型社交网站,已经注册的用户有3亿人,每个人如果要想使用这个网站,都会实现一次自动更新最后登录日期的操作(用户表上保存最后一次更新日期),突然有一天,要更新数据表上每一字段的内容,并且要求全部更新,那么要如何处理这个问题?

问题麻烦点:如果现在执行了全部更新的操作(WHEER子句不存在),那么按照每10条更新要花费1秒的时间来操作,总共3亿条数据,要花347天时间才能全部更新完成,那么意味着这347天内都不能登录
软件判断效率的方式有两个:时间复杂度和空间复杂度。
软件性能平衡方式有两种:以时间换空间、以空间换时间
云计算:谷歌和亚马逊比较厉害

首先,如果更新全部的数据哪100%是不可取的,但是可以进行拆分操作,如果是活跃用户,那么每次要使用的时候肯定要登陆一次,登陆的时候除了验证用户名和密码之外,再额外的执行一条更新操作,这样是以时间换空间

总结:只要是写更新操作,不可能不写WHERE子句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值