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型数据,