数据库对象包含:表,视图,索引,序列

①视图在SQL语句中体现的角色与表一样,但是视图并非真实存在的表,它只是对应一条查询语句的结果集

②使用视图通常是为了重用子查询,简化SQL语句的复杂度和限制某些数据的访问。

创建一个包含10号部门员工信息的视图:

CREATE VIEW v_emp_10_weiyiji

AS

SELECT empno,ename,sal,job,deptno FROM emp_weiyiji

WHERE deptno=10查看视图结构

DESC v_emp_10_weiyiji

SELECT*FROM v_emp_10_weiyiji

③视图中对应的子查询中若含有函数或表达式,那么该字段必须给别名。并且字段的别名会成为该视图对应字段的名字。

CREATE OR REPLACE VIEW v_emp_10_weiyiji

AS

SELECT empno id,ename name, sal salary,job,deptno

FROM emp_weiyiji

WHERE deptno= 10SELECT*FROM v_emp_10_weiyiji

针对视图的DML操作:复杂视图不能进行DML操作

④对简单视图进行DML操作就是对该视图数据来源的基础表进行的。

INSERT INTO v_emp_10_weiyiji

(id,name,salary,job,deptno)

VALUES

(1001,'JACK',2000,'CLERK',10)

SELECT*FROM v_emp_10_weiyiji

SELECT*FROM emp_weiyiji

UPDATE v_emp_10_weiyiji

SET salary=3000WHERE id=1001DELETE FROM v_emp_10_weiyiji

WHERE id=1001对视图进行DML操作是可能会污染基础表数据的,即:对视图进行DML操作后,视图对该数据不可见,从视图插入一行其他部门数据数据,视图看不见,但是基表存在。

INSERT INTO v_emp_10_weiyiji

(id ,name,salary,job,deptno)

VALUES (1001,'JACK',2000,'CLERK',20)

SELECT*FROM v_emp_10_weiyiji

SELECT*FROM emp_weiyiji

将视图的部门号改成20

UPDATE v_emp_10_weiyiji

SET deptno=20SELECT*FROM v_emp_10_weiyiji

⑤为了避免不当的DML操作会污染基表,可以为视图添加检查选项:WITH CHECK OPTION,当视图添加了该选项后,那么对视图进行DML操作时,视图会检查执行该操作后视图是否对操作的记录可见,不可见则不允许该DML操作。

CREATE OR REPLACE VIEW v_emp_10_weiyiji

AS

SELECT empno id ,ename name,

sal salary,job deptno

FROM emp_weiyiji

WHERE deptno= 10WITH CHECK OPTION

为视图添加只读选项后,该视图不允许进行DML任何操作

CREATE OR REPLACE VIEW v_emp_10_weiyiji

AS

SELECT empno id ,ename name,

sal salary,job deptno

FROM emp_weiyiji

WHERE deptno= 10WHERE READ ONLY

数据字典可以产看用户创建的数据库对象信息

SELECT object_name,object_type

FROM user_objects

WHERE object_name LIKE'%_WEIYIJI'SELECT view_name,text

FROM user_views

WHERE view_name LIKE'%_WEIYIJI'创建复杂视图:当视图对应的SQL语句含有函数,表达式分组,去重或关联查询时,该视图为复杂视图。

复杂视图不允许进行DML操作

创建一个含有每个部门薪资情况的视图

CREATE VIEW v_dept_weiyiji

AS

SELECT

MAX(e.sal) max_sal,

MIN(e.sal) min_sal,

AVG(e.sal) avg_sal,

SUM(e.sal) sum_sal,

d.deptno,d.dname

FROM emp_weiyiji e, dept_weiyiji d

WHERE e.deptno=d.deptno

GROUP BY

d.deptno,d.dname

SELECT*FROM v_dept_weiyiji

查看谁的工资高于所在部门的平均工资?

SELECT e.ename,e.sal,e.deptno

FROM emp_weiyiji e,v_dept_weiyiji v

