Oracle数据库:oracle事务处理语言TCL,commit,rollback,savepoint语句
2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
oracle系列文章:
【1】Oracle数据库:啥是oracle数据库?你为啥要学oracle?
【2】Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样
【3】Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法
【4】Oracle数据库:创建表空间,创建新用户,给用户分配对象、角色和系统权限,登录新用户建表
【5】Oracle数据库:链接配置,包括sqlnet.ora里面的transnames.ora配置数据库标识符SID,listener暂时简单了解
【6】Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库
【7】Oracle数据库:oracle字符类型、数字类型、创建表表名的命名规则
【8】Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写
【9】Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系
【10】Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作
【11】Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句
【12】Oracle数据库:逻辑运算and,or,not和各种运算的优先级控制
【13】Oracle数据库:排序order by语句,select from where order by的执行先后顺序,各种样例
【14】Oracle数据库:oracle函数,单行函数,多行函数,upper,lower,initcap,字符串函数
【15】Oracle数据库:数字函数,日期函数,round,trunc,mod,months_between,add_months,next_day,last_day,sysdate
【16】Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数
【17】Oracle数据库:oracle函数嵌套,nvl函数,nvl2函数,nullif函数,coalesce合并函数
【18】Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例
【19】Oracle数据库:oracle多表查询,等值连接,非等值连接,自连接的sql语句和规则
【20】Oracle数据库:oracle外连接left/right/full outer join on,oracle扩展的左右外连接展示符号(+)
【21】Oracle数据库:自然连接natural join,using语句,注意避免写交叉连接
【22】Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例
【23】Oracle数据库:oracle组函数,聚合函数,多行函数,avg,sum,min,max,count,group by,having
【24】Oracle数据库:oracle嵌套分组函数(聚合函数),组函数的练习题,挺复杂的,用好decode函数,很有趣
【25】Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例
————前面这些都是数据库查询语言的重要知识,一定要牢牢掌握和熟悉
后面的相对简单一点
【26】Oracle数据库:数据库操纵语言DML,插入insert into where,更新update where,删除delete where
oracle事务处理语言TCL【transaction control language】
之前讲的DML很简单
今天开始讲事务处理语言
执行对数据库的操作中
要么干
要么不干
如果有一条操作失败,那么其他操作统统保持失败!!!
比如转账,从A给B转账500
但是你发现中途网络卡死,那你所有操作失败【数据库就不会记录任何一个操作】
要从新输入金额,然后继续输入密码啥的各种操作
上面的例子就是一个事务,事务由一个个的操作流程组成
同一时间你取钱,入账怎么搞??
必须排队干,一个干完再干另一个
否则gg
事务类型:现实、隐式
DDL定义,创建操作啥的
DCL控制,授权啥的操作啥的
使用事务commit、rollback、savepoint
回滚,就是撤销,我们经常骚操作的ctrl z
这个操作前面我说过很多次了
SQL> insert into emp values(1,'a',100,0.1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from emp;
前面必须提交commit
否则你只能在临时表格中玩
不会永久的
包括删除操作,也需要commit
SQL> select * from emp where id=1;
ID NAME SALARY COMMISSION
---------- -------------------------------------------------- ---------- ----------
1 a 100.00 0.10
SQL> delete emp where id=1;
1 row deleted
SQL> commit;
Commit complete
SQL> delete emp where id=1;
0 rows deleted
回滚就是撤销
SQL> delete emp where id = 1;
1 row deleted
SQL> rollback;
Rollback complete
SQL> commit
2 ;
Commit complete
SQL> insert into emp values(2,'tt',100,0);
1 row inserted
SQL> rollback;
Rollback complete
SQL> commit;
Commit complete
SQL> select * from where id =2;
select * from where id =2
ORA-00903: 表名无效
SQL> select * from emp where id =2;
ID NAME SALARY COMMISSION
---------- -------------------------------------------------- ---------- ----------
插入又撤销,好说
指定回滚的点
这有啥用?
SQL> insert into emp values(2,'tt',3000,null);
1 row inserted
SQL> savepoint A;
Savepoint created
SQL> insert into emp values(3,'yy',4000,null);
1 row inserted
SQL> savepoint B;
Savepoint created
SQL> delete emp;
64 rows deleted
SQL> rollback to A;
Rollback complete
SQL> commit;
Commit complete
SQL> select * from emp where id = 2;
ID NAME SALARY COMMISSION
---------- -------------------------------------------------- ---------- ----------
2 tt 3000.00
SQL> select * from emp where id = 3;
ID NAME SALARY COMMISSION
---------- -------------------------------------------------- ---------- ----------
当你设置回滚点A时
如果真的回滚到A
则A执行,A之下的别的骚操作就不执行,撤销了
你看看上面2就有,3没有了
懂?
DCL这些事务处理语言,基本很简单,用得多的就是commit和rollback
savepoint很少,没必要
总结
提示:重要经验:
1)
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。