2018.6.24 oracle数据库的 事务及视图
第06章 事务及视图
本章内容
事务
视图
1 事务
1.1 什么是事务
事务也称工作单元,是一个或多个SQL语句组成的序列,这些个SQL操作作为一个完整的工作单元要么全部执行,要么全不执行。
例如:
Bank 转账
A------B 2000
1) A -2000
-------------
2) B +2000
1.2 事务的特性
1、原子性:不可再分的。
2、一致性:不管是谁操作了数据库,那么在数据库中的数据状态是一致的。大家看到的结果是一致的。
3、隔离性:A操作的时候,不影响B,A在提交(commit)之前,可以查看到修改后的结果,但是B看不到。(commit之后,A的操作才真正执行到数据库,在commit之前可以通过rollback撤消操作)
4、持久性:一旦提交,对数据的修改是永久的。
1.3 事务常用的关键字
1.3.1 提交事务(commit)
作用:对表执行DML语句后,实际上数据并没有在磁盘数据文件发生变化,而是改变内存中的显示,这时的数据,我们称之为赃数据,当我们执行了commit之后,此时数据才真正的写入了数据文件,其它会话才能看到变化的数据。
1.3.2 自动提交事务
- 当执行DDL语句,如create,alter,drop table..
- 当执行DCL语句, grant , revoke,commit、rollback...
- 当退出(执行exit) sqlplus
1.3.3 回滚事务(rollback)
作用:可以对之前的dml语句误操作进行反悔。
1.3.4 只读事务的操作(read only)
set transaction read only;
注:只读事务它只能是在事务操作前的第一句话,它跟其它会话提交事务无关.但是事务的提交则可以同步到其它会话改变的数据,什么时候使用只读事务?一般在某个时间点统计数据的时候进行使用.
实验1:冻结视图
1.3.5 保存点的操作(savepoint)
-设置保存点:savepoint 保存点名称
-回退到保存点:rollback to 保存点名称
-回退所有的事务操作:rollback;
通过保存点的操作,可以有效的保证损失降到最低.我们可以通过保存点的设置来进行数据的回退.
实验2:保存点操作示例
提交后的数据状态
- 数据的改变已经保存到了数据库中。
- 所有的用户可以看到结果。
- 所有的保存点被释放。
- 锁被释放,其他用户可以操作涉及到的数据。
2 视图
2.1 概述
视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。(视图不是真实存在磁盘上的)
2.2 视图与表的区别
表需要占用磁盘空间,视图不需要
视图不能添加索引(所以查询速度略微慢点)
使用视图可以简化复杂查询
视图的使用利于提高安全性
视图能对查询出来的记录进行修改,并将修改后的数据回送到源表中
2.3 创建视图
--语法结构:
CREATE[OR REPLACE][FORCE][NOFORCE]VIEW view_name
[(column_name)[,….n]]
AS Select_statement
[WITH CHECK OPTION[CONSTRAINT constraint_name]]
[WITH READ ONLY]
--参数说明
CREATE OR REPALCE:--用于创建和修改视图
WITH CHECK OPTION :--用于创建限制数据访问的视图
WITH READ ONLY :--用于创建只读视图
--简化:
create view 视图名 as select 语句;
2.4 创建或修改视图
create or replace view 视图名 as select 语句 [with read only]
2.5 删除视图
drop view 视图名
备注:当表查询非常复杂时,请使用视图吧!
--示例:显示与SMITH 同部门的所有员工?映射到该视图(view)
SELECT * FROM emp WHERE
deptno = (select deptno from emp WHERE ename ='SMITH');
2.6 with_check_option演示
2.7 相关数据字典
--查看当前用户下的视图
SELECT * FROM USER_VIEWS;
--查看数据库下所有视图
SELECT * FROM DBA_VIEWS;
2018.6.24 oracle数据库的 事务及视图的更多相关文章
- Oracle数据库之事务
Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...
- 小菜鸟之Oracle数据库之事务
Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...
- 2018.6.4 Oracle数据库预定义的异常列表
declare v_ename emp.ename%type; begin select ename into v_ename from emp where empno=&gno; dbms_ ...
- 优化MySchool数据库(事务、视图、索引)
事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...
- Oracle数据库只读事务和无事务的区别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt382 Oracle默认情况下(没有事务) 保证了SQL语句级别的读一致性,即 ...
- 2018.6.10 Oracle数据库常见的错误汇总
1.ClassNoFoundException 找不到注册驱动 可能原因:1>驱动名称不对 2>没有导入数据库驱动包 2.SQl 语句中可以使用任何有效的函数,函数操作的列,必须指定别名, ...
- 2018.5.9 Oracle数据库查询命令
0.查询所有数据(最简单,但是时间很久) select * from emp; Result: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- - ...
- 2018.6.1 oracle数据库乱码问题
执行select * from v$controlfile;为什么结果是未选定行? 显示连接了但是select * from dba_data_files; 显示中文乱码: shutdown star ...
- 2018.5.30 Oracle数据库PLSQL编程---游标的使用
显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...
随机推荐
- cf785D(组合数学)
题目链接: http://codeforces.com/problemset/problem/785/D 题意: 左边全为 '(' 右边全为 ')' 且两者数量想等的字符串称为 RSBS. 给出一个由 ...
- SP375 QTREE - Query on a tree
题意大意 给定\(n\)个点的树,边按输入顺序编号为\(1,2,...n-1\),要求作以下操作: CHANGE \(i\) \(t_i\) 将第\(i\)条边权值改为\(t_i\),QUERY \( ...
- Navicat连接MySQL数据库的一些问题与解决方案
前言 安装MySQL数据库与Navicat并不算难事,关键是怎么让他们工作花费了我整整一天的时间,最终才把弄好.遇到各种各样的问题,上网看了大量博客,发现很多博客都是直接copy或者并不能非常好的解答 ...
- Luogu P3223 [HNOI2012]排队 组合
本来做了一道 P4901 排队 后来发现自己做错题了...到也都是数学qwq 这题最恶心的就是两只(雾)老师. 那我们分类讨论: 1.两个老师之间是男生: $ A(n,n)*A(n+1,2)*A(n ...
- 练习四十六:列表排序,删除list中重复的元素
方法一:使用集合set;将list直接转换为set a = [1,3,4,3,5,7] a = list(set(a)) print(a) 执行结果: [1, 3, 4, 5, 7] 方法二:直接排序 ...
- 非关系型数据库---Memcached
一.概述 1.Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载: 2.Memcached通过 在内存中缓存对象和数据 来减少读取数据库的次数,从而提升网站的 ...
- Hadoop TaskScheduler源码分析
TaskScheduler是MapReduce中的任务调度器.在MapReduce中,JobTracker接收JobClient提交的Job,将它们按InputFormat的划分以及其他相关配置,生成 ...
- 程序代码里出现illegal character '\ufeff' 和 expected class or object definition的解决办法(图文详解)
不多说,直接上干货! 问题详情 问题分析 可能原因导致1:你的程序也许,是在他人那里复制而来,会导致这样的问题. 可能原因导致2:由于页面编码造成的. 可能原因导致1的解决办法 这个,好比,我 ...
- Python 为threading.Thread添加 terminate
import threading import inspect import ctypes def _async_raise(tid, exc_type): """rai ...
- Unity3D C# 学习List数据类型的使用
List<T>类是ArrayList 类的泛型等效类. 该类使用大小可按需动态增加的数组实现 泛型的好处: 它为使用 c#语言编写面向对象程序增加了极大的效力和灵活性.不会强行对值类型进行 ...