IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL数据库——视图(五) -> 正文阅读

[大数据]MySQL数据库——视图(五)

目录

一、概述

二、创建视图

三、删除视图

四、修改视图定义

五、查看视图定义

六、更新视图数据

七、查询视图数据

八、视图的应用

九、视图的进一步说明


一、概述

  • 视图是从一个或多个表视图中导出来的表,包含一系列带有名称的数据列和数据行
  • 视图不是数据库中真实存在的表,而是一张虚拟表
  • 视图不是以数据集的形式存储在数据库中
  • 视图是用来查看存储在别处数据的一种载体,其本身并不存储数据

视图的优点:

  1. 集中分散数据
  2. 简化查询语句
  3. 重用SQL语句
  4. 保护数据安全
  5. 共享所需数据
  6. 更改数据格式

二、创建视图

格式:

CREATE [OR REPLACE] VIEW 视图名 AS 查询语句 [WITH  [CASCADED|LOCAL]  CHECK OPTION] 
  • ?OR REPLACE:可选项,替换数据库中已有的同名视图
  • WITH CHECK OPTION:用于指定在视图上进行的修改操作需要满足查询语句所指定的限制条件,这样可以确保数据修改后仍可通过视图查询修改后的数据
  • WITH CHECK OPTION的两个参数:CASCADEDLOCAL
  • CASCADED:默认值,它会对所有视图进行检查
  • LOCAL:它只对定义的视图进行检查

Example:?

  • 不指定列名称(按原表中的列名称展示)
  • ?指定列名称(按指定列名称展示)

    • ? ? ? ? ? ? ??


查询语句的一些限制:

  1. 定义视图的用户除了被授予CREATE VIEW权限外,还应授予操作视图基础表等相关权限
  2. SELECT语句不能包含FROM子句中的子查询
  3. SELECT语句不能引用系统变量或用户变量
  4. SELECT语句不能引用预处理语句参数
  5. SELECT语句引用的表或视图必须存在
  6. 若SELECT语句引用的不是当前数据的表或视图,需要在该表或视图前加上数据库的名称作为限定前缀
  7. SELECT语句构造的视图可以使用ORDER BY子句
  8. 对于SELECT语句中的其它选项或子句,若创建的视图也包含这些选项,则语句执行效果未定义

  • 不能包含FROM字句中的子查询(好像又可以包含)


  • WITH CHECK OPTION的说明

  • ?下面的两个视图都是根据score_view定义的

1.WITH LOCAL CHECK OPTION


  • ?官方解释:
    • Local:仅会针对其自身检查对插入项进行测试

2.WITH CASCADED?CHECK OPTION


  • ?官方解释:
    • Cascaded:不仅会针对其自身检查的插入项进行测试,也会针对基本视图score_view的检查对插入项进行测试

总结:二者好像并无差别

三、删除视图

格式:

DROP VIEW [IF EXISTS] 视图名...;
  • IF EXISTS:判断要删除的视图是否存在,防止因删除不存在的视图而出错?

Example:

四、修改视图定义

格式:

ALTER VIEW 视图名[(字段名..)] AS SELECT 字段名 FROM 表名 WHERE 条件语句 [WITH CHECK OPTION];
  • 修改视图定义:还可用CREATE VIEWCREATE OR? REPLACE?VIEW来实现

Example:

五、查看视图定义

格式:

SHOW CREATE VIEW 视图名 [\G];
  • \G:改变输出结果集的显示方式,更易看懂?

Example:

六、更新视图数据

格式:

INSERT INTO 视图名 VALUES(字段名...) VALUES(字段值...) [WHERE子句];
UPDATE 视图名 SET 字段名=字段值;
DELETE FROM 视图名 WHERE...;

Example:

?1.使用INSERT语句通过视图向基础表插入数据


  • WITH CHECK OPTION:更新数据时检查新数据是否符合WHERE子句的条件?
  • ?
  • ?插入失败的原因:新数据的性别不满足创建视图时WHERE子句的条件(‘男’)

2.使用UPDATE语句通过视图修改基础表的数据

  • ??

3.使用DELETE语句通过视图删除基础表的数据


Explation:

  • 视图是一张虚拟表,所以可以对视图进行增删改查,但视图的操作是受限制的,只有满足可更新条件的视图才能进行数据更新,否则会导致系统出现不可预期的结果
  • 对于可更新的视图,视图中的行基础表中的行具有一对一的关系
  • 视图包含下述任何一种SQL语句结构,则视图是不可更新的
    • 聚合函数
    • DISTINCT关键字
    • GROUP BY子句
    • ORDER BY子句
    • HAVING子句
    • UNION运算符
    • 位于选择列表中的子查询
    • FROM子句中包含多个表
    • SELECT语句中引用了不可更新的视图
    • WHERE字句中的子查询,引用FROM字句中的表

七、查询视图数据

格式:

SELECT 字段名 FROM 表名 [WHERE 条件语句];
  • ?视图是一张虚拟表,所以对视图进行查询,就相当于对基本表的操作

Example:

八、视图的应用

  • 利用视图可以简化复杂的表连接
  • 使用视图可以重新格式化检索出的数据
  • 使用视图可以过滤掉不想要的数据

九、视图的进一步说明

  • 创建视图必须要有足够的访问权限
  • 对于创建视图的数目没有限制
  • 视图可以嵌套,即可从其它视图检索查询得来的数据构造一个新的视图
  • ORDER BY子句可用在视图中,如果原SELECT语句中也有ORDER BY子句,则该ORDER BY被覆盖
  • 视图不能有索引、触发器、默认值
  • 视图可以和表一起使用

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:49:32  更:2022-05-01 15:49:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:18:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码