MySQL数据库:视图View

MySQL数据库:视图View

 

一、视图的定义:

视图(View)是从一个或者多个表(或视图)导出的表,其内容由查询定义。视图是一个虚拟表,数据库中只存储视图的定义,不存储视图对应的数据,在对视图的数据进行操作时,系统根据视图的定义去操作相应的基本表。

可以说,视图是在基本表之上建立的表,它的结构和内容都来自基本表,依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

 

二、视图的作用:

1、简化了操作,把经常使用的数据定义为视图:

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

2、安全性,用户只能查询和修改能看到的数据:

视图的安全性可以防止未授权用户查看特定的行或列,使用户只能看到表中特定行列,定制用户的数据,因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要的字段信息,不通过视图给用户。视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图不可以随意的更改和删除,可以保证数据的安全性。 

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

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

 

三、视图的缺点:

1、性能差:

数据库必须把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也要把它变成一个复杂的结合体,需要花费一定的时间。(每次SELECT视图的时候,视图都会重新计算创建它的规则,即sql算法,如果算法复杂,数据量大,那样每次查询就很慢了)

2、修改限制:

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

 

四、视图的相关操作:

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

参考链接:http://www.w3school.com.cn/sql/sql_view.asp

1、创建视图:

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

2、查询视图:

seclect column_name(s) from view_name;

3、更新视图:

CREATE OR REPLACE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

4、删除视图:

Drop View view_name;

 

五、视图与表的区别:

1、视图不占用物理空间,只是逻辑概念的存在,数据库中只存储视图的定义,不存储视图对应的数据,没有实际的物理记录,是虚表。而表是实际的物理记录,需要占用物理空间。

2、表是内容,视图是窗口。

3、表是内模式,视图是外模式。

4、视图的建立和删除只影响视图本身,不影响对应的基本表。但是,基本表的删除和修改会影响到视图。

5、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,是一些SQL语句执行结果集合的可视化的表。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

 

 

参考文章:https://blog.csdn.net/buhuikanjian/article/details/53105416

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114633.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QStringList 的常规使用

    QStringList 的常规使用参考博客:https://blog.csdn.net/u013360881/article/details/52170487QStringList初始化QStringListqstrList;qstrList<<"Android"<<"QtCreator"<<"Java"<<"C++";

  • risc系统服务器,RISC架构三款处理器

    risc系统服务器,RISC架构三款处理器富士通在去年8月份的HotChips24大会上发布了其Sparc架构的16核处理器Sparc64-X,与此同时,甲骨文也发布了同样为Sparc架构的16核心处理器SparcT5,IBM的Power7+也是在此次大会上发布的。HotChips24三款CPU主题演讲IBM的Power7+采用的32nm支持工艺,8核心,最高主频超过5GHz,已经在IBM大型机ZzEnterpriseEC1…

    2022年10月22日
  • docker搭建kafka集群

    docker搭建kafka集群docker搭建kafka集群我在M1mbp上使用的以下镜像新建文件zk-kafka-docker-compose.ymlversion:”2″services:zookeeper:user:rootimage:docker.io/zookeeperports:-“12181:2181″environment:-ALLOW_ANONYMOUS_LOGIN=yesvolumes:-zoo

  • 全局平均池化层替代全连接层(最大池化和平均池化的区别)

    最近看了两张图,我对第一张图有些不同的见解。首先全连接层和softmax层是不同的两个部分,其次计算参数时候可以理解为,假设最后一个卷积层是4个4*4的特征图,类别为4,则计算量为4*4*4*4。同样去理解GAP,为4*4,而这里与softmax还没有关系。下面是第二张图,GAP最早来源于NIN…

  • linux文本编辑器

    linux文本编辑器linux常见服务一.文本编辑器vivim是vi增强版vim需要安装sudoapt-get-yinstallvimvim的三种工作模式1编辑模式命令模式=>编辑模式iaos按键作用i在光标当前位置插入文本a光标的下一个位置插入文本A当前行的行尾插入文本S…

  • Min Stack

    Min Stack

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号