拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. 技术学习系列
  3. WERN_ORACLE培训
  4. 正文

第13部分 oracle11g的视图

2020年3月30日 732点热度 0人点赞 0条评论

一、目标

学会创建视图,使用视图

明白键保留表的含义和使用方式

二、视图(来自于基本表,在基本表上层的一种虚拟表)

  • 视图以经过定制的方式显示来自一个或多个表的数据

  • 视图可以视为“虚拟表”或“存储的查询”

  • 创建视图所依据的表称为“基表”

  • 视图的优点有:

        提供了另外一种级别的表安全性

        隐藏了数据的复杂性

        简化了用户的SQL命令

        隔离基表结构的改变

        通过重命名列,从另一个角度提供数据

  • 视图里面不存放数据,只是对表的一种定义

  • 物化视图与普通视图不一样,它是存在数据的

语法:

 CREATE [OR REPLACE] [FORCE] VIEW
    view_name [(alias[, alias]...)] 
  AS select_statement
  [WITH CHECK OPTION]
  [WITH READ ONLY];

三、创建视图

使用 WITH CHECK OPTION 选项创建视图

create or replace view view2 as select * from student where sno=3 with check option;

使用 ORDER BY 子句创建视图

create or replace view view3 as select * from student order by sno desc;

创建带有错误的视图

CREATE FORCE VIEW ven AS SELECT * FROM  address;

四、例子

1、创建视图(基表不存在的情况下)——需要用force,会提示编译错误。(为什么要这么用,可能就是为了在设计数据库初期,设计人员先设计了视图,而后期单独再增加'基表'来用)

SQL>create force view view1 as select * from emp10;

image.png

SQL>select view_name from user_views;

image.png

2、创建视图(基表存在的情况下)

image.png

3、查看两种表

image.png

如果把view1的基表emp10创建上,就可以正常访问了

image.png

五、with check option 和with read only——视图的更改会影响到基表

用于对视图的操作,如update,delete等,而上述with check option可以禁止用户对view直接操作基表。

SQL>create view view3 as select * from emp with read only;

六、在create view时可以直接使用order by...desc/asc(而在oracle中是无法使用的,只能在select * from view4 order by sal desc这样)

image.png

七、连接视图——(先连接表,再进行创建视图)

image.png

八、视图的DML语句

  • 在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE(前提是,视图是单表视图比较容易改。)

  • 视图上的DML语句有如下限制:

    (1)只能修改一个底层的基表

    (2)如果修改违反了基表的约束条件,则无法更新视图

    (3)如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图

    (4)如果视图包含伪列或表达式,则将无法更新视图

image.png

image.png

八、键保留表,非键值保留表

image.png

1、创建student,department表,以及view_stu_dept连接视图

create table student(sno number(6) primary key,sname varchar2(10),deptno char(3));
insert into student values(1,'zhangsan','001');
insert into student values(2,'lisi','002');
insert into student values(3,'wangwu','003');

create table department(deptno char(3)  primary key,deptname varchar2(20));
insert into department values('001','Chinese');
insert into department values('002','MATH');
insert into department values('003','ENGLISH');

create view view_stu_dept
as
	select s.sno,s.sname,s.deptno deptno1,d.deptno deptno2,d.deptname 
	from student s,department d
	where s.deptno=d.deptno;

键值保留表:一张表,在原表中的主键,关联视图后,在视图中,仍然作为主键列,此主键列的表,称为键保留表。上例中,student的sno在view中仍然为主键。

非键保留表:一张表,在原表中的主键,关联视图后,在视图中,不被作为主键列,此主键列的表,称为键保留表。上例中,department的deptname在view中仍然为主键。

image.png

更新视图:SQL> update view_stu_dept set sno=1 where sno=11;

image.png

非键值保留表中的列可以更新

image.png

键值保留表中的列不可以更新

image.png

九、instead of 触发器(可以对费键值保留表的更改)

十、视图中的函数

视图中可以使用单行函数、分组函数和表达式

必须为使用函数或者表达式的字段指定一个别名

CREATE VIEW item_view AS 
SELECT itemcode, LOWER(itemdesc) item_desc
FROM itemfile;
SQL> create view view_upper as select sno,upper(sname) new_name from student;

image.png

十一、删除视图

SQL>drop veiw view_upper;

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2020年3月30日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号