Mysql视图

2023-11-10

1. 简介

视图(view)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗来讲,视图只保存了查询SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就是落在创建这条SQL的查询语句上。

2. 视图的操作语法

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

-- 创建视图
create or replace view jackiechai as select 姓名,性别 from 用户表 where 用户ID< 31;

在这里插入图片描述

  • 查询

查看创建视图语句:

show create view 视图名称

在这里插入图片描述

查看视图数据(怎么样查表就怎么样查视图)

select * from jakiechai;

在这里插入图片描述

  • 修改视图
    方式一
create [or replace] view 视图名称[(列名列表)] as select语句 [with[cascaded|local] check option]

方式二

alter view 视图名称[(列名列表)] as select语句 [with[cascaded|local] check option]
  • 删除视图
drop view [if exists] 视图名称 [,视图名称] .....

3. 视图检查选项

当使用with check option子句创建视图时,mysql会通过视图检查正在更改的每个行,例如插入、更新和删除,以使其符合视图定义。Mysql允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保存一致性,为了确定检查的范围,mysql提供了两个选项:cascaded和local,默认值为前者。

  • 创建一个视图不加检查选项
create or replace view jackiechai as select 姓名,年龄 from 用户表 where 年龄< 21;
  • 往视图中插入数据
insert into jackiechai VALUES('理想',30);

发现所依赖的原始表确实有数据插入

在这里插入图片描述

但视图中没有该条数据,因为(30>27),这样视图就失去了其意义,为了解决这个问题可以加上前面介绍的检查选项

在这里插入图片描述

create or replace view jackiechai as select 姓名,年龄 from 用户表 where 年龄< 27 with CHECK OPTION;

再次插入就会报错,因为不满足检查选项

在这里插入图片描述

local选项与cascaded的区别是,使用casecaded检查选项时,所以依赖的视图也会加上casecaded选项,而local不会给所依赖的视图加上local选项

4. 视图的更新与作用

  • 视图的更新条件

要使试图可以更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一项,则视图不可以执行更新(数据)操作:

  1. 聚合函数或窗口函数
  2. Distinct
  3. Group By
  4. Having
  5. Union或者Union All
  • 视图的作用

简单
视图不仅仅可以简化用户对数据的理解,也可以简化他们的操作。哪些经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部条件。

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

数据独立
视图可以帮助用户屏蔽真实表结构带来的影响

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql视图 的相关文章

