----------------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)