Oracle处理数据(DML+DDL+DCL)+事务
2014-01-24 19:53
267 查看
SQL> /* SQL> SQL语句 SQL> 1. DML语句(Data Manipulation Language 数据操作语言): insert update delete select SQL> 2. DDL语句(Data Definition Language 数据定义语言): create/alter/drop/truncate table SQL> create/drop view,create/drop index(sequence,synonym) SQL> 3. DCL语句(Data Control Language 数据控制语言): commit rollback SQL> */ SQL> --插入insert SQL> --插入新员工 SQL> insert into emp(empno,ename,sal,deptno) 2 values(1001,'Tom',1000,10); SQL> --隐式插入null值、显式插入空值 SQL> --地址符 & SQL> insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno); 输入 empno 的值: 1003 输入 ename 的值: 'Mike' 输入 sal 的值: 3000 输入 deptno 的值: 20 原值 1: insert into emp(empno,ename,sal,deptno) values(&empno,&ename,&sal,&deptno) 新值 1: insert into emp(empno,ename,sal,deptno) values(1003,'Mike',3000,20) 已创建 1 行。 SQL> insert into emp(empno,ename,sal,deptno) values(&empno,'&ename',&sal,&deptno) 2 ; 输入 empno 的值: 1005 输入 ename 的值: fakfj 输入 sal 的值: 3000 输入 deptno 的值: 10 原值 1: insert into emp(empno,ename,sal,deptno) values(&empno,'&ename',&sal,&deptno) 新值 1: insert into emp(empno,ename,sal,deptno) values(1005,'fakfj',3000,10) 已创建 1 行。 SQL>--&就相当于prepareStatemment 而且为了不出错 字符串需要加上''尽量加在预编译时期 SQL> rollback; SQL> --在DML语句中使用地址符 SQL> select empno,ename,&a 2 from emp; 输入 a 的值: sal SQL> select * from &a; 输入 a 的值: dept SQL> --一次插入(拷贝)一批数据 SQL> create table emp20 as select * from emp where 1=2; 表已创建。 SQL> desc emp20 名称 是否为空? 类型 ----------------------------------------------------------------------------------- -------- -------------------------------------------------------- EMPNO NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) SQL> select * from emp20; 未选定行 SQL> --一次性将emp中所有20号部门的员工插入到emp20 SQL> insert into emp20 2 select * from emp where deptno=20; 已创建5行。 SQL> truncate table emp20; 表被截断。 SQL> select * from emp20; 未选定行 SQL> --等同于: delete from emp20; SQL> /* SQL> delete和truncate table的区别 SQL> 1. delete是DML,truncate是DDL (DML可以rollback,DDL不可以) SQL> 2. delete逐条删除;truncate先摧毁,再重建 SQL> 3. delet会产生碎片;truncate不会 SQL> 4. delete不会释放空间;truncate会 SQl> 5. 但是在oracle中delete内部做了很多优化 所以一般是delete性能好 SQL> */ SQL> set feedback off SQL>--关闭系统提示多少行收到影响
事务
SQL> /* SQL> Oracle中的事务 SQL> 1. 事务的起始标志: DML语句 SQL> 2. 事务的结束标志: 提交: 显式提交 commit SQL> 隐式提交 DDL 语句,正常退出 exit SQL> 回滚: 显式 rollback SQL> 隐式 非正常退出,掉电,宕机 SQL> */ SQL> --保存点 SQL> create table testsavepoint 2 (tid number,tname varchar2(20)); SQL> set feedback on SQL> insert into testsavepoint values(1,'Tom'); 已创建 1 行。 SQL> insert into testsavepoint values(2,'Mary'); 已创建 1 行。 SQL> --定义保存点 SQL> savepoint a; 保存点已创建。 SQL> insert into testsavepoint values(3,'Moke'); 已创建 1 行。 SQL> rollback to savepoint a; 回退已完成。 SQL> select * from testsavepoint; TID TNAME ---------- -------------------- 1 Tom 2 Mary 已选择2行。 SQL> commit; 提交完成。
事务的隔离级别
MySQL支持SQL99的四个 Oracle只支持2个 READ COMMITED 和Serializable 还支持另外一个不属于SQL99的规范 READ ONLY
相关文章推荐
- Oracle Class2. SQL查询和SQL函数(Oracle数据类型,ddl,dml,dcl,事务控制语言tcl,sql操作符,sql函数,select语句,运算符,分析函数,临时表)
- 关于Oracle处理DDL和DML语句的事务管理
- 关于Oracle处理DDL和DML语句的事务管理
- 关于Oracle处理DDL和DML语句的事务管理
- 关于Oracle处理DDL和DML语句的事务管理
- 谈谈对oracle处理DDL和DML语句的事务管理
- oracle之数据库事务的边界(DML,DDL,DCL)
- 数据库中事务DML,DDL,DCL,数据字典概念
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- oracle的DQL、DML、DDL、DCL的概念和区别
- DML需手动提交事务,DCL和DDL自动提交事务
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- ORACLE DML LOCK时找出对应SESSION正在执行的SQL语句(ORA-12841,无法变更事务处理中的会话并行 DML 状态)
- Oracle笔记(七) 数据更新、事务处理、数据伪列
- SQL语言:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)
- Oracle DDL,DML,DCL,TCL 基础概念
- Oracle DDL+DML+DCL实例
- Oracle DDL,DML,DCL,TCL 基础概念
- Oracle--DML、DDL、DCL
- Oracle笔记(七) 数据更新、事务处理、数据伪列