视图(view):是根据用户需求定义的数据结构,是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。

对视图的修改:单表视图一般用于查询和修改,会改变基本表的数据,

多表视图一般用于查询,不会改变基本表的数据。

  • 作用:

①简化了操作,把经常使用的数据定义为视图,或者用户个性化需要查看的数据定义为视图。

我们在使用查询时,在很多时候我们要使用聚合函数,同时还要 显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我们只需要select * from view就可以啦,这样很方便。

②安全性,用户只能查询和修改能看到的数据。

因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图不可以随意的更改和删除,可以保证数据的安全性。

③逻辑上的独立性,屏蔽了真实表的结构带来的影响。

视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

  • 缺点:

①性能差

数据库必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。

②修改限制

当用户试图修改视图的某些信息时,数据库必须把它转化为对基本表的某些信息的修改,对于简单的视图来说,这是很方便的,但是,对于比较复杂的试图,可能是不可修改的。

  • 作用:

①简化了操作,把经常使用的数据定义为视图。

②安全性,用户只能查询和修改能看到的数据。

③逻辑上的独立性,屏蔽了真实表的结构带来的影响。

原文:https://blog.csdn.net/weixin_38055381/article/details/80194986

视图的创建

1.授权创建视图
创建视图的DDL语句是CREATE VIEW,用户必须有CREATE VIEW系统权限,才能创建视图。如果没有权限,创建视图时会提示:权限不足。(和有权限操作视图设计的表和其他视图)
管理员可以通过DCL语句授予用户创建视图的权限。下例中管理员给用户tarena创建视图的权限:
GRANT CREATE VIEW TO tarena;

2、创建视图的语法:
CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
AS subquery ;
视图创建后,可以像操作表一样操作视图,主要是查询操作。
语法中的Subquery是SELECT查询语句,对应的表被称作基表。
根据视图所对应的子查询种类分为几种类型:
•SELECT语句是基于单表建立的,且不包含任何函数运算、表达式或分组函数,叫做简单视图,此时视图是基表的子集;
•SELECT语句同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY子句,叫做复杂视图;
•SELECT语句是基于多个表的,叫做连接视图。

3、 创建简单视图(单表)
创建一个简单视图V_EMP_10,来显示部门10中的员工的编码、姓名和薪水:
CREATE VIEW v_emp_10
AS
SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno = 10;
查看视图结构:
DESC v_emp_10;

4、查询视图
查询视图和查询表的操作相同:
SELECT * FROM v_emp_10;
此时视图的列名,和创建视图时的列名一致,不一定是原列名:
SELECT id, name, salary FROM v_emp_10;
5、对视图进行INSERT操作
视图本身并不包含数据,只是基表数据的逻辑映射。所以当对视图执行DML操作时,实际上是对基表的DML操作。对视图执行DML操作的基本原则:
•简单视图能够执行DML操作,下列情况除外:在基表中定义了非空列,但简单视图对应的SELECT语句并没有包含这个非空列,导致这个非空列对视图不可见,这时无法对视图执行INSERT操作;
•如果视图定义中包含了函数、表达式、分组语句、DISTINCT关键字或ROWNUM伪列,不允许执行DML操作;
•DML操作不能违反基表的约束条件。
对简单视图执行INSERT操作,成功插入数据到基表中:
INSERT INTO v_emp_10
VALUES(1234, ‘DOCTOR’, 4000, 10);
简单视图可以通过DML操作影响到基表数据。

6、 创建具有CHECK OPTION约束的视图
语法如下:
CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]

AS subquery
[WITH CHECK OPTION];
其中:WITH CHECK OPTION短语表示,通过视图所做的修改,必须在视图的可见范围内:
•假设INSERT,新增的记录在视图仍可查看
•假设UPDATE,修改后的结果必须能通过视图查看到
•假设DELETE,只能删除现有视图里能查到的记录
创建带有CHECK OPTION约束的视图:
CREATE OR REPLACE VIEW v_emp_10
AS
SELECT empno id, ename name, sal salary, deptno
FROM emp
WHERE deptno = 10
WITH CHECK OPTION;
下述DML语句操作失败,因为部门20不在视图可见范围内:
01.INSERT INTO v_emp_10 VALUES(1008,‘donna’,5500, 20);
02.UPDATE v_emp_10 SET deptno = 20 WHERE id = 7782;

