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

什么是视图

目录

一、什么是视图

二、视图的作用

三、创建视图

四、使用视图

1.使用视图查询员工信息

五、注意事项

六、补充


一、什么是视图

视图是基于查询的虚拟表,是一个逻辑表,本身并不包含数据。同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成。视图就是一条SELECT语句执行后返回的结果集。

SELECT所查询的表称为视图的基表,而查询的结果集称为虚拟表,视图本身并不存储具体的数据,视图的数据存在于视图的基表中,基本表数据发生了改变,视图的数据也会跟着变化。

二、视图的作用

使用视图是为了方便复杂的查询语句。基本思路是将复杂的查询语句定义在视图内部,然后对视图进行查询,从而简化复杂的查询语句。

为什么要使用视图?

视图的诸多优点如下:

  1. 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
  2. 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某一行某一列,但是通过视图就可以简单的实现。
  3. 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响,源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

三、创建视图

CREATE VIEW 视图名
AS
SELECT列1,列2...
FROM 表;

修改视图:

ALTER VIEW 视图名 AS SELECT 语句

显示视图创建:

SHOW CREATE VIEW 视图名;

 查看视图:

SHOW TABLES;
-- 当作普通表使用

删除视图:

DROP VIEW 视图名[,视图名...];

 重命名视图:

RENAME TABLE 视图名 TO 新视图名;

四、使用视图

需求:查询员工信息,要求显示员工编号、姓名、所属的部门。

select empno,ename,dname 
from emp inner join dept on emp.deptno=dept.deptno;

这是两张表连接查询,如果查询涉及的表越多,查询变得越复杂。 

1.使用视图查询员工信息

定义视图:

CREATE VIEW v_emp
AS
SELECT empno,ename,dname FROM emp INNER JOIN dept ON emp.deptno = dept.deptno;

使用试图:

select * from v_emp

 

五、注意事项

  1. 视图的主要作用与查询相关。
  2. 可以通过视图插入数据,但只能基于一个基表进行插入,不能同时向多个基表插入数据。

insert into v_emp(empno,dname) values(10,'测试') ;

3. 可以通过视图修改数据,但只能基于一个基表进行修改,不能同时修改多个基表的数据。

4. 可以通过视图删除数据,但只能删除单表查询的视图,不能删除多表连接查询视图中的数据。

5.虽然通过视图也可以对数据进行添加、删除、修改,但不推荐。

6.使用drop view语句可以删除视图。

7.select语句不能引入系统或用户变量。

六、补充

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED | MERGE | TEMPTABLE}] VIEW 视图名[(列1,列
2...)] AS SELECT (列1,列2...)
[WITH [CASCADE | LOCAL] CHECK OPTION]
  • on replace:如果已有同名视图则替换。
  • algorithm:视图算法。
  • undefined:MySQL将自动选择所要使用的算法。
  • merge:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句对应部分。
  • temptable:将视图的结果存入临时表,然后使用临时表执行语句。

 缺省algorithm选项等同于algorithm=undefined

  • check option:表示修改视图时,检查插入的数据是否符合where设置的条件。
  • cascaded/local:表示check option的范围。
  •  当不加local或cascaded时,默认为cascaded。
  • local表示只验证当前视图,检查所依赖的视图有没有检查选项,如果有就会检查所依赖的视图,没有就不检查,cascaded表示所依赖的视图会带上检查选项。
  • 该语句的作用:

         update时,要保证数据update之后能被视图查询出来,也就是要符合where的条件

         insert时,保证insert的数据能被视图查询出来。

         delete时,有无with check option都一样

         对于没有where字句的视图,使用with check option是多余的。

-- 没有 with check option
create view v_emp
as select * from emp;
-- 有 with check option, 视图 sql 中没有 where 所以 with check option 没啥作用
create or replace view v_emp
as select * from emp with check option; -- 相当于 with cascaded check option
-- 有 with check option
create or replace view v_emp
as select * from emp where sal > 2000
with check option;
select * from v_emp;
-- 修改视图值
update v_emp set sal = 2100 where empno = 7788;
-- 通过原表修改
update emp set sal = 10 where empno = 7788;
-- with local check option cascaded
create or replace view v_emp
as select * from emp where sal > 2000;
create or replace view v_v_emp as select * from v_emp where sal > 1000 with local
check option;
select * from v_v_emp;
-- local 只管当前视图
update v_v_emp set sal = 1900 where empno = 7788;
-- cascaded 表示底层视图也要验证
create or replace view v_emp
as select * from emp where sal > 2000;
create or replace view v_v_emp as select * from v_emp where sal > 1000 with cascaded
check option;
update v_v_emp set sal = 1900 where empno = 7788;

