7.Oracle视图创建与使用

1、视图的创建与使用
在所有进行的SQL语句之中,查询是最复杂的操作,而且查询还和具体的开发要求有关,那么在开发过程之中,程序员完成的并不是是和数据库的所有内容,而更多的是应该考虑到程序的设计结构。可以没有一个项目里边不会包含有复杂查询,那么程序员如何从复杂查询中解脱出来呢?

所以在这种情况下就提出了视图的概念。利用视图可以实现复杂SQL语句封装操作

所以视图的创建需要使用如下语法完成:

create [or replace] view 视图名称 as 子查询 

1.1 范例1:创建视图

范例1: 创建视图,下面这条语句的作用就是希望将10部门的所有雇员信息保存在视图之中

create view myview as select * from emp where deptno=10;

注意:在Orcale 10g及之前的版本,scott用户是可以直接进行视图创建的,但是从Oracle 10g r2版本开始,如果想要创建视图,那么就需要单独分配创建视图的权限

1.2 范例2:查询视图

select * from myview;

发现查询视图与之前直接使用select查询结果是完全相同的,所以视图就包装了SQL语句,而开发者可以通过视图简单地查询到所需要的数据

于是下面可以继续利用视图包装一个复杂的SQL

drop view myview;
create view myview
    as
select d.deptno,d.dname,d.loc,temp.count
from dept d,(select deptno,count(*) count
             from emp
             group by deptno) temp
where d.deptno=temp.deptno(+);

由于myview视图名称已经被占用了,所以理论上应该先删除,而后再创建一个新的视图。可以是删除和创建之间有可能产生间隔。所以在实际之中,由于视图使用频率较高,而且直接与开发有关系,那么一般情况下不会选择删除后再重新创建,而是选择进行视图的替换。利用新的查询替换掉旧的查询。

create or replace view myview
    as
select d.deptno,d.dname,d.loc,temp.count
from dept d,(select deptno,count(*) count
             from emp
             group by deptno) temp
where d.deptno=temp.deptno(+);

1.3 范例3:更新视图

实际上视图中只是包含有查询语句的临时数据,并不是真是存在的,可以在默认情况下创建的视图是可以直接进行修改操作的

create or replace view myview 
    as 
select * from emp where deptno=20;

更新视图中数据的部门编号(视图的存在条件)

update myview set deptno=30 where empno=7369;

发现此时更新了视图,结果导致emp表中的内容也发生了变化。所以为了保证视图的创建条件不能够被更新,则可以在创建视图的时候使用withcheck option子句

回滚一下 回复以前数据

rollback

接着在之前视图的基础上加上withcheck option 子句

create or replace view myview 
    as 
select * from emp where deptno=20
with check option;

此时使用了withcheck option 子句可以保证视图的创建条件不被更新,如果使用了更新,则将出现如下的错误

1.4 范例4: 修改其他字段

update myview set sal=80000 where empno=7369;

 

此时的操作的成功了,发现视图更新时,改变的是数据表中的数据,那么这样的做法同样也是不合理的。就好比给你发的一张工资条,你不满意,改成了80000,然后数据库的数据就变了,那多神奇啊

所以一般在创建视图的时候,由于里面都属于映射的数据,那么本质上就不建议其进行修改,最好的视图就是创建一个只读视图。使用with read only 子句完成

create or replace view myview 
    as 
select * from emp where deptno=20
with read only;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/60677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程分享】Docker搭建Zipkin,实现数据持久化到MySQL、ES

1 拉取镜像 指定版本,在git查看相应版本,参考: https://github.com/openzipkin/zipkin 如2.21.7 docker pull openzipkin/zipkin:2.21.7 2 启动 Zipkin默认端口为9411。启动时通过-e server.portxxxx设置指定端口 docker run --name zi…

无涯教程-Android - RadioGroup函数

RadioGroup类用于单选按钮集。 如果我们选中属于某个单选按钮组的一个单选按钮,它将自动取消选中同一组中以前选中的任何单选按钮。 RadioGroup属性 以下是与RadioGroup控制相关的重要属性。您可以查看Android官方文档以获取属性的完整列表以及可以在运行时更改这些属性的相关…

可视化工具 netron pt 转 onnx 格式

用于学习记录 文章目录 前言一、Netron 在线使用二、pt 格式转换为 ONNX 格式总结 前言 Netron 是一个开源的网络可视化工具,可以帮助开发人员和数据科学家可视化、理解和调试深度学习模型。它支持多种常见模型格式,如 TensorFlow、PyTorch、ONNX、Caff…

企业网络安全:威胁情报解决方案

什么是威胁情报 威胁情报是网络安全的关键组成部分,可为潜在的恶意来源提供有价值的见解,这些知识可帮助组织主动识别和防止网络攻击,通过利用 STIX/TAXII 等威胁源,组织可以检测其网络中的潜在攻击,从而促进快速检测…

网络中的问题2

距离-向量算法的具体实现 每个routerY的路由表表项 involve<目的网络N&#xff0c;距离d&#xff0c;下一跳X> 对邻居X发来的报文,先把下一跳改为X,再把距离1,if original route table doesn’t involve N,add this item&#xff1b; else if original table’s relate…

SPSS--s04典型相关分析

典型相关基本原理 典型相关分析是主成分分析和因子分析的进一步发展 ,是研究两组变量间的相互依赖关系 ,把两组变量之间的相互关系变为研究两个新的变量之间的相关,而且又不抛弃原来变量的信息 ,这两个新的变量分别由第一组变量和第二组变量的线性组合构成 ,并且两组变量的个数…

