Oracle视图(基本使用)

视图

视图是通过定制的方式显示一个或者多个表的数据。

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

视图的优点:

  • 提供了另外一种级别的表安全性
  • 隐藏了数据的复杂性
  • 简化了用户的SQL命令
  • 隔离基表结构的改变
  • 通过重命名列,从另一个角度提供数据。

视图里面不存放数据,是在基表上建立的查询,查询的话会从基表把数据取出返回。

创建视图

sqlplus t1/t1@orcl

#查看当前用户所拥有视图
select * from user_views;

SQL> select * from tab;
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
STUDENT                        TABLE   

SQL> desc student;
Name  Type        Nullable Default Comments 
----- ----------- -------- ------- -------- 
SNO   NUMBER(4)   Y                         
SNAME VARCHAR2(2) Y 

insert into student values(1,'wa');
#创建视图
create view view1 as 
select * from student where sno = 1;

select * from user_views;

select * from view1;

更新视图

#更新视图
update view1 set sno = 5 where sno = 1;
commit;

#注意注意!!!!更新了视图表对应被更新了!!!!
SQL> select * from student;
  SNO SNAME
----- -----
    5 wa
#视图查不到东西了!
SQL> select * from view1;
  SNO SNAME
----- -----

with check option

#创建视图
create view view2 as 
select * from student where sno = 5 with check option;

#查询视图
SQL> select * from view2;
  SNO SNAME
----- -----
    5 wa

#不让修改!with check optin为了不让减少视图结果集的操作
SQL> update view2 set sno = 10 where sno = 5;
update view2 set sno = 10 where sno = 5
ORA-01402: view WITH CHECK OPTION where-clause violation

order by

SQL> create view view3 as 
select * from student order by sno desc;

SQL> select * from view3;
  SNO SNAME
----- -----
    7 C
    6 B
    5 A
    5 wa

链接视图

SQL> select * from student;
  SNO SNAME
----- -----
    1 B
    2 C
    
SQL> select * from address;
                                     ID NAME
--------------------------------------- --------------------
                                      1 贵阳
                                      2 大连

create view view_student_address
as
	select s.sname,a.name
	from student s,address a
	where s.sno = a.id;
	
SQL> select * from view_student_address;
SNAME NAME
----- --------------------
B     贵阳
C     大连

#无法修改与非建值保存表对应的列
#无法修改任何一列,因为数据来自多张表。
#没有键保留表无法更改!
SQL> update view_student_address set name = '河南' where sname = 'B';
update view_student_address set name = '河南' where sname = 'B'
ORA-01779: cannot modify a column which maps to a non key-preserved table

键保留表

drop table student;
drop table department;
create table student(id int,name varchar2(20),deptno varchar2(20));
create table department(deptno varchar2(20),name varchar2(20));
insert into student values(1,'wang','001');
insert into student values(2,'li','001');
insert into student values(3,'zhang','002');
insert into department values('001','人工智能系');
insert into department values('002','软件工程系');
insert into department values('003','ai系');
commit;

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

select * from view_stu_dept;

在这里插入图片描述

# 因为student表的ID为主键 可以修改student而不能修改department
# student键保留表 department非键保留表

SQL> update view_stu_dept set sname = 'xiaoyi' where id = 1;
update view_stu_dept set sname = 'xiaoyi' where id = 1
ORA-01779: cannot modify a column which maps to a non key-preserved table

咳咳:翻车了!问题不大遇到问题需要解决!

ALTER TABLE student ADD PRIMARY KEY(id);
ALTER TABLE department ADD PRIMARY KEY(deptno);

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

#成功!
update view_stu_dept set sname = 'xiaoyi' where id = 1;
SQL> select * from view_stu_dept;

在这里插入图片描述

# 函数建视图

create view view_student_1 as select id,upper(name) sname from student;

SQL> select * from view_student_1;
                                     ID SNAME
--------------------------------------- --------------------
                                      1 XIAOYI
                                      2 LI
                                      3 ZHANG
                                      
select * from view_student_1 where sname = 'XIAOYI';

删除视图

drop view view_student_1;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法

硬件:雷神MIX G139H047LD 工控机 系统:ubuntu20.04 之前运行某项目时,处于正常状态。后来由于要使用海康威视工业相机(型号:MV-CA013-21UC),便下载了并安装了该相机的SDK,之后运行…

【Vue+python】Vue调用python-fastApi接口实现数据(数值、列表类型数据)渲染

前言:之前做的一直都是SpringBootVue的应用,但现在需要实现一个能将python实现的算法应用展示在前端的界面。想法是直接Vue调用python-fastApi接口实现数据渲染~ 文章目录 1. 变量定义2. axios调用python3. 跨域问题解决4. 数据渲染4.1 数值数据渲染4.2 …

Linux中线程创建,线程退出,线程接合

线程的简单了解 之前我们了解过 task_struct 是用于描述进程的核心数据结构。它包含了一个进程的所有重要信息,并且在进程的生命周期内保持更新。我们想要获取进程相关信息往往从这里得到。 在Linux中,线程的实现方式与进程类似,每个线程都…

用deepseek学大模型08-长短时记忆网络 (LSTM)

deepseek.com 从入门到精通长短时记忆网络(LSTM),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导…

力扣 买卖股票的最佳时机

贪心算法典型例题。 题目 做过股票交易的都知道,想获取最大利润,就得从最低点买入,最高点卖出。这题刚好可以用暴力,一个数组中找到最大的数跟最小的数,然后注意一下最小的数在最大的数前面即可。从一个数组中选两个数…

mysql的rpm包安装

