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;
/
读一致性:
增加新行: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;
/
读一致性:
相关文章推荐
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- SQL Server 语句操纵数据库
- 表空间操作
- PreparedStatement中in子句的处理
- SQL(结构化查询语句)
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- OS block size和Oracle block size,查找OS Blocksize的方法
- linux快速部署mysql服务器