相关文章:

什么是视图

目录 一、什么是视图 二、视图的作用 三、创建视图 四、使用视图 1.使用视图查询员工信息 五、注意事项 六、补充 一、什么是视图 视图是基于查询的虚拟表,是一个逻辑表,本身并不包含数据。同真实的表一样,视图包含一系列带有名称的列…...

C++——list(2)

作者:几冬雪来 时间:2023年9月28日 内容:C——list内容讲解 目录 前言: list的const迭代器: const的iterator: const迭代器: operator->: 拷贝构造: 迭代器接口补充&…...

Django基础讲解-路由控制器和视图(Django-02)

一 路由控制器 参考链接: Django源码阅读:路由(二) - 知乎 Route路由, 是一种映射关系!路由是把客户端请求的 url路径与视图进行绑定 映射的一种关系。 这个/timer通过路由控制器最终匹配到myapp.views中的视图函数 …...

【算法题】2873. 有序三元组中的最大值 I

题目&#xff1a; 给你一个下标从 0 开始的整数数组 nums 。 请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中&#xff0c;找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数&#xff0c;则返回 0 。 下标三元组 (i, j, k) 的值等于 (nums[i]…...

HTML5 跨屏前端框架 Amaze UI

Amaze UI采用国际最前沿的“组件式开发”以及“移动优先”的设计理念&#xff0c;基于其丰富的组件&#xff0c;开发者可通过简单拼装即可快速构建出HTML5网页应用&#xff0c;上线仅半年&#xff0c;Amaze UI就成为了国内最流行的前端框架&#xff0c;目前在Github上收获Star数…...

EXCEL会计记账报表财务软件企业公司做账系统凭证自动生成报表

本系统基于VBA编程设计&#xff0c;具有界面简洁美观&#xff0c;操作方便快捷&#xff0c;功能完备实用的特点&#xff0c;系统分为基本信息、凭证处理、账簿查询、会计报表、固定资产管理、系统管理、凭证数据库七大模块&#xff0c;您只需要录入记账凭证&#xff0c;就可以自…...

Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test

目录 原因1 类名重复了 案例1 变量名和类名重复 原因1 类名重复了 检查项目代码&#xff0c;是不是其他地方有同名类。 案例1 变量名和类名重复 转自&#xff1a;python3报错Cant pickle <class __main__.Test>: its not the same object as __main__.Test解决 - 知乎…...

第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和

第五十六天| 第九章 动态规划 part14 1143. 最长公共子序列 1035. 不相交的线 53. 最大子序和 一、1143. 最长公共子序列 题目链接&#xff1a; 题目介绍&#xff1a; 思路&#xff1a; 本题和“最长重复子数组”区别在于**这里不要求是连续的了&#xff0c;但要有相对顺序*…...

腾讯云服务器南京地域详细介绍、测试IP和Ping值测速

腾讯云服务器南京地域怎么样&#xff1f;南京地域很不错&#xff0c;正好处于中间的位置&#xff0c;南方北方用户均可以选择&#xff0c;网络延迟更低速度更快&#xff0c;并且目前南京地域有活动&#xff0c;南京地域可用区可选南京一区、南京二区和南京三区&#xff0c;腾讯…...

理解CSS的层叠性和继承性

CSS的层叠性&#xff08;cascading&#xff09;指的是在同一元素上应用多个样式时&#xff0c;不同样式之间的优先级别以及如何进行组合和冲突解决的规则。具体来说&#xff0c;CSS采用的是“选择器优先级”规则来判断哪个样式优先级更高&#xff0c;如果多个样式的优先级相同&…...

OSI体系结构和TCP/IP体系结构

在第一章&#xff08; 计网第一章 &#xff09;的时候&#xff0c;曾经提到过OSI体系结构和TCP/IP体系结构&#xff0c;并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 一.OSI体系结构&#xff1a; 通信子网&#xff1a; 计算机网络在逻辑功能上可以分为…...

侯捷 C++ STL标准库和泛型编程 —— 8 适配器

