数据库视图view的解析
视图的理解:
今天看SQL教程,看见了一个新词,视图,什么是视图?很多人都有不同的理解,简单点讲,视图是一个sql查询语句,是关联应用程序和数据库的桥梁,避免了应用程序对数据库的直接操作。既保护了数据库,又实现了应用程序数据查询功能。
视图的优点:
1、视图可以简化查询的复杂性
SELECT tab.name, count(*) AS NUM_EMP
FROM emp e, table tab
WHERE e.tabno = tab.tabno
DROUP BY name;
根据视图的定义,可以简化如下:
CREATE or REPLACE view my_view AS SELECT tab.name, count(*) AS NUM_EMP FROM emp e, table tab WHERE e.tabno = tab.tabno DROUP BY name;(创建视图)
SELECT name,num_emp FROM my_view;(查询视图)
2、视图可以加强安全性
假设我们只希望用户BOB看到EMP表中的ENAME和DEPNO两个列。实现语句如图所示:
GRANT select ON emp TO bob;
但是这个命令会让bob看到emp表中所有的列。为了让bob只能看到自己能看到的列,可以写一个如下试图:
CREATE or REPLACE view BOB_VIEW as SELECT empname,empdepno FROM EMP;
GRANT select ON bob_view TO BOB;
通过这两条命令,BOB则只能查询EMP表中的ENAME和DEPNO两列。
深入分析安全性的概念。假设每个人都可以查询EMP表,但是每个人都只能查询自己的记录。实现语句如图所示:
CREATE or REPLACE view MY_VIEW as SELECT * FROM emp WHERE ename = USER;
GRANT select ON my_view TO public;
当用户查询my_view时,上述视图只会返回ENAME列值为用户名的行。
3、Oracle视图可以创建一个带错误的视图
比如视图里的某个字段在基表里并不存在,视图仍然可以创建成功,但是非法的且无法执行。当基表里加入该字段或者基表里某个字段修改成该字段名称,视图马上就可以变成合法的。
4、视图的依赖性
因为视图引用了其他对象(视图、表)的查询,因此视图依赖于其所引用的对象。Oracle会自动处理视图的依赖性,若用户删除了视图的基表后再重建此表,Oracle将检查新的基本是否符合视图的定义并判断视图的有效性。
数据库视图view的解析相关推荐
- 数据库-视图(View)详解
一.简介 视图(View)可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的me ...
- 对数据库视图view的理解
首先解释什么是视图: 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不 ...
- MySQL数据库视图(view),视图定义、创建视图、修改视图
原文链接:https://blog.csdn.net/moxigandashu/article/details/63254901 转载于:https://www.cnblogs.com/chrdai/ ...
- 什么是数据库视图(view),视图(view)优缺点是什么?
什么是数据库视图(view),视图(view)优缺点是什么? 什么是数据库视图(view)? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的 ...
- mysqldump导出数据库视图_mysql中如何用mysqldump批量如何导出视图view啊?
你的位置: 问答吧 -> MySQL -> 问题详情 mysql中如何用mysqldump批量如何导出视图view啊? mysql中如何用mysqldump批量如何导出视图view啊? 我 ...
- Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询
Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开 ...
- 数据库中表table与视图view的区别
首先了解一下什么是视图. 在我们查询的过程中,select column1,column2-- from table,此时会出来一个结果,这个我们所看到的结果是一个表的样子,那么这个虚表就是一个视图v ...
- python展示数据库视图_Django Admin后台添加数据库视图过程解析
你通过以下语句,创建了一个数据库视图: create view entities_entity as select id, name from entities_hero union select 1 ...
- mysql数据库视图备份_数据库篇-mysql详解( 六 )之视图与数据备份
data.png 一 : 视图 视图: view, 是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表, 虚拟表的结构来源不是自己定义, 而是从对应的基表中产生(视图的数据来源). ( ...
最新文章
- Neo4j实战 (数据库技术丛书)pdf
- 【深度学习】重新思考BatchNorm中的 “Batch”
- C#求一元二次方程的根经典案例程序
- win10计算机系统优化设置,win10系统优化系统的详细办法
- JavaScript Array forEach
- 学习Java适合参加哪些工作?Java需要掌握的技术
- log4j的详细介绍
- 华为简单静态路由配置
- 数据结构-二分查找(含全部代码)
- processing python mode - 01
- 【抽样技术】CH2 简单随机抽样
- STM32 定时器编码器模式时,如何理解编码器计数
- Redisson(2-1)分布式锁实现对比 VS Java的ReentrantLock之tryLock
- 脱虚向实,数说故事联合中山大学正式启动“AI虚拟偶像”研究计划
- matplotlib高级教程之形状与路径——patches和path
- 成功解决:XXX不在 sudoers 文件中,此事将被报告
- Java版本音乐播放器
- grub引导linux到指定位置,怎样用wingrub引导到LINUX,求助急........
- win7激活及问题的解决
- 【ios开发/Xcode】实现多功能备忘录