(尚硅谷) Orcale 数据处理DML(INSERT/DELETE/UPDATE) DCL :COMMOT ROLLBACK SAVE

<span style="font-size:18px;">第8节数据处理DML(INSERT/DELETE/UPDATE) DCL :COMMOT ROLLBACK SAVEPOINT
--1添加 inert
create table emp (
      id number(10),
      name varchar2(20),
      email varchar2(20),
      salary number(8,2)
)
select * from emp
1)一条一条的添加(insert into ..values(..))
insert into emp 
values(1001,'陈军','chenj@126.com',8000);

insert into emp 
values(1002,'孙兆国',null ,9000);

insert into emp (name , id , salary , email )
values ('赵龙' ,1003 ,9000 ,'zaolomh@qq.com' );

--添加时,为指定列时 , 相应的列值为null
insert into emp(name , id )
values ('高强',1004)

create table emp1
as 
select employee_id id, last_name name ,department_id dep_id
from employees
where 1=2

select * from emp1
--不能添加成功因为emp的name有not null 约束
insert into emp1 (id , dept_id )
values (1001 , 10);

select * from employees
where 1=2

--基于现有的表, 导入数据'
select * from emp1
insert into emp1
select employee_id , last_name , department_id 
from employees
where salary < 10000;

--根据脚本添加数据
select * from emp

insert into emp
values(&id,'&name','&email',&salary);

--2修改update 表明
commit;

rollback;

select * from emp

update emp
set email = 'suny@126.com';

update emp 
set email = 'suny@122.com'
where id =1001;

update emp
set salary = salary +100;

--3删除delet from 表明where ..
delete emp
--where id = 1004
where name = '高强';
select * from emp;

delete from emp;

rollback

--练习
--更新 114号员工的工作和工资使其与205号员工相同。
select employee_id , job_id , salary 
from employees
where employee_id IN(114 , 205)

create table emp2
as 
select * from employees

select * from emp2

update emp2
set job_id = (
             select job_id 
             from emp2
             where employee_id = 205
           ), salary = (
                          select salary
                          from emp2
                          where employee_id = 105
                       )
where employee_id = 114

--调整 (与employee_id 为200的员工job_id相同的员工)
--的department_id为  (employee_id为100的员工的department_id)。
update emp2
set department_id = (
                    select department_id
                    from emp2
                    where employee_id = 200
                    )
where job_id = (
               select job_id 
               from employees
               where employee_id = 200
             )

----在DML操作中的一些注意点
update emp2
set department_id = 600
where employee_id = 110

select * from departments

select * from departments

select employee_id , manager_id
from employees

delete from emp2 
where employee_id = 108

----DCL:commit rollback savepoint
create table emp3
as
select employee_id , last_name , hire_date 
from employees
where department_id IN (80,90)

select * from emp3

delete from emp3
where employee_id = 100

commit;

delete from emp3
where employee_id = 101;

savepoint A;

delete from emp3
where employee_id = 102

savepoint B;

delete from emp3
where employee_id = 145;

rollback to savepoint B;

rollback;
</span>
--更改 108 员工的信息: 
--使其工资变为所在部门中的最高工资,
-- job 变为公司中平均工资最低的 job
update emp2
set salary = (
              select employee_id
              from employees
              where salary = (
                              select min (salary)
                              from employees
                              where department_id = 100
                             )
              ) , job_id = (
                           select job_id 
                           from employees
                           group by job_id 
                           having avg (salary) = (
                                                 select min(avg(salary))
                                                 from employees
                                                 group by job_id
                                                 )
                           )
where employee_id = 108


-- 删除 108 号员工所在部门中工资最低的那个员工.
--方法一
delete from emp2
where employee_id IN (
                     select employee_id
                     from employees
                     where salary = (
                                     select min(salary)
                                     from employees
                                     where department_id  = (
                                                              select department_id 
                                                              from employees
                                                              where employee_id = 100
                                                            )
                                    )
                     )
                     and department_id = (
                                         select department_id
                                         from employees
                                         where employee_id = 100
                                         )

--方法二
delete from emp2
where department_id = (
                      select department_id
                      from employees
                      where employee_id = 100
                      )
and salary = (
             select min(salary)
             from employees
             where department_id = (
                                 select department_id 
                                 from employees
                                 where employee_id = 100
                                   )
             )



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值