8 适配器 适配器 Adapter 只是一个小变化&#xff0c;比如改个接口&#xff0c;函数名称等等其出现在三个地方&#xff1a;仿函数适配器&#xff0c;迭代器适配器&#xff0c;容器适配器可以使用继承 / 复合的两种方式实现&#xff0c;STL中都用复合 其思想就是将该记的东西记…...

每日一题 416 分割等和子集(01背包)

题目 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] …...

U盘插上就显示让格式化是坏了吗?

U盘以其体积小巧、存储容量大、读写速度快的特点&#xff0c;在各种工作和个人使用场合中得到了广泛应用&#xff0c;因此深得用户好评。然而&#xff0c;在日常使用U盘的过程中&#xff0c;经常会遇到一些问题和挑战。今天&#xff0c;我将为大家详细解释U盘出现要求格式化的现…...

分布式应用程序协调服务 ZooKeeper 详解

目录 1、ZooKeeper简介 2、ZooKeeper的使用场景 3、ZooKeeper设计目的 4、ZooKeeper数据模型 5、ZooKeeper几个重要概念 5.1、ZooKeeper Session 5.2、ZooKeeper Watch 5.3、Consistency Guarantees 6、ZooKeeper的工作原理 6.1、Leader Election 6.2、Leader工作流…...

Anniversary party(树形dp 基础题)

1.题目大意 There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employees. It means that the supervisor relation forms a tree rooted at the rector V. E. Tretyakov. In …...

Junit的常用操作

注:本篇文章讲解的是junit5 目录 Juint是什么 Juint需要导入的依赖 Juint常用注解 Junit执行顺序 参数化 断言 测试套件 Juint是什么 Juint 是 Java 的一个单元测试框架. 也是回归测试框架. 使用 Junit 能让我们快速的完成单元测试。 注意&#xff1a;Junit 测试也是程序…...

Elasticsearch安装并使用Postman访问

Elasticsearch&#xff0c;一个强大的开源搜索和分析引擎&#xff0c;已经在全球范围内被广泛应用于各种场景&#xff0c;包括网站搜索、日志分析、实时应用等。由于其强大的功能和灵活性&#xff0c;Elasticsearch 已经成为大数据处理的重要工具。然而&#xff0c;对于许多初次…...

Pytorch深度学习训练模型保存问题,找不到保存路径

执行torch.save(net.state_dict(), save_path_pth)报错&#xff1a; RuntimeError: Parent directory D:\xxxxxxxxxxx\weights does not exist. 将文件路径的中文改成全英文就可以了。 注意&#xff1a;这个代码在torch1.7版本无报错&#xff0c;但是在1.13.1版本报错。在linu…...

数据结构与算法之堆: Leetcode 23. 合并 K 个升序链表 (Typescript版)

合并 K 个升序链表 https://leetcode.cn/problems/merge-k-sorted-lists/ 描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表 示例 1 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&…...

代码随想录算法训练营第五十七天 | 392.判断子序列 115.不同的子序列