「MySQL-00」MySQL在Linux上的安装、登录与删除

目录 一、安装MySQL 0. 安装前请先执行一遍删除操作&#xff0c;把预装或残留的MySQL删除掉 1. 安装yum源 &#xff08;解决了在哪里找MySQL的问题&#xff09; 2. 安装哪个版本的MySQL 二、启动和登录MySQL 三、删除MySQL / MariaDB 安装与卸载前&#xff0c;建议先将用户切换…

渲染如何做到超强渲染?MAX插件CG MAGIC中的渲染功能!

渲染工作应该算是设计师的日常工作流程中最重要的环节之一了。如果渲染速度加快&#xff0c;可能是要看渲染技巧掌握的有多少了。 大家熟悉的3d Max本地渲染通道&#xff0c;对于CG MAGIC渲染功能你也一定不能错过&#xff0c;要知道操作简单易使用&#xff0c;就完全拿捏了效率…

mojo初体验

目录标题 mojo初体验试用地址变量定义参数可变性和所有权Structures后续 mojo初体验 试用地址 https://www.modular.com/get-started 与python基础语法很相似。 变量定义 let定义不可变变量var定义可变变量 参数可变性和所有权 下面是一个基本的函数&#xff1a; fn add…

软件测试/测试开发丨Python 学习笔记 之 链表

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26458 链表与数组的区别 复杂度分析 时间复杂度数组链表插入删除O(n)O(1)随机访问O(1)O(n) 其他角度分析 内存连续&#xff0c;利用CPU的机制&#xff0…

【阻塞队列】

文章目录 普通队列存在的问题单锁实现双锁实现 普通队列存在的问题 大部分场景要求分离向队列放入&#xff08;生产者&#xff09;、从队列拿出&#xff08;消费者&#xff09;两个角色、它们得由不同的线程来担当&#xff0c;而之前的实现根本没有考虑线程安全问题队列为空&a…

10、【WebGIS实战】图层篇——通用服务图层加载全流程(适用于全部图层)

大家好,我是X北辰北。本文是「WebGIS实战」系列,关注这个标签,阅读所有文章,成为WebGIS开发高手。 图层可以理解为添加到地图上面的数据,比如我们要在地图上展示成都市所有大型公园的位置,那么当前地图中除了初始化地图时添加的底图之外,在底图的上面我们还叠加了一份关…

Jmeter接口测试+压力测试

接口测试 Jmeter-http接口脚本 一般分五个步骤:&#xff08;1&#xff09;添加线程组 &#xff08;2&#xff09;添加http请求 &#xff08;3&#xff09;在http请求中写入接入url、路径、请求方式和参数 &#xff08;4&#xff09;添加查看结果树 &#xff08;5&#xff09;…

关于浏览器中使用迅雷组件下载文件的问题

目录 前言 场景 问题 解决 前言 在项目开发中肯定会涉及到下载导出功能&#xff0c;对于开发人员来说一般习惯使用谷歌、火狐等其他浏览器进行功能测试&#xff0c;例如谷歌浏览器支持加入扩展程序&#xff0c;扩展程序的位置在&#xff1a;点击右上角三个点>找到设置点开…

QT下使用ffmpeg+SDL实现音视频播放器,支持录像截图功能,提供源码分享与下载

前言&#xff1a; SDL是音视频播放和渲染的一个开源库&#xff0c;主要利用它进行视频渲染和音频播放。 SDL库下载路径&#xff1a;https://github.com/libsdl-org/SDL/releases/tag/release-2.26.3&#xff0c;我使用的是2.26.3版本&#xff0c;大家可以自行选择该版本或其他版…

ARM开发,stm32mp157a-A7核IIC实验(采集温湿度传感器值)

1.实验目标&#xff1a;采集温湿度传感器值&#xff1b; 2.分析框图&#xff08;模拟IIC控制器&#xff09;&#xff1b; 3.代码&#xff1b; ---iic.h封装时序协议头文件--- #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "st…

javaee之黑马乐优商城1

问题1&#xff1a;整体的项目架构与技术选型 技术选型 开发环境 域名测试 如何把项目起来&#xff0c;以及每一个目录结构大概是什么样子 通过webpack去启动了有个项目&#xff0c;这里还是热部署&#xff0c;文件改动&#xff0c;内容就会改动 Dev这个命令会生成一个本地循环…

html实现元素拖动替换

效果 实现 复制粘贴.html即可使用 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>拖动替换</title></head><style>.box {width: 500px;height: 500px;background: gainsboro;border-radius: 10px;}…

【python爬虫】7.爬到的数据存到哪里?

文章目录 前言存储数据的方式存储数据的基础知识基础知识&#xff1a;Excel写入与读取基础知识&#xff1a;csv写入与读取项目&#xff1a;存储周杰伦的歌曲信息 复习 前言 上一关我们以QQ音乐为例&#xff0c;主要学习了如何带参数地请求数据&#xff08;get请求&#xff09;…

Nodejs入门 token校验

Nodejs入门token校验之jsonwebtoken的使用 前言 token校验作为项目里的必要项&#xff0c;其重要性不言而喻&#xff0c;今天介绍一个在Node.js中备受推崇的神奇工具——jsonwebtoken 一、token是什么jsonwebtoken是什么&#xff1f; 在互联网世界中&#xff0c;Token是一种用于…