第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 自动提交事务

  1. 当执行DDL语句,如create,alter,drop table..
  2. 当执行DCL语句, grant , revoke,commit、rollback...
  3. 当退出(执行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:保存点操作示例

提交后的数据状态
  1. 数据的改变已经保存到了数据库中。
  2. 所有的用户可以看到结果。
  3. 所有的保存点被释放。
  4. 锁被释放,其他用户可以操作涉及到的数据。

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数据库的 事务及视图的更多相关文章

  1. Oracle数据库之事务

    Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...

  2. 小菜鸟之Oracle数据库之事务

    Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...

  3. 2018.6.4 Oracle数据库预定义的异常列表

    declare v_ename emp.ename%type; begin select ename into v_ename from emp where empno=&gno; dbms_ ...

  4. 优化MySchool数据库(事务、视图、索引)

    事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...

  5. Oracle数据库只读事务和无事务的区别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt382 Oracle默认情况下(没有事务) 保证了SQL语句级别的读一致性,即 ...

  6. 2018.6.10 Oracle数据库常见的错误汇总

    1.ClassNoFoundException 找不到注册驱动 可能原因:1>驱动名称不对 2>没有导入数据库驱动包 2.SQl 语句中可以使用任何有效的函数,函数操作的列,必须指定别名, ...

  7. 2018.5.9 Oracle数据库查询命令

    0.查询所有数据(最简单,但是时间很久) select * from emp; Result: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- - ...

  8. 2018.6.1 oracle数据库乱码问题

    执行select * from v$controlfile;为什么结果是未选定行? 显示连接了但是select * from dba_data_files; 显示中文乱码: shutdown star ...

  9. 2018.5.30 Oracle数据库PLSQL编程---游标的使用

    显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...

随机推荐

  1. [Django笔记] Apache + mod-wsgi 环境部署所遇到的各种问题总结

    在一台CentOS7机器上配置Django+apache运行环境 Django安装 python2 or python3 ? 一般情况下Linux系统都有自带python2,本机CentOS7上的是p ...

  2. 【NOIP模拟赛】收银员(一道差分约束好题)

    /* s[]表示最优方案的序列中的前缀和,那么s[23]就是最优方案 由题意我们可以列出这样一些式子: s[i]+s[23]-s[16+i]>=a[i] (i-8<0) s[i]-s[i- ...

  3. bzoj3171: [Tjoi2013]循环格(费用流)

    传送门 其实这题的建图并不难(虽然我并没有想出来) 首先,每一个点的入度和出度必须为$1$ 那么我们考虑拆点 每个点的出度点向它能到达的点的入度点连边,容量$1$,如果方向为原来的方向则费用$0$否则 ...

  4. vue-cli3.0 脚手架搭建项目

    1.安装vue-cli 3.0 npm install -g @vue/cli # or yarn global add @vue/cli 安装成功后查看版本:vue -V(大写的V) 2.命令变化 ...

  5. shell学习(14)- who

    Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID.使用的终端机.从哪边连上来的.上线时间.呆滞时间.CPU 使用量.动作等等. 使用权限:所有使用者都可使用. 语 ...

  6. python抓取知乎热榜

    知乎热榜讨论话题,https://www.zhihu.com/hot,本文用python抓取下来分析 #!/usr/bin/python # -*- coding: UTF-8 -*- from ur ...

  7. LeetCode初级算法(其他篇)

    目录 缺失数字 位1的个数 颠倒二进制位 有效的括号 汉明距离 帕斯卡三角形 缺失数字 最初的想法是将0到n全部加起来,再减去输入的数字之和,那么差如果非零的话就是我们所需要的数字.但是一想,可能会发 ...

  8. 瓷砖覆盖(状压DP)

    题目描述 Description 用1*2的瓷砖去铺N*M的地面,问有多少种铺法 输入描述 Input Description 第一行有两数n,m.表示地面的大小 输出描述 Output Descri ...

  9. jquery——幻灯片(只动一屏)

    制作天天生鲜的幻灯片部分 贴了全部代码: main.html: <!DOCTYPE html> <html lang="en"> <head> ...

  10. remote error: You can't push to git 解决办法