zoukankan      html  css  js  c++  java
  • SQL——视图

    环境

      DBMS:MySQL 8.0.17

      工具:Navicat Premium 11.2.16

    概述

      视图是从一个或多个基本表导出的虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化,从视图中查询出的数据也会随之改变。

      视图有以下优点:

    • 视图能够简化用户的操作。
    • 视图使用户能以多种角度看待同一数据。
    • 视图对重构数据库提供了一定程度的逻辑独立性。
    • 视图能够对机密数据提供安全保护。
    • 适当利用视图可以更清晰地表达查询。

    创建

    CREATE VIEW <视图名> AS <子查询>;

      与基本表一样,视图名也是唯一标识一个视图,所以视图名不能重复。

      不同的是,创建视图不是使用if not exists判断是否存在同名视图,而是使用create or replace,表示不存在同名视图则创建视图,存在同名视图则替换视图。

    CREATE OR REPLACE VIEW <视图名> AS <子查询>;

      创建学生选课视图v_sc:

      

    修改

    ALTER VIEW <视图名> AS <子查询>;

      注意修改是使用alter关键字而不是用replace关键字。

      修改视图v_sc,增加成绩列:

      

    删除

    DROP VIEW <视图名>;

      删除视图不能使用is exists判断视图是否存在。

      删除视图v_sc:

      

    查看

    DESC <视图名>;

    数据查询

      视图的数据查询与基本表的数据查询一样。视图和视图之间、基本表和视图之间都可以进行连接查询、嵌套查询和派生表查询。

      关系型数据库执行对视图的查询时,首先进行有效性检查,检查查询中涉及的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询。这一转换过程称为视图消解

    数据操作

      由于视图是不实际存储数据的虚表,对视图的更新最终要转换为对基本表的更新。与视图查询一样,视图的更新操作也是通过视图消解转换为对基本表的更新操作。

      并不是所有的视图都可以更新。对于MySQL而言,以下视图不能进行更新:

    • 视图的字段中包含表达式、常数或函数。
    • 定义视图的子查询为分组查询、连接查询。
    • 定义视图时使用了distinct关键字去掉重复字段。
  • 相关阅读:
    妹妹
    小猴和北极熊
    盛趣->盛大
    运维
    操之过急
    修马路
    博人传
    醉酒
    【跨域】SpringBoot跨域,拦截器中,第一次获取的请求头为NULL,发送两次请求的处理方式
    【Linux】Linux安装Tomcat
  • 原文地址:https://www.cnblogs.com/lqkStudy/p/11482293.html
Copyright © 2011-2022 走看看