当前位置: 首页 > news >正文

东莞市建设安监局网站/网店代运营的套路

东莞市建设安监局网站,网店代运营的套路,wordpress pkm,社区网站如何做目录 视图的作用 创建视图 为 scott 分配创建视图的权限 查询视图 复杂视图的创建 视图更新的限制问题 更新视图中数据的部门编号(视图的存在条件) 限制通过视图修改数据表内容 创建只读的视图 复杂视图创建 oracle从入门到总裁:​​​​​​h…

目录

视图的作用

创建视图

为 scott 分配创建视图的权限

查询视图

复杂视图的创建

视图更新的限制问题

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

限制通过视图修改数据表内容

创建只读的视图

复杂视图创建


oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

视图的作用

在所有的 SQL 语句中,查询是最复杂的操作之一,而且查询还和具体的开发要求有关,那么在开发过程中,程序员完成的并不是与数据库相关的所有内容,而应该更多地考虑到程序的设计结构。

可是没有一个项目里面会不包含复杂查询,那么程序员如何从复杂查询中解脱出来呢?

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

从实际开发来说,一个优秀的数据库设计人员,除了要给出合理的数据表结构,还应该将所有可能使用到的查询封装好视图,一并交给开发者。

视图可以看成是一张虚拟表,由存储的查询组成。

视图和真实的数据表一样,都包含若干行和列。

但是,在视图中并不存储数据,其数据仍然来源于视图定义时所使用的数据表中,数据库只在数据字典中存储视图的定义信息

create [OR REPLACE] VIEW 视图名称 AS 子查询 ;

创建视图

CREATE VIEW myview AS SELECT * FROM emp WHERE deptno=10 ;

这个语句实现将部门 10 的所有员工信息保存在视图中。

在 Oracle 10g 及以前的版本中,scott 是可以直接进行视图创建的,但是从 Oracle 10g R2 版本开始,如果想创建视图,就需要单独分配创建视图的权限

为 scott 分配创建视图的权限

CONN sys/change_on_install AS SYSDBA ;
GRANT CREATE VIEW TO scott ;
CONN scott/tiger ;

权限分配完成之后就可以进行视图的创建操作了。视图本身属于数据库对象,所以查看视图的信息可以使用“user_views”数据字典完成。

在这个数据字典里面可以查询到视图的具体语法。视图可以像普通的数据表那样直接进行查询

查询视图

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 dno,COUNT(*) countFROM empGROUP BY deptno) temp
WHERE d.deptno=temp.dno(+) ;

由于 myview 视图的名称已经被占用,所以理论上应该先删除,而后再创建一个新的视图,可是删除和创建之间有可能产生间隔。

其中 DROP VIEW 是删除视图的语句。所以在实际开发中,由于视图使用频率较高,而且直接与开发有关系,一般情况下不会选择删除后再重新创建,而是选择进行视图的替换。利用新的查询替换掉旧的查询

CREATE OR REPLACE VIEW myview AS
SELECT d.deptno,d.dname,d.loc,temp.count
FROM dept d,(SELECT deptno dno,COUNT(*) countFROM empGROUP BY deptno) temp
WHERE d.deptno=temp.dno(+) ;

上面这个语句表示,如果视图存在则进行替换,如果视图不存在则进行删除

从开发分工来说,此部分的操作应该是由数据库开发人员进行的,但是从现实来说,基本上除了大的开发团队,大部分的中小开发团队都会由开发人员自己编写

视图更新的限制问题

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

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

CREATE OR REPLACE VIEW myview AS 
SELECT * FROM emp WHERE deptno=20 ;

 此时在创建的 myview 视图中,deptno=20 是视图数据的存在依据,但是在默认情况下,可以通过视图修改原数据表中的信息。

下面修改其中一行数据的部门编号

UPDATE myview SET deptno=30 WHERE empno=7369 ;

发现此时更新了视图,结果导致 emp 数据表中的内容也发生了变化。

为了保证视图的创建条件不能够被更新,可以在创建视图的时候使用 WITH CHECK OPTION 子句