WHERE e.deptno=v.deptno AND e.sal>v.avg_sal

删除视图

DROP VIEW v_emp_weiyiji

oracle sequrnce_OracleSql语句学习(五)相关推荐

  1. Oracle中SQL语句学习五(统计分组语句group by和having)

    oracle(41) 在 应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时,需要将表中的数据进行分组显示,在统计分组中是通过group by子句.分组函数.having子句共同实现的.其中 ...

  2. 【日常学习笔记】2019/1/10(Oracle语句学习)

    Oracle语句学习 (1)select * from dual中的dual到底是什么? 在sql-developer中测试发现,dual只是一个包含一列,永远只返回一条数据记录的虚拟表.使用dual ...

  3. 常用Sql语句学习总结

    Sql语句学习总结用于以后复习查看 结构化查询语言(Structured Query Language),简称SQL: DQL:数据查询语言,用于对数据进行查询,如select DML:数据操作语言, ...

  4. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

  5. oracle pl sql示例,oracle PL SQL学习案例(一)

    oracle PL SQL学习案例(一) [示例1.1]  查询雇员编号为7788的雇员姓名和工资. 步骤1:用SCOTT/TIGER账户登录SQL*Plus. 步骤2:在输入区输入以下程序: /*这 ...

  6. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  7. MySQL学习笔记04-DDL语句学习

    目录 07.DDL语句学习 7.1.库和表的管理 库的管理 库的创建:CREATE 库的修改:ALTER 库的删除:DROP 表的管理 表的创建:CREATE 表的修改:ALTER 表的删除:DROP ...

  8. 官方资料:Oracle 10g DBA 学习手册(精心整理,申请加精)

    官方资料:Oracle 10g DBA 学习手册(精心整理,申请加精) 目的 本章让您了解如何使用 Oracle Universal Installer (OUI) 安装您的 Oracle 数据库软件 ...

  9. Oracle开发实战学习

    Oracle开发实战学习 文章目录 Oracle开发实战学习 第1章 Oracle关系数据库 作业: 第2章Oracle数据库的体系结构 2.1 Oracle的物理存储结构 2.2 Oracle的逻辑 ...

最新文章

  1. MapReduce多表连接
  2. tensorflow 显存 训练_【他山之石】训练时显存优化技术——OP合并与gradient checkpoint...
  3. JVM 调优实战--内存溢出的定位和MAT分析
  4. golang 结构体判空
  5. AWS ECS简单了解
  6. vue data 值如何渲染_vue源码阅读复盘-watcher模块
  7. .Net面试葵花宝典
  8. hdu Train Problem I
  9. 流水灯程序总结:关于Crol和cror的用法
  10. 解决执行hive语句时出现虚拟内存不够的问题
  11. 实验5、D/A转换实验
  12. android 后台监听按键,Android监听home键的方法详解
  13. 微软2017年预科生计划在线编程笔试第二场-#1498 : Diligent Robots
  14. 你知道微服务如何拆分,能解决哪些问题?
  15. Cubase10.5稳定版安装包+安装教程
  16. 我开发过程中遇到的Echarts地图立体描边问题解决方式
  17. GowLom2 战神引擎传奇手游Mir200\Envir 目录主要配置文件中文翻译大全
  18. liunx常驻运行项目命令
  19. eclipse代码中文乱码解决方法
  20. matlab波特一致性,一种基于MATLAB的数据一致性的分析方法与流程

热门文章

  1. 直播「拯救」互联网?
  2. PEOPEO中国区总经理于景:当我谈交互设计时我谈些什么
  3. 创业?你还差一位合格的产品经理
  4. 小程序离成功还差一个版本
  5. 比尔盖茨,马斯克、霍金都告诉你:为什么要警惕人工智能(中)
  6. windows下配置Python环境并安装Pycharm2018
  7. leaflet知识整理
  8. php网页跳转无法获取session值
  9. Python - Windows系统下安装使用virtualenv
  10. [MAC] Mac OS X下快速复制文件路径的方法