多表建视图例子:

CREATE VIEW view01
AS
SELECT student.id,student.name,city,brand,price,school.name school FROM student
LEFT JOIN cloth ON clothId=cloth.ID
LEFT JOIN school on school.id=schoolId;

视图view基本概念相关推荐

  1. UIImageView图片视图的基本概念和使用方法

    IOS学习笔记(十)之UIImageView图片视图的基本概念和使用方法(博客地址: http://blog.csdn.net/developer_jiangqq ) Author:hmjiangqq ...

  2. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  3. mysql视图view 自增id_MySQL学习笔记之MySQL视图(view)

    一.基本概念 视图(view)是一种虚拟存在的表,作为一个select语句保存在数据字典中,其本身并不包含任何数据.视图的数据来自定义视图的查询中使用的表,使用视图动态获取数据. 基表:创建视图时使用 ...

  4. 数据库-视图(View)详解

    一.简介 视图(View)可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的me ...

  5. 创建oracle视图的权限不足,Oracle创建视图view权限不足问题剖析

    问题: 使用USER1等其他用户登录Oracle以后,创建视图,提示"权限不够",怎么解决? 这是因为USER1这个帐户目前没有创建视图的权限. 解决方法为: 首先使用system ...

  6. 表视图的基本概念和用法

    1.表视图的基本概念 ·UITableView的基本概念 ·在iOS开发中,表视图的应用十分广泛与普遍.因此,熟练使用表视图以及学习其原 理显得至关重要. ·我们可以选择创建表视图也可以直接选择创建表 ...

  7. Android中自定义视图View

    标签: 前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用 ...

  8. Android中自定义视图View之---前奏篇

    前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用到一些自 ...

  9. 使用RazorGenerator对视图View进行单元测试

    在ASP.NET MVC里我们可以很方便的对模型Model.控制器Controller进行单元测试,但对于 视图View的测试就没那么容易和直接了.在这里介绍一种方法,使用RazorGenerator ...

最新文章

  1. “编译器错误信息: CS0016: 未能写入输出文件”解决方法
  2. 洛谷P1388 算式
  3. php发表图片文章代码,最新PHP图片上传的一个例子的文章【延伸阅读】
  4. java 两个字段排序,如何在Java中按两个字段排序?
  5. 卸载 windows_Windows 10可能很快会自动卸载有问题的Windows更新
  6. midas显示代理服务器错误,midas运行后出错大神帮忙看看哪错了
  7. 谷歌SEO之如何选择关键词(2021更新教程)
  8. 【通信工程】大三下课程设计-5G核心网功能设计与部署
  9. [游戏杂谈]浅谈单机游戏制作人到底应该具备什么样的能力
  10. Gut Microbes:肠道微生物谱的改变与孤独症谱系障碍的异常神经递质代谢活动相关...
  11. 推荐系统中常用算法以及优点缺点对比
  12. UIView Animation 动画学习总结
  13. 第九届《生活月刊》国家精神造就者荣誉揭晓
  14. Bootstrap - 前端框架
  15. Live2D_2.X基本功能
  16. h5打开麦克风权限录音_h5打开麦克风权限录音_原来电脑上自带录音功能,很多人还不知道,真的太实用了......
  17. 媒体文件查看/上传至WP媒体库
  18. My97DatePicker日期插件WdatePicker.js的使用方法
  19. SpringMVC跨域上传图片出现的405错误及409错误解决方式
  20. 南昌到井冈山旅游全攻略

热门文章

  1. ROG 新款枪神 7 Plus 超竞版 评测 怎么样
  2. Live800:微信启动“微信客服”内测,打通全域客服
  3. 设计新一代的网游——第四章(补充)
  4. 同步Gmail联系人到山狮 (MAC OS X 10.8)
  5. 构建鸢尾花决策树模型
  6. Tcp 连接出现大量ESTABLISHED连接
  7. 利用CSS盒子模型结合div做一个花样边框
  8. [wechat] Error: errCode: -501000 errMsg: Environment not found
  9. spring集成shiro详解
  10. 混凝土专用粉体消泡剂在建筑行业中处理各种难以解决的泡沫难题