oracle+事务 分类,Oracle处理数据(DML+DDL+DCL)+事务

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>--关闭系统提示多少行收到影响

事务

0818b9ca8b590ca3270a3433284dd417.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值