MySQL 视图(1)

常用视图语句

-- 创建视图
CREATE VIEW t1_view AS SELECT *  FROM t1;
CREATE VIEW v AS VALUES ROW(1,2);-- 查询视图
SELECT * FROM t1_view;-- 查询视图的相关系统视图
SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';-- 删除视图
DROP VIEW v1,v2;
DROP VIEW IF EXISTS v3,v4;-- 修改视图
ALTER VIEW t1_view AS select * from xxxx;

关于视图

  • MySQL :: MySQL 8.0 Reference Manual :: 15.1.23 CREATE VIEW Statement
  • MySQL :: MySQL 8.0 Reference Manual :: 10.2.2.4 Optimizing Derived Tables, View References, and Common Table Expressionswith Merging or Materialization

视图是从一个或多个表导出的虚拟的表。本质上,视图是一个存储好的查询,用户通过访问这个视图来获取该视图定义的数据。

视图的优势

  • 把经常使用的数据定义为视图以简化SQL操作。数据库的查询大多要使用聚合函数,同时还要显示其它字段的信息,可能还会需要关联到其它表,这时涉及的 SQL 语句可能比较复杂。如果需要频繁执行此查询,就可以通过创建视图简化查询操作,之后只需要执行 SELECT * FROM view_name 就可以获得预期结果。
  • 视图限制用户查询和修改可视的数据范围,提高了数据的安全性。视图是动态的数据集合,数据随着基表的更新而更新。但是视图是虚拟的,物理上是不存在的,只是存储了数据的集合,所以可以将基表中重要的字段信息屏蔽,不通过视图展示给用户。
  • 视图拥有逻辑上的独立性,屏蔽了真实表的结构带来的影响。视图可以使应用程序和数据库的表在一定程度上互相独立。如果没有视图,应用一定是建立在表上的。创建了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。

视图的特点

  • 与表不同,视图没有分配存储空间。从视图引用的基表中提取或派生数据( 除了用于定义数据字典中视图的查询的存储之外,它不需要其他存储)。
  • 在数据库中,基表和视图共享相同的命名空间,因此基表和视图不能具有相同的名称。
  • 视图中无法存在相同名称的列,也无法创建。
  • 可更新视图数据更新后,基表数据同时也会更新(通常情况),但需要注意视图数据与基表非 一 一对应,或者基表有约束或其他关联,视图数据可能更新失败。

视图限制

MySQL :: MySQL 8.0 Reference Manual :: 27.9 Restrictions on Views # 视图限制

  • 视图定义在创建时被“冻结”,并且不受基础表定义的后续更改的影响。例如,如果在表上将视图定义为SELECT*,则稍后添加到基表中的新列不会成为视图的一部分,视图不会报错,但是从基表中删除列会导致查询视图中时出错
  • 视图需要 CREATE_VIEW / SELECT / DROP 权限,以下一 一对应。
    • 创建视图。
    • 对于SELECT语句中其他位置使用的列,需要 SELECT 权限。
    • 对于 OR REPLACE 子句,则还必须具有该视图的DROP权限。
    • 如果存在 DEFINER 子句,则所需的权限取决于用户。
  • 视图列如果手动定义数量,则需要与后面的 select_statement 数量一致。
  • 无法在视图上建立索引。
    • 索引可用于使用在合并算法处理的视图。但是,使用 temptable 算法处理的视图无法利用其基础表上的索引(尽管可以在生成临时表期间使用索引)。
  • SELECT语句不能引用系统变量或用户定义的变量。
  • 在存储程序中,SELECT语句不能引用程序参数或局部变量。
  • SELECT语句不能引用已准备好的语句参数。
  • 定义中引用的任何表或视图都必须存在。如果在创建视图后,删除了定义引用的表或视图,则使用该视图会导致错误。要检查视图定义是否存在此类问题,可以使用 CHECK TABLE 语句。
  • 定义不能引用临时表,也不能创建临时视图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB基础应用精讲-【数模应用】调节中介作用分析(附R语言代码实现)

目录 算法原理 什么是调节中介作用分析 中介调节模型 一概念

LLaMA2详解

padding_side llama系列训练和推理都是right padding: 训练:其实只要设置padding mask,那么left/right pad是没有区别的。然而实际上huggingface中某些tokenizer在training的时候必须设成right padding,因为有些tokenizer使用的是…

【智能算法应用】遗传算法求解车间布局优化问题

目录 1.问题背景2.车间布局数学模型3.算法过程4.结果展示5.参考文献6.代码获取 1.问题背景 工厂设施布置的规划一直是工业工程领域不断研究和探索的内容, 其中最具代表性之一的是系统布置设计( system layout planning, SLP) 方法。作为一种经典且有效的…

flink程序本地运行报: A JNI error has occurred和java.lang.NoClassDefFoundError

1.问题描述 在idea中运行flink job程序出现如下错误: Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/io/FileInputFormat …

接口自动化基础

1、接口自动化测试 接口自动化:使用工具或代码代替人对接口进行测试的技术。 测试目的:防止开发修改代码时引入新的问题。 l测试时机: 开发进行系统测试转测前,可以先进行接口自动化脚本的编写。 开发进行系统测试转测后&…