(如果之前下载过mariadb,使用yum remove mariadb卸载,因为mariadb与rpm包安装的mysql有很多相似的组件和文件,会发生冲突,而源码包安装的mysql不会,所以不用删除源码包安装myqsl,只删除mariadb就可以&#…

vue3 子组件属性响应性丢失分析总结(四)

一、先看例子&#xff1a; <script setup lang"ts"> import { onMounted, reactive, ref, watch } from vue; import Test from /components/Test.vue;let a {a:"a"};const aRef ref(a);var aReactive reactive(a);let bObj "B";cons…

Jenkins同一个项目不同分支指定不同JAVA环境

背景 一些系统应用,会为了适配不同的平台,导致不同的分支下用的是不同的gradle,导致需要不同的JAVA环境来编译,比如a分支需要使用JAVA11, b分支使用JAVA17。 但是jenkins上,一般都是Global Tool Configuration 全局所有环境公用一个JAVA_HOME。 尝试过用 Build 的Execut…

实现可拖拽的 Ant Design Modal 并保持下层 HTML 可操作性

前言 在开发复杂的前端界面时&#xff0c;我们常常需要一个可拖拽的弹窗&#xff08;Modal&#xff09;&#xff0c;同时又希望用户能够在弹窗打开的情况下操作下层的内容。Ant Design 的 Modal 组件提供了强大的功能&#xff0c;但默认情况下&#xff0c;弹窗会覆盖整个页面&…

网络安全三件套

一、在线安全的四个误解     Internet实际上是个有来有往的世界&#xff0c;你可以很轻松地连接到你喜爱的站点&#xff0c;而其他人&#xff0c;例如黑客也很方便地连接到你的机器。实际上&#xff0c;很多机器都因为自己很糟糕的在线安全设置无意间在机器和系统中留下了“…

Jetson Agx Orin平台JP6.0-r36.3版本修复了vi模式下的原始图像损坏(线条伪影)

1.问题描述 这是JP-6.0 GA/ l4t-r36.3.0的一个已知问题 通过vi模式捕获的图像会导致异常线条 参考下面的快照来演示这些线伪影 这个问题只能通过VI模式进行修复,不应该通过LibArgus看到。 此外,这是由于内存问题。 由于upstream已经将属性名称更改为“dma-noncoherent”…

封装neo4j的持久层和服务层

目录 持久层 mp 模仿&#xff1a; 1.抽取出通用的接口类 2.创建自定义的repository接口 服务层 mp 模仿&#xff1a; 1.抽取出一个IService通用服务类 2.创建ServiceImpl类实现IService接口 3.自定义的服务接口 4.创建自定义的服务类 工厂模式 为什么可以使用工厂…

Spring Boot (maven)分页2.0版本

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

Docker安装Minio对象存储

介绍 MinIO 是一种对象存储解决方案&#xff0c;提供与Amazon Web Services S3兼容的API并支持所有核心S3功能。MinIO可部署在任何地方&#xff1a;公共云或私有云、裸机基础设施、编排环境和边缘基础设施。 详情参见官方文档&#xff1a;MinIO Object Storage for Container…

BERT 大模型

BERT 大模型 EmbeddingTransformer预微调模块预训练任务 BERT 特点 : 优点 : 在语言理解相关任务中表现很好缺点 : 更适合 NLU 任务&#xff0c;不适合 NLG 任务 BERT 架构&#xff1a;双向编码模型 : Embedding 模块Transformer 模块预微调模块 Embedding Embedding 组成 …

cmake:定位Qt的ui文件

如题。在工程中&#xff0c;将h&#xff0c;cpp&#xff0c;ui文件放置到不同文件夹下&#xff0c;会存在cmake找不到ui文件&#xff0c;导致编译报错情况。 cmake通过指定文件路径&#xff0c;确保工程找到ui文件。 标识1&#xff1a;ui文件保存路径。 标识2&#xff1a;添加…

DFS算法篇:理解递归,熟悉递归,成为递归

1.DFS原理 那么dfs就是大家熟知的一个深度优先搜索&#xff0c;那么听起来很高大尚的一个名字&#xff0c;但是实际上dfs的本质就是一个递归&#xff0c;而且是一个带路径的递归&#xff0c;那么递归大家一定很熟悉了&#xff0c;大学c语言课程里面就介绍过递归&#xff0c;我…

H5自适应响应式代理记账与财政咨询服务类PbootCMS网站模板 – HTML5财务会计类网站源码下载

(H5自适应)响应式代理记账财政咨询服务类pbootcms网站模板 html5财务会计类网站源码下载 为了提升系统安全&#xff0c;请将后台文件admin.php的文件名修改一下。修改之后&#xff0c;后台登录地址就是&#xff1a;您的域名/您修改的文件名.php 模板特点&#xff1a; 1&#x…

嵌入式音视频开发(二)ffmpeg音视频同步

系列文章目录 嵌入式音视频开发&#xff08;零&#xff09;移植ffmpeg及推流测试 嵌入式音视频开发&#xff08;一&#xff09;ffmpeg框架及内核解析 嵌入式音视频开发&#xff08;二&#xff09;ffmpeg音视频同步 嵌入式音视频开发&#xff08;三&#xff09;直播协议及编码器…

工业自动化丨工业控制系统五层架构以及PLC、SCADA系统、DCS系统,从零基础到精通,收藏这篇就够了!

工业控制系统通常是几种类型控制系统的总称&#xff0c;包括监控和数据采集&#xff08;SCADA&#xff09;系统、分布式控制系统&#xff08;DCS&#xff09;和可编程逻辑控制器&#xff08;PLC&#xff09;以及其它控制系统。 【右下角**点赞、**转发、在看&#xff0c;为企业…