定义:

  视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并在引用视图时动态生成。

  对其中所引用的基础表来说,视图的作用类似于筛选。

  定义视图的筛选可以来当自当前或其他数据库的一个或多个表,或其他视图。通过视图进行查询没有任何限制,通过他们进行数据修改时的限制也很少。

  视图是存储在数据库中的查询的SQL语句,他主要出于两种原因:

    安全原因:视图隐藏一些数据,如社会保险基金表,可以用视图只显示姓名、地址,而不显示社会保险号和工资数等

    另一原因:可使复杂的查询易于理解和使用。这个视图就像一个窗口,从中只能看到你想看到的数据列。这意味着你可以在这个视图上使用select *,而你看到的将是你在视图定义里给出那些数据列。

  既然视图的定义是基于基本表的,哪为什么还要定义视图呢?这是因为合理的使用视图能带来很多好处:

  1、视图能简化用户操作

    视图机制使用户可以将注意力集中在所关心的数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的数据查询操作。

    例如:那些定义了若干张表连接的视图,就将表和表之间的连接操作对用户隐藏起来了。换句话说,用户所做的只是对一个虚表的简单查询,而这个虚表怎么得来的,用户无需了解。

  2、视图使用户能以多种角度看待同一个数据

    数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户应用程序不会受影响。层次数据库和王网状数据库一般能较好的支持数据的物理独立性,而对于逻辑独立性则不能完全的支持

在关系数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个基本表“”垂直“”地分成多个基本表。

例如,将学生关系student(sno,sname,ssex,sage,sdept) 分成 sx(so,sname,sage) 和 sy(sno,ssex,sdept)两个关系。这时原表student为sx表和sy表自然连接的结果,乳沟建立一个视图student:

create view student(sno,sname,ssex,sage,sdept) as select sx.sno,sx.sname,sy.ssex,sx.sage,sy.sdept sy where sx.sno = sy.sno;

这样尽管数据库的逻辑结构变了(变成了sx和sy两个表),但应用程序不必修改,因为新建的视图定义为用户原来的关系,使用户的外模式保持不变,用户的应用程序通过视图仍然能查找数据。

当然,视图只能在一定程度上提供数据的逻辑独立,比如由于视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因为基本表构造的改变而改变。

4、视图能够对机密数据提供安全保护

  有了视图机制,就可以在设计数据库应用程序时,对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。

mysql视图定义、原理、创建、使用的更多相关文章

  1. 数据库之 MySQL --- 视图的原理解析与创建(八)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.什么是视图? 视图:MySQL从5.0.1版本开始提供视图功能.一种虚拟存在的表,行和列的数据来自定 ...

  2. MySQL数据库视图(view),视图定义、创建视图、修改视图

    原文链接:https://blog.csdn.net/moxigandashu/article/details/63254901

  3. 深入解析MySQL视图view

    阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...

  4. MySQL视图view/存储过程和函数的使用

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

  5. 11.Mysql视图

    11.视图11.1 什么是视图 视图view是一张虚拟表,它不存储数据,数据仍在表里,视图由一条查询表的select语句创建,视图只存储select语句. 可以将复杂的查询语句封装成视图,用户可以从视 ...

  6. Mysql视图的创建及使用

    视图理解: 视图又叫虚表.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成. 视 ...

  7. MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)

    知识点七:MySQL视图的创建(14) 视图的定义: 什么是视图: 视图数由查询结果形成的一张虚拟的表. 什么时候要用到视图? 如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询. ...

  8. Mysql学习总结(9)——MySql视图原理讲解与使用大全

    一. 视图概述 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且 ...

  9. mysql优化---订单查询优化:视图优化+索引创建

    订单的表结构采用了垂直分表的策略,将订单相关的不同模块的字段维护在不同表中 在订单处理这个页面,需要查询各种维度, 因此为了方便查询创建了v_sale_order视图(老版本) drop view v ...

随机推荐

  1. eclipse启动tomcat不能访问解决

    tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomcat,在 ...

  2. JVM垃圾收集器整理

    概述 垃圾收集器是jvm实现内存回收的具体实现.本次分享要介绍的7种垃圾收集器的作用区域及其之间的关系如下图: 注: 如果2个垃圾收集器之间有连线,表示可以搭配使用 垃圾收集器并没有最好的,只有针对不 ...

  3. Effective Java 第三版——18. 组合优于继承

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  4. mac 上安装服务,查看服务,重启和关闭

    首先了解下的Mac的 homebrew ,官网:https://brew.sh/index_zh-cn.html 简单的说: Homebrew 能干什么? 答:使用 Homebrew 安装 Apple ...

  5. DAY4-打卡第四天-2018-1-12

    刚经历C语言考试,提前一个小时交卷出来在学一点咯!! 字符串不是一个基本类型,不能用恒等== 而应该用: 变量名.equals(""); 变量名.equalsIgnoreCase( ...

  6. 常用SQL语句集合

    一.数据定义 1.创建新数据库:CREATE DATABASE database_name2.创建新表:CREATE TABLE table_name (column_name datatype,co ...

  7. Mac效率:配置Alfred web search

    // 这是一篇导入进来的旧博客,可能有时效性问题. 想用搜索引擎搜东西,或者查字典时,一般的workflow是:打开浏览器-->打开搜索引擎/字典网站-->输入搜索关键字-->回车. ...

  8. Maven(三)在Eclipse中使用Maven与Maven坐标

    这一篇讲解一下在eclipse中使用maven,在一些高版本的eclipse中是自带maven插件的.所以这里就不在讲解怎么安装插件了. 接下来我们创建一个MavenFirst项目 一.在Eclips ...

  9. CTF---Web入门第十六题 天下武功唯快不破

    天下武功唯快不破分值:10 来源: 北邮天枢战队 难度:易 参与人数:10787人 Get Flag:2264人 答题人数:3373人 解题通过率:67% 看看响应头 格式:CTF{ } 解题链接: ...

  10. 【C#学习笔记之一】C#中的关键字

    C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列出的 ...