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

关于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子句

你可能感兴趣的:(oracle)