随机推荐

  • JS 取出某数组前n位的数据

    别再用 for 循环了 用 splice arr arr splice 0 n
  • 【Android】ViewBinding+DataBinding+MVVM新手快速上手

    为什么写这篇博客 网上大部分博客 代码量都比较大 把实际的业务都代入进去了 这篇博客的目的 就是为了讲解基本原理和使用思路 然后给出一个最简单的Demo 这里不讲解具体用法 那样篇幅会太长 直接看Demo代码就行 什么是ViewBindin
  • SFP光模块接口说明

    SFP光模块接口说明 1 引脚定义 Pin Name Function Description 1 VeeT 发射部分地 2 TX Fault 发射部分报错 3 TX Disable 关断发射 高电平或悬空有效 4 MOD DEF2 模块定
  • pclint检查linux代码,linux pclint

    这个插件只是分析已经生成的报告 并非去检查代码 比如配置的规则中有cppcheck库的 那么运行sonar runner时只会读取你用cppcheck检查后生成的问题报告 我也遇到过同样的问题 我是这样解决的 1 要先安装cppcheck工
  • 利用Github搭建自己专属博客

    这是一个在Windows简易的搭建博客的方法 建立使用Jekyll构建自己的博客 所以这一篇文章采用fork别人的模板来构建 偷懒 在此之前需要满足一下条件 注册一个Github账号 本地安装Git 并且能实现Git向自己的仓库push文件
  • minikube 实战篇 - 镜像打包部署 - 1

    实战篇 镜像打包 如果你是一个JAVA开发人员 需要把spring项目部署到minikube中 该怎么操作是一个需要探索的问题 这篇文章会讲解如何打包部署项目 1 生成demo项目 在浏览器端输入https start spring io
  • 第9章 Stata聚类分析

    目录 9 1划分聚类分析 1 数标准化处理 2 K个平均数的聚类分析 3 K个中位数的聚类分析 案例延伸 1 采用其他相异性指标 2 设置聚类变量的名称 3 设置观测样本为初始聚类中心 4 排除作为初始聚类中心的观测样本 9 2层次聚类分析
  • gdb 常用命令

    run r 运行 运行带参数的可执行文件 r 后面接参数 例如 gdb executablefile gdb r arg1 arg2 arg3 continue c 继续运行 next n 单步运行 step s 如果有函数则进入函数执行
  • Python 列表推导式、矩阵、格式化输出

    列表推导式 列表推导式提供了从列表 元组创建列表的简单途径 语法 表达式 for语句 if语句 创建并返回一个列表 if语句可选 示例 list1 1 2 3 4 使用元组也行 list2 x 2 for x in list1 print
  • Node.js 学习系列(四)—— 回调函数

    Node js 异步编程的直接体现就是回调 异步编程依托于回调来实现 但不能说使用了回调后程序就异步化了 回调函数在任务完成后就会被调用 Node 使用了大量的回调函数 Node 的所有 API 都支持回调函数 例如 我们可以一边读取文件
  • 【干货】dockerfastdfs集群

    正文 最近整理了一份 Netty 相关的文档干货 讲解很系统 今天分享给大家 看完这份文档你将获得哪些收获 理解当下火热的 Netty 框架 核心概念 开发流程 手写 RPC 框架 聊天室 Tomcat等 对照知识点进行查漏补缺 帮助扫除知
  • 类 AudioInputStream 说明文档 中文版

    javax sound sampled 类 AudioInputStreamjava lang Object java io InputStream javax sound sampled AudioInputStream 所有已实现的接口
  • angular 整理

    文章目录 网址 npm 知识点 参考 https www cnblogs com wjw1014 p 10262309 html 网址 angular https angular cn docs ag grid https www ag g
  • RHEL6.4启动一直在加载界面,无法进入图形化界面的解决办法

    在下在上午的时候将我另一个机器上面的虚拟机拷贝到了我现在用的机器上 发现rhel6 4启动加载的时候一直开在这个界面 如图 就一直卡在这个界面了 我用ctrl shift f1一看 哎 有点迷 咋回事啊 为了验证 我将我原来的机器也打开看了
  • 猪齿鱼平台的部署教程

    以下是基于猪齿鱼平台的部署教程 安装 Docker 在猪齿鱼平台中 应用会运行在 Docker 容器中 所以首先需要安装 Docker 可以按照以下步骤在 CentOS 7 系统上安装 Docker 安装依赖 sudo yum instal
  • kong认证插件添加第二认证方式

    在认证插件对象 如ldap auth 的anonymous 字段添加第二认证方式 查看ldap的插件设置 anonymous 为basic auth的plugin的consumer id 在Authorization中设置认证密码 user
  • vulnhub-sick0s1.2简单靶场提权

    以下均在测试环境进行 遵纪守法 靶场下载地址 https download vulnhub com sickos sick0s1 2 zip 下载后直接用vm导入 网卡NAT模式即可 首先进行信息收集 nmap 192 168 111 0
  • 500报错及故障排除

    500 Internal Server Error 每次打开网页时 浏览器都会向托管站点的服务器发送请求 服务器将返回请求的数据和响应代码 HTTP响应状态代码指示请求是否成功 500到599范围内的代码表示服务器错误 该错误不是由浏览器或
  • 论文英文参考文献[10]的时候后面多空格_毕业论文格式问题批量修改

    今天 给大家介绍一下毕业论文中常见的格式错误批量修改方法 问题一 英文摘要部分或参考文献的英文标点符号检查 采用ENDNOTE ZOTERO这类文献管理软件直接导入的 不存在这类问题 主要针对不会使用软件的而手动复制编写的参考文献 主要涉及
  • Mysql视图

    文章目录 1 简介 2 视图的操作语法 3 视图检查选项 4 视图的更新与作用 1 简介 视图 view 是一种虚拟存在的表 视图中的数据并不在数据库中实际存在 行和列数据来自定义视图的查询中使用的表 并且是在使用视图时动态生成的 通俗来讲