限制通过视图修改数据表内容

CREATE OR REPLACE VIEW myview AS 
SELECT * FROM emp WHERE deptno=20
WITH CHECK OPTION ;

此时使用了 WITH CHECK OPTION 子句可以保证视图的创建条件不被更新

UPDATE myview SET deptno=30 WHERE empno=7566 ;

将出现如下的错误“提示信息:ORA-01402: 视图 WITH CHECK OPTION WHERE 子句违规”,即视图创建条件的字段不能修改。

但是视图中不仅仅只存在有创建条件的字段,还可能会包含其他字段。在现实操作中,可以修改视图中的其他字段内容

UPDATE myview SET sal=80000 WHERE empno=7369 ;

此时更新操作成功了

发现视图更新时改变的是数据表中的数据,这样的做法同样也不合理。

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

使用 WITH READ ONLY 子句完成

创建只读的视图

CREATE OR REPLACE VIEW myview AS 
SELECT * FROM emp WHERE deptno=20
WITH READ ONLY ;

现在就创建好了一个只读视图信息,于是再次发出修改操作时,会出现“ORA-42399: 无法对只读视图运行 DML 操作”,这样就避免了通过视图的临时数据修改数据表的真实数据。

前面介绍了视图的创建,然而实际上如果是单张表的查询,建立视图并没有太大的作用,视图主要用来封装复杂查询,例如来源于多个表

下面是一个复杂查询的封装

复杂视图创建

CREATE OR REPLACE VIEW myview AS 
SELECT e.empno,e.ename ename,e.job,d.dname,e.sal,m.ename mname
FROM emp  e,dept d,emp m
WHERE e.deptno=d.deptno AND e.mgr=m.empno(+) ;

直接进行下面的更新操作

UPDATE myview SET sal=8000,dname='SALES',mname='KING' 
WHERE empno=7902 ;

此时没有增加“WITH CHECK OPTION、WITH READ ONLY”等限制条件,但是运行时出现错误信息“ORA-01776: 无法通过联接视图修改多个基表”。如果真的需要修改数据表的内容,可以使用替代触发器完成

相关文章:

视图的作用

目录 视图的作用 创建视图 为 scott 分配创建视图的权限 查询视图 复杂视图的创建 视图更新的限制问题 更新视图中数据的部门编号(视图的存在条件) 限制通过视图修改数据表内容 创建只读的视图 复杂视图创建 oracle从入门到总裁:​​​​​​h…...

动态ip白名单频繁更改问题解决方案

1. 使用静态IP地址:可以通过向ISP申请静态IP地址来解决动态IP地址的变化问题,但是这种方法会比较贵。 2. 使用动态DNS:可以使用动态DNS服务,它可以将动态IP地址映射到一个固定的域名,从而使得动态IP地址处理为域名一直…...

什么是物联网监控平台?部署物联网平台有什么作用?

随着物联网技术的飞速发展,越来越多的企业开始关注并投入到这一领域。物联网监控平台作为连接物理世界与数字世界的桥梁,正逐渐成为企业数字化转型的关键组件。今天,我们将深入探讨物联网监控平台的定义、部署物联网平台的作用,以…...

netty构建udp服务器以及发送报文到客户端客户端详细案例

目录 一、基于netty创建udp服务端以及对应通道设置关键 二、发送数据 三、netty中的ChannelOption常用参数说明 1、ChannelOption.SO_BACKLOG 2、ChannelOption.SO_REUSEADDR 3、ChannelOption.SO_KEEPALIVE 4、ChannelOption.SO_SNDBUF和ChannelOption.SO_RCVBUF 5、Ch…...

Selenium 学习(0.22)——软件测试之小结

