MySQL 视图

ops/2024/10/31 23:35:34/

视图

介绍:视图(view)是一种虚拟存在的表,视图中的数据并不在数据库中实际存在,行和列数据都来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。

视图只存了查询的SQL逻辑,不保存查询结果,创建视图,主要工作在创建SQL查询语句上

  • 创建

create [ or replace ] view 视图列表(列名列表)] as  select 语句 [ with ( cascaded | local ) check option]

eg:  create view stu_v_1 as select id,name from student where id<=10;

  • 查询

查看创建视图语句:show create view 视图名称;

查看视图数据:select  *  from 视图名称

  • 修改

alter view  视图名称  as ;

alter view stu_v_1 as select ....;

  • 删除

drop  view [ if exists ]  视图名

drop  view if exists stu_v_1;

with cascade local check option;

视图检查选项:

当使用上述语句时,创建视图时,MySQL会通过视图检查正在更改的每个行,例如:插入、更新、删除,以使其符合视图的定义。MySQL允许另一个视图创建视图,它还会使依赖视图中的规则以保持一致性。为了确定检查的范围。

MySQL提供了两个选项:cascade和local ,默认值为cascade

级联:

vi  id < 20

v2 from  v1>10  with cascade

v3 from v2 <15

v2要检查v1的条件

local不会查上一级的条件,除非上一级也带local,才会检查

  • 视图的更新

要使视图可更新,视图中的行与基础表的行之间必须存在一对一的关系。如果视图包含以下任一项,则该视图不可更新。

  1. 聚合函数或窗口函数(sum()、min()、max()、count()等)
  2. distinct
  3. groupby
  4. having
  5. union或union all

作用:

  • 简单

可简化用户对数据的理解,也可简化他们的操作。

那些被经常查询可以被定义为视图,从而使得用户不必为后面的操作每次指定全部的条件。

  • 安全

数据库可以授权,但不能授权到数据库特定行和特定的列上,通过视图用户只能查询和修改他们所能见到的数据。

  • 数据独立

视图可帮助用户屏蔽真是表结构的变化带来的影响

例题:1.为提高表的安全性,在操作tb_user表时,只能看到用户的基本字段,屏蔽手机号和邮箱字段。

2.查询每个学生所选修的课程,这个功能在很多的业务中都有使用到,为了简化操作,定义一个视图。

1.create view tb_user_view  as select id, name profession, age,gender, status, createtime from tb_user select  * from  tb_user_view;

2.create view tb_stu_course_view as select s.name from student s,student_course;


http://www.ppmy.cn/ops/129970.html

相关文章

未来已来:揭秘AI数字孪生的建模与计算奥秘

经过数十年的发展&#xff0c;建模和模拟已成为工程和科学的基石。人们针对改进建模的计算方法进行了大量的研究和开发工作。这些计算机模型对系统设计非常有用&#xff0c;可以削减实验和测试的高昂成本。然而在实操中&#xff0c;还需要跟踪系统随时间的演变情况&#xff0c;…

YOLOv11改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv11的检测头变化详解

前言 在目标检测领域,小目标检测一直是一个具有挑战性的问题。YOLO系列算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在YOLOv11中添加小目标检测层,以提高对小目标的检测能力。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、…

stm32入门教程--USART外设 超详细!!!

目录 简介 什么是UART&#xff1f; 什么是USART&#xff1f; 简介 USART&#xff08;Universal Synchron /Asynchronous Receiver /Transmitter&#xff09;通用同步/异步收发器 1、USART是STM32内部集成的硬件外设&#xff0c;可根据数据寄存器的一个字节数据自动生成数据帧…

正则表达式和通配符

文章目录 正则表达式和通配符的区别正则表达式&#xff08;Regex&#xff09;通配符&#xff08;Wildcards&#xff09;总结 正则表达式的概念正则表达式的由来为什么要使用正则表达式 正则表达式的语法组成修饰符元字符\f\b\B 在Linux中的基础正则和扩展正则基础正则(BRE)^$.*…

蓝桥杯第二十场小白入门赛

2.黛玉泡茶 我的思路代码&#xff1a;&#xff08;但我不知道哪有错误&#xff09; #include<iostream> #include<vector> #include<algorithm> using namespace std;int main(){int n,m,k,res1;cin>>n>>m>>k;vector<int>num(n1,0…

docker build cache 占用磁盘空间很高

一、查看docker 构建缓存占用空间 二、清理 三、查看

C++设计模式创建型模式———生成器模式

文章目录 一、引言二、生成器/建造者模式三、总结 一、引言 上一篇文章我们介绍了工厂模式&#xff0c;工厂模式的主要特点是生成对象。当对象较简单时&#xff0c;可以使用简单工厂模式或工厂模式&#xff1b;而当对象相对复杂时&#xff0c;则可以选择使用抽象工厂模式。 工…

15分钟学 Go 第 29 天:流程控制 - select语句

第29天&#xff1a;流程控制 - Select语句 1. 目标 理解Go语言中select语句的使用&#xff0c;以及如何在并发编程中有效地管理多个通道的操作。 2. select语句概述 select语句是Go语言中处理多个通道操作的强大机制。它类似于switch语句&#xff0c;但其用于处理通道事件。…