MySQL:视图

1. 概述

在MySQL中,视图(View)是一个虚拟存在的表,其内容是由查询定义的。视图本身并不包含数据,它只包含一条SQL查询语句(即定义视图的SELECT语句)。当通过视图访问数据时,MySQL会执行这条查询语句,并返回查询结果。因此,视图可以看作是一个预定义的SQL查询,它提供了一种灵活的方式来访问和操作数据。

视图具有以下特点:

  1. 简化复杂查询:通过创建一个视图,可以将复杂的SQL查询语句简化为一个简单的查询,从而方便用户访问和操作数据。

  2. 数据抽象:视图可以隐藏数据的复杂性和底层表的结构,只展示用户需要关注的数据。这样,用户无需了解底层表的具体细节,只需通过视图来访问和操作数据。

  3. 安全性:通过视图,可以控制用户对数据的访问权限。可以创建只包含部分字段或部分记录的视图,从而限制用户对数据的访问范围。

  4. 逻辑独立性:当底层表的结构发生变化时,只需要修改视图的定义,而无需修改依赖于视图的应用程序代码。这提高了数据库的逻辑独立性。

2. 视图的基本操作

创建

-- 创建视图
-- create view 视图名称  as select (字段名)视图有哪些字段 from (表名)从哪张表提取字段 where 条件(过滤哪些数据进视图)
create view emp_vi_1 as select id, name from emp where age = 18;

  查看

查看创建视图的语句信息

show create view 视图名

 查看视图内的数据

select 字段名 from 视图名

-- 查看视图
-- 查看视图创建语句
show create view emp_vi_1;
-- 查看视图数据(和表操作一致)
select * from emp_vi_1;

 修改

create or replace view 视图名 as select 字段名 from 表名 where 条件;

alter view 视图名 as select 字段名 from 表名 where 条件; 

-- 修改视图
-- 方式一:create or replace view 视图名 as select 字段名(该视图有哪些字段)from 表名 where 条件过滤
create or replace view emp_vi_1 as select id, name, age from emp where age <= 20;
-- 方式二:alter view 视图名 as select 字段名(该视图有哪些字段) from 表名 where 条件过滤
alter view emp_vi_1 as select id, name from emp where age <= 20;

 删除

drop view if exists 视图名;

-- 删除视图
-- drop view (if exists)括号内容可省略 视图名1,视图名2... ;
drop view if exists emp_vi_1;

 3. 检查选项

-- 创建视图时加上关键字with cascaded check option
--                 with local check option;
-- 加上该关键字创建的视图在数据进行插入、更新、删除时会进行数据校验

cascaded 

-- cascaded注意:在插入数据到视图时如果该视图加了cascaded关键字则插入的数据需要同时满足当前视图的条件以及该视图所依赖的视图的条件(不论依赖视图是否添加了local、cascaded关键字)

栗子 1

-- 视图的创建可基于表创建也可也基于视图进行创建
create view emp_v_1 as select id, name, age from emp where age >= 10;
-- 基于视图1创建视图2
create view emp_v_2 as select id, name, age from emp_v_1 where age <= 30 with cascaded check option;

-- 如:此时插入两条数据,会对视图2的插入进行校验,符合在对视图1进行校验,两个都符合才会进行数据插入
-- 插入成功
insert into emp_v_2 value (55, '汤姆', 25);
-- 插入失败
insert into emp_v_2 value (56, '杰瑞', 9);

 栗子2

-- 基于视图2创建视图3
create view emp_v_3 as select id, name, age from emp_v_2 where age >= 20;
-- 往视图3插入数据,此时视图3没有加关键字cascaded不会对视图3进行数据校验,检查完视图3后会对视图2进行校验,
-- 视图2加了cascaded会进行数据校验,并对所依赖的视图进行校验
-- 此时虽然不满足视图3,但该视图没有关键字,不会进行age >= 20 校验,此时同满足视图2,1,故不会报错,会在满足条件的视图中插入数据
insert into emp_v_3 value (92, '凯迪', 15);

local

-- local注意:再插入数据到视图时如果该视图加了local会对当前视图的条件进行数据校验,如果所依赖的视图没有添加local或者cascaded关键字则不会进行数据校验