Junit 等一系列自动化工具不用啰嗦了,自己就是小白再搞科普就装了。 把后面相关内容看了一下,使用这些测试工具一样编写代码(驱动模块【调用接口的代码片段】,桩模块【响应输出结果的代码片段,也就是被测模块调用的模块…...

贪心算法问题

分发饼干-455 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有…...

深入理解 @Transactional 注解在 Spring 中的应用

前言:在 Java 开发中,事务管理是非常重要的一环。Spring 框架提供了Transactional注解来简化事务管理的操作,本文将深入介绍Transactional注解的用法,并结合代码示例进行详细讨论。 1.Transactional 注解简介 Transactional注解是…...

Python爬虫之爬取网页图片

当我们想要下载网页的图片时,发现网页的图片太多了,无从下手,那我们写一个脚本来爬取呗。 这次的脚本是专门针对某个外国网站使用的,因此仅供参考思路。 在测试的过程中,我发现网站使用了发爬虫机制,具体就…...

AI Agent(LLM Agent)入门解读

1. 什么是AI Agent? AI Agent可以理解为一个智能体,包括感知模块、规划决策模块和行动模块,类似于人类的五官、大脑和肢体。它能帮助人类处理复杂的任务,并能根据环境反馈进行学习和调整。 五官可以理解为感知模块,大…...

自动化面试常见算法题!

1、实现一个数字的反转,比如输入12345,输出54321 num 12345 num_str str(num) reversed_num_str num_str[::-1] reversed_num int(reversed_num_str) print(reversed_num) # 输出 54321代码解析:首先将输入的数字转换为字符串&#xff…...

CCF-CSP真题202206-2《寻宝!大冒险!》

题目背景 暑假要到了。可惜由于种种原因,小 P 原本的出游计划取消。失望的小 P 只能留在西西艾弗岛上度过一个略显单调的假期……直到…… 某天,小 P 获得了一张神秘的藏宝图。 问题描述 西西艾弗岛上种有 n 棵树,这些树的具体位置记录在…...

Rust编程(三)生命周期与异常处理

生命周期 生命周期,简而言之就是引用的有效作用域。在大多数时候,我们无需手动的声明生命周期,因为编译器可以自动进行推导。生命周期的主要作用是避免悬垂引用,它会导致程序引用了本不该引用的数据: {let r;{let x …...

【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

背景展示:有页码的操作题 背景需求: 实操课终于全部结束了,把考试内容(docx)都写好了 【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行…...

OSG编程指南<二十一>:OSG视图与相机视点更新设置及OSG宽屏变形

1、概述 什么是视图?在《OpenGL 编程指南》中有下面的比喻,从笔者开始学习图形学就影响深刻,相信对读者学习场景管理也会非常有帮助。 产生目标场景视图的变换过程类似于用相机进行拍照,主要有如下的步骤: (1)把照相机固定在三脚架上,让它对准场景(视图变换)。 (2)…...

Laplace变换-3

回忆#常见函数的Laplace变换: t z − 1 ↦ Γ ( z ) s z t^{z-1} \mapsto \frac{\Gamma(z)}{s^{z}} tz−1↦szΓ(z)​ (要求 R e ( z ) > 0 \mathrm{Re}(z)>0 Re(z)>0) e a t ↦ 1 s − a e^{at} \mapsto \frac{1}{s-a} eat↦s−a1​…...

LVS负载均衡-DR模式配置

LVS:Linux virtual server ,即Linux虚拟服务器 LVS自身是一个负载均衡器(Director),不直接处理请求,而是将请求转发至位于它后端的真实服务器real server上。 LVS是四层(传输层 tcp/udp)负载均衡…...

【unity】如何汉化unity Hub

相信大家下载安装unity后看着满操作栏的英文,英文不好的小伙伴们会一头雾水。但是没关系你要记住你要怎么高速运转的机器进入中国,请记住我给出的原理,不懂不代表不会用啊。现在我们就来把编译器给进行汉化。 第一步:我们打开Uni…...

【算法】KMP-快速文本匹配

文章目录 一、KMP算法说明二、详细实现1. next数组定义2. 使用next加速匹配3. next数组如何快速生成4. 时间复杂度O(mn)的证明a) next生成的时间复杂度b) 匹配过程时间复杂度 三、例题1. [leetcode#572](https://leetcode.cn/problems/subtree-of-another-tree/description/)2.…...

多维数组和交错数组笔记

1.) 关于数据的几个概念: Rank,即数组的维数,其值是数组类型的方括号之间逗号个数加上1。 Demo:利用一维数组显示斐波那契数列F(n) F(n-1) F(n-2) (n >2 ),每行显示5项,20项. static void Main(string[] args){int[] F n…...

Python(django)之单一接口展示功能前端开发

1、代码 建立apis_manage.html 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav c…...

【大模型】非常好用的大语言模型推理框架 bigdl-llm,现改名为 ipex-llm

非常好用的大语言模型推理框架 bigdl-llm&#xff0c;现改名为 ipex-llm bigdl-llmgithub地址环境安装依赖下载测试模型加载和优化预训练模型使用优化后的模型构建一个聊天应用 bigdl-llm IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU (e.g., local P…...

Kubernetes示例yaml:3. service-statefulset.yaml

service-statefulset.yaml 示例 apiVersion: apps/v1 kind: statefulset metadata:...... spec:......volumeMounts:- name: pvcmountPath: /var/lib/arangodb3VolumeClaimTemplates:- metadata:name: pvcspec:accessModes: [ "ReadWriteOnce" ]storangeClassName: …...

Windows平台cmake编译QT源码库,使用VScode开发QT

不愿意安装庞大的QT开发IDE&#xff0c;可以编译QT源码库。 下载源码可以用国内镜像&#xff0c;如清华大学的&#xff1a;Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 我用的是 6.5.3&#xff0c;进去之后&#xff0c;不要下载整个源…...

腾讯云轻量8核16G18M服务器多少钱一年?

腾讯云轻量8核16G18M服务器多少钱一年&#xff1f;优惠价格4224元15个月&#xff0c;买一年送3个月。配置为轻量应用服务器、16核32G28M、28M带宽、6000GB月流量、上海/广州/北京、380GB SSD云硬盘。 腾讯云服务器有两个活动&#xff0c;一个是官方的主会场入口&#xff0c;还…...

二分练习题——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和&#xff0c;但是这里的l和r的范围为1e12&#xff0c;明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点&#xff0c;可以按照等差数列对序列进行分块。如上图&#xff0c;在求前10个…...

淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get

淘宝详情数据采集涉及多个环节&#xff0c;包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时&#xff0c;尤其是面对海量数据时&#xff0c;需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议&#xff1a; 请求示…...

Django之Web应用架构模式

一、Web应用架构模式 在开发Web应用中,有两种模式 1.1、前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示。前端与后端的耦合度很高 1.2、前后端分离 在前后端分离的应用模式中,后端仅返…...

GPT提示词分享 —— 口播脚本

可用于撰写视频、直播、播客、分镜头和其他口语内容的脚本。 提示词&#x1f447; 请以人的口吻&#xff0c;采用缩略语、成语、过渡短语、感叹词、悬垂修饰语和口语化语言&#xff0c;避免重复短语和不自然的句子结构&#xff0c;撰写一篇关于 [主题] 的文章。 GPT3.5&#…...

笔记本作为其他主机显示屏(HDMI采集器)

前言&#xff1a; 我打算打笔记本作为显示屏来用&#xff0c;连上工控机&#xff0c;这不是贼方便吗 操作&#xff1a; 一、必需品 HDMI采集器一个 可以去绿联买一个&#xff0c;便宜的就行&#xff0c;我的大概就长这样 win10下载 PotPlayer 软件 下载链接&#xff1a;h…...

02.percona Toolkit工具pt-archiver命令实践

1.命令作用 Percona Toolkit有的32个命令&#xff0c;可以分为7大类 工具类别 工具命令 工具作用 备注 开发类 pt-duplicate-key-checker 列出并删除重复的索引和外键 pt-online-schema-change 在线修改表结构 pt-query-advisor 分析查询语句&#xff0c;并给出建议&#x…...