您的位置:首页 > 数据库 > Oracle

ORACLE SQL DML语句

2015-06-18 14:38 435 查看
第八章:DML语句
增加新行:insert
desc dept
insert into dept values (50,'driver','bj');

desc emp
insert into emp values
(1,
'ALEX',
'CLERK',
7566,
to_date('2011-01-02','yyyy-mm-dd'),
2000,
null,
50);

insert into emp (empno,ename,hiredate)
values
(2,'ALVIN',sysdate);

insert into emp (empno) values (1);
ORA-00001: unique constraint (SCOTT.PK_EMP) violated

insert into emp (ename) values ('X5');
ORA-01400: cannot insert NULL into ("SCOTT"."EMP"."EMPNO")

拷贝行:借助子查询
insert into bonus select ename,job,sal,comm from emp where deptno=10;

insert into bonus (ename)
select ename from emp where deptno=20;

修改现有行:
update emp set job='ANALYST',
mgr=7839,
sal=3500
where empno=2;

update emp set deptno=10 where empno=2;

将MILLER调到BLAKE所在的部门,工资和SCOTT相同
update emp set
deptno=(select deptno from emp where ename='BLAKE'),
sal=(select sal from emp where ename='SCOTT')
where ename='MILLER';

将smith调到80部门

删除表中的行:
delete emp where empno=1;
delete emp where empno in (2,3);
delete dept where deptno=50;
delete bonus; --删除所有行

9i数据仓库增强
create table copy_emp as select * from emp;

source : emp --> target : copy_emp

update emp set sal=sal+100;
insert into emp (empno,ename) values (7935,'XXX');

MERGE INTO c --目标
USING emp e --源
ON (c.empno = e.empno)
WHEN MATCHED THEN
UPDATE SET
c.ename = e.ename,
c.job = e.job,
c.mgr = e.mgr,
c.hiredate = e.hiredate,
c.sal = e.sal,
c.comm = e.comm,
c.deptno = e.deptno
WHEN NOT MATCHED THEN
INSERT VALUES(e.empno,
e.ename,
e.job,
e.mgr,
e.hiredate,
e.sal,
e.comm,
e.deptno);

事务(交易)的概念:DML语句的逻辑集合
事务包含的操作:DML + DDL & DCL & COMMIT & ROLLBACK
事务的开始:第一条DML语句
事务的结束:commit & rollback 命令

隐式的commit
DDL :create,drop,truncate,rename,alter
DCL : grant,revoke
SQL>exit
set autocommit on

隐式的rollback
网络中断
系统宕机
直接关闭终端窗口使sqlplus关闭

阶段回退:
savepoint a1;
rollback to a1;

select * from t; --scn 234985789 -->timestamp

begin
for i in 1..320000 loop
insert into t values (1);
end loop;
commit;
end;
/

读一致性:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle sql dml