1. 判断子序列 392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09; dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度。 class Solution {public boolean isSubsequence(String s, String t) {//dp[i][j] 表示…...

Kafka日志索引详解以及生产常见问题分析与总结

文章目录 1、Kafka的Log日志梳理1.1、Topic下的消息是如何存储的&#xff1f;1.1.1、 log文件追加记录所有消息1.1.2、 index和timeindex加速读取log消息日志。 1.2、文件清理机制1.2.1、如何判断哪些日志文件过期了1.2.2、过期的日志文件如何处理 1.3、Kafka的文件高效读写机制…...

vue中 css scoped原理

Vue中css的逻辑是先放子组件&#xff0c;然后放父组件&#xff0c;所以同样的css类名&#xff0c;子组件会被父组件覆盖 html 如下 子被父覆盖 scoped是通过给组件加hash值&#xff0c;锁定组件。 父子组件均scoped的情况下&#xff0c;子仍会覆盖 还是被覆盖了 如何避免被…...

tf.compat.v1.global_variables()

tf.global_variables tf.global_variables() 是 TensorFlow 1.x 中的一个函数&#xff0c;它返回图中所有的全局变量。在 TensorFlow 2.x 中&#xff0c;这个函数已经被移除了&#xff0c;取而代之的是 tf.compat.v1.global_variables()。 然而&#xff0c;在 TensorFlow 2.x …...

登录注册实现

一、前端页面注册到Vue 1.创建登录和注册组件 <template><div>login</div></template><script> export default {name: HomeView,data() {return {}},methods: {}, } </script><template><div>register</div></tem…...

Push rejected: Push to origin/master was rejected

Push rejected: Push to origin/master was rejected 原因&#xff1a;推拒绝&#xff1a;推送到起源/主人被拒绝 解决方案如下&#xff1a; 方案1&#xff1a; 1.在Idea打开终端 方案2&#xff1a; 1、在对应项目文件里打开 Git Bash 然后依次输入&#xff1a; git pull …...

在线OJ项目核心思路

文章目录 在线OJ项目核心思路1. 项目介绍2.预备知识理解多进程编程为啥采用多进程而不使用多线程?标准输入&标准输出&标准错误 3.项目实现题目API实现相关实体类定义新增/修改题目获取题目列表 编译运行编译运行流程 4.统一功能处理 在线OJ项目核心思路 1. 项目介绍 …...

Spring MVC:数据绑定

Spring MVC 数据绑定数据类型转换数据格式化数据校验 附 数据绑定 数据绑定&#xff0c;指 Web 页面上请求和响应的数据与 Controller 中对应处理方法上的对象绑定&#xff08;即是将用户提交的表单数据绑定到 Java 对象中&#xff09;。 过程如下&#xff1a; ServletRequest…...

STM32CubeMX学习笔记-USB接口使用(HID按键)

STM32CubeMX学习笔记-USB接口使用&#xff08;HID按键&#xff09; 一、USB简介1.1 USB HID简介 二、新建工程1. 打开 STM32CubeMX 软件&#xff0c;点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.2 引脚配置3.3 配置时钟3.4 USB Device…...

C#,数值计算——Ranq2的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Backup generator if Ranq1 has too short a period and Ran is too slow.The /// period is 8.5E37. Calling conventions same as Ran, above. /// </summary> …...

初级买题做哪个网站好/建网站公司哪里好

用ifconfig -a来查看正确的网卡名 # 手工指定的方式################################ # ipconfig fxp0 192.168.8.33/24 # 添加网卡ip# route add default 192.168.8.1 # 添加路由&#xff08;也可理解为网关&#xff09;立即生效&#xff0c;但是重启后失效。 #重新启…...

合肥seo网站优化培训/索引擎优化 seo

屏的接口类型种类以及接口定义分析 https://blog.csdn.net/weixin_43839976/article/details/104487802 RGB接口&#xff0c; MCU接口: Intel8080总线&#xff08;并口&#xff09; MCU-LCD屏它与RGB-LCD屏主要区别在于显存的位置&#xff1a; https://blog.csdn.net/qq_28…...

开发软件网站建设/网络推广工具有哪些

介绍编写一个应用程序并行运行很困难&#xff0c;对吧&#xff1f;我的意思是&#xff0c;它一定很难&#xff0c;否则我们会看到各处的并行程序。我们所看到的都是平滑的并行应用程序&#xff0c;可以毫不费力地使用每个可用的核心。相反&#xff0c;多线程应用程序是例外而不…...

怎样在领英上做公司网站/免费外链网

HTML介绍 HTML&#xff08;HyperText MarkupLanguage&#xff09;简称超文本标记语言。它和CSS、JavaScript组合完成一个网页的设计。对于一个网页&#xff0c;HTML定义网页的结构&#xff0c;CSS描述网页的样子&#xff0c;JavaScript则实现人机交互。 HTML语义化 说起HTML&am…...

梅州网站制作/网站设计报价方案

“云”概念在今年被炒得很热。不管什么会&#xff0c;如果没有“云”&#xff0c;都不好意思跟人打招呼&#xff1b;在IT圈子里&#xff0c;如果一个没有“云”的会议&#xff0c;那不叫“会”议&#xff0c;至少不是一个够档次的会。广告词不是说&#xff0c;“高度决定视野,角…...

做网站的成本在哪/必应搜索引擎怎么样

按照相关交通领域机构发布的数据显示&#xff0c;近年来&#xff0c;分心驾驶已经成为公路事故和死亡的主要原因。同时&#xff0c;随着高阶智能驾驶的陆续前装上车&#xff0c;驾驶员的监控&#xff08;保证对前方道路的持续注意力&#xff09;也成为安全风险的“重灾区”。 …...