DML 是DQL和数据更新组成的。
--更新操作前的准备
复制emp表:
create table myemp as select * from emp
查看表中的数据:
select * from myemp
数据存在,却没有约束,更新就自由一些。
添加数据:
insert into myemp( empno,ename,job, mgr, hiredate ,sal, comm, deptno) select * from emp where deptno=20 另一方式: insert into myemp select * from emp where deptno=10
建议最好用完整的查询
--更新操作而言
由用户来更新
update myemp set sal=3000 where empno=7369 select * from myemp where empno=7369 update myemp set sal =sal*1.2 where sal<( select avg(sal) from myemp )
22行,用了0.078秒,这种工作是更新不可行,意味着0.078m/22 *1万条记录更新 需要花费= 35秒别人不可以用这张表,
解决办法就一句话:时间换空间,空间换时间
update myemp set sal =0
更新雇员7369的职位,
UPDATE myemp set ( job, sal, hiredate )=( select job , sal , hiredate from emp where empno=7369 ) where empno=7369
更新删除操作
删除员工编号是7566的数据:
delete from myemp
where empno=7566;
删除30部门的所有雇员
delete from myemp
where deptno=30
同样的,我们还能写什么?用in的操作符
delete from myemp where empno in (7369,7566,7788)
你会发现这些where的操作符,都是之前教过的。
删除公司工资最高的雇员
delete from myemp where sal=(
select max(sal) from myemp
)
日期型的
删除1987年的雇员
delete from myemp where to_char(hiredate, 'yyyy')='1987'
总结:
不要的数据就删除,对于更新的三个操作:增加、修改、删除,每一次都一定会返回当前操作所影响到的数据行书,
如果学习过java读者一定与jdbc操作联系 在一起,在jdbc操作中更新数据的操作STUTEMENT
和PREPARDSTATEMENT 两个接口,调用的方法是EXECUTEUPDATE(),返回的是一个int型数据,