local和cascaded区别 

-- local和cascaded相同点:
-- local、cascaded都会对当前添加了该关键字的视图进行数据校验
-- local和cascaded区别:
-- cascaded不论基于的视图是否含有cascaded、local关键字都会对所依赖的视图的条件进行数据校验
-- local所基于的视图如果没有cascaded、local关键字则不会对所依赖的视图的条件进行数据校验

 4. 更新

视图是基于表或者视图创建而来,当所依赖的表不存在要更新的内容自然更新失败 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot3】整合Druid数据源和Mybatis 项目打包和运行

文章目录 一、整合Druid数据源二、整合Mybatis2.1 MyBatis整合步骤2.1 Mybatis整合实践2.1 声明式事务整合配置2.1 AOP整合配置 三、项目打包和运行命令启动和参数说明 总结web 与 springboot 打包区别JDK8的编译环境 执行17高版本jar 一、整合Druid数据源 创建模块 &#xff1…

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下 1. ForeverStrongCheng/OpenCV-tutorials2. Fork -> ForeverStrongCheng/R2CNN_Faster-RCNN_TensorflowReferences 访问仓库页面&#xff0c;点击 Fork 按钮创建自己的仓库。 Fork 是将 GitHub 的某个特定仓库复制到自己…

【Python编程基础】第一节.Python基本语法(上)

文章目录 前言⼀、Python介绍二、Python环境配置三、Pycharm 书写代码四、Python基本语法 4.1 print 函数的简单使用 4.2 注释 4.3 Python 代码中三种波浪线和 PEP8 4.4 在 cmd 终端中运⾏ Python 代码 4.5 变量 4.6 数据类型 4.7 类型转换…

【docker】docker的常用命令

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 常规命令 docker version #查看docker 版本信息docker info #显示docker 的系统信息&#xff0c;包括镜像和容器数量docker --help #查看所有的命…

花钱买不到系列-linux信号[1]卷

我们下面要学的这个&#xff0c;信号&#xff0c;它呢就挺好玩的&#xff0c;虽然它也有一点点难&#xff0c;那么尤其是这里要进入第二阶段的进程地质空间的分享。 第一阶段&#xff0c;是当时在讲进程概念时&#xff0c;学了个进程地址空间&#xff0c;当时知道了地址空间页表…

基于大模型和向量数据库的 RAG 示例

1 RAG 介绍 RAG 是一种先进的自然语言处理方法&#xff0c;它结合了信息检索和文本生成技术&#xff0c;用于提高问答系统、聊天机器人等应用的性能。 2 RAG 的工作流程 文档加载&#xff08;Document Loading&#xff09; 从各种来源加载大量文档数据。这些文档…

操作系统——cpu、内存、缓存介绍

一、内存是什么 内存就是系统资源的代名词&#xff0c;它是其他硬件设备与 CPU 沟通的桥梁&#xff0c; 计算机中的所有程序都在内存中运行。其作用是暂时存放CPU的运算数据&#xff0c;以及与硬盘交换的数据。也是相当于CPU与硬盘沟通的桥梁。只要计算机在运行&#xff0c;CP…

应对恶意IP攻击的有效方法

在当今数字化时代&#xff0c;网络攻击已经成为了互联网安全的重大挑战之一。恶意IP攻击是网络安全领域中的一种常见威胁&#xff0c;它可能导致数据泄露、服务中断、系统瘫痪等严重后果。因此&#xff0c;有效地应对恶意IP攻击至关重要。IP数据云将深入探讨如何应对恶意IP攻击…

android中单例模式为什么会引起内存泄漏?

单例模式使用不恰当会造成内存泄漏。因为单例的静态特性使得单例的生命周期和应用的生命周期一样长, 如果一个对象已经不需要使用了,但是单例对象还持有该对象的引用,那么这个对象就不能被正常回收,因此会导致内存泄漏。 举个例子: ①新建一个工程。 ②配置好LeakCanary检…

SpringBoot Servlet容器启动解析