单片机通信协议(1):SPI简介

关于SPI SPI(串行外设接口)是板载设备间通信接口之一。它是由摩托罗拉公司(飞思卡尔半导体)推出的。由于其简单性和通用性,它被纳入各种外围设备中,并与飞利浦I2C总线并列。 SPI的三线或四线信号数量比IIC…

深度学习模型keras第二十二讲:使用KerasCV进行语义分割

1、语义分割的概念 1.1语义分割的定义 语义分割是一种计算机视觉领域的图像分割技术,其目标是将一张图像中的每个像素分配给预定义的类别。 在图像领域,语义指的是对图像意思的理解。语义分割就是按照“语义”给图像上目标类别中的每一点打上一个标签…

Qt代码初识

文章目录 Qt代码初识1. Qt Hello World 程序1.1 使⽤ "按钮" 实现1.1.1 纯代码⽅式实现1.1.2 可视化操作实现 1.2 使⽤ "标签" 实现1.2.1 纯代码⽅式实现1.2.2 可视化操作实现 2. 项⽬⽂件解析2.1 .pro ⽂件解析2.2 widget.h ⽂件解析2.3 main.cpp ⽂件解析…

「云渲染课堂」3dmax渲染影响时间的原因有哪些

在3ds Max使用过程中经验丰富的用户普遍了解,渲染大型场景往往需要消耗更多的时间,尤其是在硬件配置相同的情况下。但有时候,我们可能会遇到一个反直觉的现象:在相同的硬件配置下,渲染小型场景所需的时间竟然超过了大型…

vue的内置组件keep-alive都做了什么

keep-alive我想大家都不陌生,它能在组件切换过程中将状态保留在内存中,防止重复渲染DOM,确保高效渲染时节约性能。 一、Keep-alive 是什么 keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们 keep-a…

Windows安全应急--反隐身术

NO.1 dir命令 首先做个演示,把演示01这个文件夹隐藏起来, 在文件夹上是看不到了, 我们可以使用dir命令查看, NO.2 文件夹选项–显示隐藏 这个是非常常规的了, 这里不做过多介绍 有些隐藏文件很顽固,上面…

IO系列(八) -浅析NIO工作原理

一、简介 现在使用 NIO 的场景越来越多,很多网上的技术框架或多或少的使用 NIO 技术,譬如 Tomcat、Jetty、Netty,学习和掌握 NIO 技术已经不是一个 Java 攻城狮的加分技能,而是一个必备技能。 那什么是 NIO 呢? NIO…

运维出现的问题 --集成

运维出现的问题 集成 macos 本地打的镜像,推到线上出现 images platform (linux/arm64) does not match the detected解决办法 macos 本地打的镜像,推到线上出现 image’s platform (linux/arm64) does not match the detected WARNING: The requested …

如何使用Android NDK将头像变成“遗像”

看完本文的标题,可能有人要打我。你说黑白的老照片不好吗?非要说什么遗像,我现在就把你变成遗像!好了,言归正传。我想大部分人都用过美颜相机或者剪映等软件吧,它们的滤镜功能是如何实现的,有人…

1653jsp在线学习交流平台Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 在线学习交流平台系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#x…

warning: ‘struct timespec‘ declared inside parameter list

交叉编译程序时,编译报错,错误如下: ./lib/libgpiod/gpiod.h:204:24: warning: struct timespec declared inside parameter list const struct timespec *, void *); ./lib/libgpiod/gpiod.h:367:4: warning: struct timespec d…

AWS安全性身份和合规性之Identity and Access Management(IAM)

通过AWS Identity and Access Management(IAM),您可以指定谁或什么能够访问AWS中的服务和资源、集中管理精细权限,并分析访问权限以优化跨AWS的权限。 比如一家软件开发公司需要在AWS上创建多个开发人员账户,并对其进…

React Native 之 Flexbox 布局(五)

在 React Native 中使用 flexbox 规则来指定某个组件的子元素的布局。Flexbox可以在不同屏幕尺寸上提供一致的布局结构。 使用flexDirection、alignItems和 justifyContent三个样式属性就已经能满足大多数布局需求。 React Native 中的 Flexbox 的工作原理和 web 上的 CSS基本一…

[Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解

目录 1.不同路径1.题目链接2.算法原理详解3.代码实现 2.不同路径 II1.题目链接2.算法原理详解3.代码实现 3.珠宝的最高价值1.题目链接2.算法原理详解3.代码实现 1.不同路径 1.题目链接 不同路径 2.算法原理详解 思路: 确定状态表示 -> dp[i][j]的含义 走到dp[…

Excel 多行表头的列转行

Excel中A3:F6是带表头的典型表格,但上面多了额外的两行表头: ABCDEF1ActualsActualsPlanPlan2FY20FY21FY20FY213CountryOwner1/1/20201/1/20201/1/20201/1/20204FranceRichard100150801605FranceMartin1201401301406FrancePierre501005080 现在要将典型…