Oracle-DML语句详解

----------------DML  insert   update delete
-- oracle  中  DML  事务  不是自动提交的  需要手动提交   
----insert  
--  insert  into  emp  values(?,?,?...) 必须按照一定的顺序(类型 )  补全所有值
--  insert  into  emp(column ,column )  values(?,? )   
---添加   每次只能添加一行
 ---- dml  事务的概念   ACID    原子性   一致性      隔离性    持久性


select *from emp;
insert into  emp values(8888,'强哥','伐木累',1024,to_date('2019-11-21','yyyy-mm-dd'),100,1000,40);
insert into  emp(empno,ename) values(1024,'李老板' );

insert into  emp(empno,ename) values(1024,'李老板' )---主键是有唯一约束   不能重复
insert into  emp(ename) values('李老板' )--- 错误写法  主键字段   一定不能为空

--- update  
update  表名  set 列名=值 ,列名=值    修改全部
update  表名  set 列名=值 ,列名=值  where 条件     按照条件 修改

update  emp  set sal=sal+10 where empno=8888  --- 一般选择的条件  是主键

--修改全部
update  emp  set sal=sal+10000
update emp set sal=50000 ,deptno=40 where empno=1024

update  emp  set sal=sal+10000 where deptno =40
------  转账  ----------------------

----------------- 开启事务的地方

update emp  set  sal =sal -1000  where empno=1024;

savepoint emp1; 
update emp set sal=sal+1000 where empno=8888;

rollback to emp1;

commit  ;

-----
 
set  transaction   read only ;  ---只读事务 必须放在  事务开启的第一行
update emp  set  sal =sal -1000  where empno=1024;

 

---

---- delete from emp 
select *from emp;
select *from dept;
---- delete from emp  where ?
delete from emp  --删除所有   清空表数据

delete from emp  where   empno=8888
-- 清空 工作地 在 DALLAS 所有员工    

select deptno from dept where loc='DALLAS';

delete from emp where deptno =(select deptno from dept where loc='DALLAS')

---- 清空表数据
select *from sc  ;
truncate table sc;  ---事务是自动提交的
----锁 ---
update emp set sal=1021 where empno=8888

update emp set sal=1021 where empno=1024

select *from emp  ;
select *from employee;
-----------------   复制表数据   表的结构 得一致
create table  employee 
(
empno number(4) not null  primary key,
ename varchar2(10)  ,
job  varchar2(10),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2)
);
--------------   复制表数据 
insert into employee (empno,ename) (select empno,ename from emp where deptno!=40)

insert into employee  (select * from emp where deptno!=40)
----合并  表数据
merge into employee e1 
 using emp  e2
 on  (e1.empno=e2.empno) 
when matched then ---条件是真
  update set e1.job=e2.job ,
             e1.hiredate=e2.hiredate
when not   matched then -----条件是假
   insert  values(e2.empno,e2.ename,e2.job,e2.mgr,e2.hiredate,e2.sal,e2.comm,e2.deptno)  
   
            


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值