介绍 容器架构 容器处理请求 容器启动全局流程解析 启动前准备 WebServer创建入口 WebServer创建 Servlet启动 Web容器工厂类加载解析 Web容器个性化配置 属性注入 工厂类初始化 BeanPostProcessor方法实现 定制化流程 面试题 请描述下Servlet容器启动流程&#xff1f;介绍下…

下载程序到嵌入式开发板教程

一、设置共享目录 ubuntu与Window共同拥有的目录。 第一步&#xff1a;在Windows下创建一个文件夹share 第二部&#xff1a;点击虚拟机--->设置--->选项--->共享文件夹 进入共享目录的命令&#xff1a;cd/mnt/hgfs/share 二、C语言编译器 使用Linux平台下的gcc编…

发一下接口自动化测试框架(python3+requests+excel)

Git&#xff1a; https://github.com/lilinyu861/Interface-Test 环境配置&#xff1a; 开发工具&#xff1a;pycharm2018Excel 开发框架&#xff1a;python3requestsexcel 接口自动化测试框架介绍&#xff1a; 此接口测试框架&#xff0c;首先由用户设计原始的测试用例并为…

爬虫 某物流

目标地址 url "https://api.jdl.com/aging/feeInquiryNewByJDL" 加密参数 ciphertext和data 搜关键字ciphertext跟着栈走 很明显的DES加密 window globalconst e require(jsencrypt); // const e require(JSEncrypt) // e r(775).JSEncrypt // const t requi…

学点Java打小工_Day4_数组_冒泡排序

1 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤 数据结构&#xff1a;将数据按照某种特定的结构来存储 设计良好的数据结构会导致良好的算法。 ArrayList、LinkedList 数组是最简单的数据结构。 数组&#xff1a;存放同一种类型数据的集合&#xff0c;在…

三.使用java的API文档

在Java中&#xff0c;API是指“应用程序接口”&#xff08;Application Programming Interface&#xff09;。Java API是Java编程语言中提供的类和接口的集合&#xff0c;用于开发各种类型的应用程序。类比C的STL&#xff08;标准模板库&#xff09;。 通俗理解就当做些封装好…

Leet code 179 最大数

解题思路 贪心算法 贪心算法就是走一步看一步 每一步都取当前位置的最优解 这题我们该如何贪呢&#xff1f; 我们先把int数组转换为string数组 以示例2为例 3 30 34 5 9 排序哪个在前哪个在后&#xff1f; 3 30 &#xff08;330&#xff09;> 30 3 &#xff08;30…

从阿里云降价,看中国云计算创新之变

继“疯狂星期四”历史级大降价后&#xff0c;阿里云“AI驱动、公共云优先”的战略布局再落一子。 近日&#xff0c;阿里云与菜鸟、高德地图、中远海运、东航物流、圆通速递、申通快递、中通快递、德邦快递、G7易流、地上铁、浙江大学智能交通研究所等共同发起成立“物流智能联…

2024-03-14 Android app runOnUiThread 函数,它的作用是让一个Runnable对象在主线程(UI线程)上运行。

一、看到别人app有这么一个runOnUiThread 函数用法。 二、在Android中&#xff0c;runOnUiThread 是一个非常重要的方法&#xff0c;它的作用是让一个Runnable对象在主线程&#xff08;UI线程&#xff09;上运行。在Android中&#xff0c;主线程是负责更新UI的线程&#xff0c;…

【零基础学习06】嵌入式linux驱动中PWM驱动基本实现

大家好,今天给大家分享一下,如何利用PWM外设来实现LCD背光调节,本次实验使用Linux系统中PWM控制器以及PWM子系统来控制对应的功能。 第一:设备树下PWM控制节点 PWM对应的节点信息如下: pwm3: pwm@02088000 {compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm…

分享30秒就能制作3D翻页的电子画册工具

​想象一下&#xff0c;你手中的照片或设计稿&#xff0c;在几秒钟内变得栩栩如生&#xff0c;仿佛每一页都在你眼前真实翻动着。这不仅是一种视觉享受&#xff0c;更是一种全新的互动体验。 那要怎么实战操作呢&#xff1f;按照我说的去做就很SO EASY 啦 1.首先点击FLBOOK在…