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 语句。
- 定义不能引用临时表,也不能创建临时视图。
相关文章:
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 =…...
在排序数组中查找元素的一个位置和最后一个位置-力扣
第一此次想到的解法是首先使用二分查找在排序数组中查找到一个指定元素,随后对该元素左右进行遍历,找到起始位置和结束位置,代码如下: class Solution { public:vector<int> searchRange(vector<int>& nums, int…...
系统分析师-案例分析-数据库
系统分析师-案例分析-数据库 更多软考资料 https://ruankao.blog.csdn.net/ 文章目录 系统分析师-案例分析-数据库数据库考察知识点规范化函数依赖范式1NF2NF3NF 规范化问题不规范化反规范化设计反规范化设计同步问题 并发控制性能优化完整性约束视图安全分布式数据库特点优点…...
【RabbitMQ】使用SpringAMQP的消息队列(Hello Word)和工作队列(Work Queue)
SpringAMQP SpringAMQP中文文档 Hello Word **案例1:**利用SpringAMQP实现HelloWord中的集成消息队列功能 项目结构,如图: 1.引入AMQP依赖(父工程中) <!--AMQP依赖,包含RabbitMQ--> <dependen…...
项目集成SkyWalking,基于k8s搭建
一、搭建SkyWalking 官方文档(英文):skywalking/docs at master apache/skywalking 中文可以使用:GitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache…...
mysql-差异备份流程
4.差异备份流程 差异备份流程(重要) 第一次完整备份 innobackupex /xtrabackup innobackupex --userroot --password123456 /xtrabackup2024-05-23_20-25-05 第一次完整备份 2024-05-23_20-40-55 第二次差异备份 2024-05-23_20-47-37 第三次差异备份再往数据库里面…...
基于动态规划算法的DNA序列比对函数,给出两条序列(v和w)的打分矩阵
一.什么是动态规划算法 1.1总体思想 动态规划算法与分治法类似,基本思想也是将待求解的问题分成若干个子问题 经过分解得到的子问题往往不是互相独立的,有些子问题被重复计算多次 如果能够保存已解决的子问题答案,在需要时再找出来已求得…...
Tailwind CSS快速入门
文章目录 初识安装Tailwindcss试用安装快速书写技巧扩展好处Todo 初识 只需书写 HTML 代码,无需书写 CSS,即可快速构建美观的网站 Tailwind CSS 是一个功能类优先的 CSS 框架,它通过提供大量的原子类(utility classes)…...
Postman使用技巧
Postman是一款广泛使用的API开发和测试工具,专为简化Web服务API的开发、测试、文档编制和协作过程而设计。它支持各种HTTP请求方法,包括GET、POST、PUT、DELETE等,允许用户轻松地构建和发送请求,以及检查响应。 本文介绍几个提升效…...
sqli-labs靶场
less---11 1.求闭合字符 输入1报错说明存在注入点 存在注入点 2.查库名 使用报错注入查库名 admin” and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)y)# //floor函数报错 3.查表名 admin and upd…...
基于springboot的大创管理系统
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大创管理系统的开发全过程。通过分析大创管理系统管理的不足,创建了一个计算机管理大创管理系统的方案。文章介绍了大创管理系统的系统分析部分&…...
常用torch.nn
目录 一、torch.nn和torch.nn.functional二、nn.Linear三、nn.Embedding四、nn.Identity五、Pytorch非线性激活函数六、nn.Conv2d七、nn.Sequential八、nn.ModuleList九、torch.outer torch.cat 一、torch.nn和torch.nn.functional Pytorch中torch.nn和torch.nn.functional的区…...
力扣226.翻转二叉树101.对称二叉树
解决二叉树的问题,经常要习惯从递归角度思考 左子树/右子树是否具备某属性、是否属于什么类型(和题目要求的判断当前树是否xxx一样); 对左/右子树进行什么操作(和题目要求的对当前树的操作一样)。 226.翻转…...
word如何按照原本页面审阅文档
1 视图-阅读视图 2 视图,自己看,懒得打字了哈哈...
前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代
前端基础入门三大核心之HTML篇:探索WebAssembly —— 开启网页高性能应用新时代 WebAssembly基础概念工作原理概览WebAssembly实战示例基本使用 安全性与性能优化防范漏洞实践实际工作中的使用技巧结语与讨论 随着Web技术的飞速发展,前端开发者面临越来越…...
NDIS小端口驱动(四)
NDIS中断相关 1. 注册和取消注册中断: 微型端口驱动程序调用 NdisMRegisterInterruptEx 来注册中断。 驱动程序分配并初始化 NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS 结构,以指定中断特征和函数入口点,驱动程序将结构传递给 NdisMRegister…...
用户态网络缓冲区设计
基于数组实现的环形缓冲区: 优点 使用固定大小的连续空间做用户态缓冲区,利用了内存访问的局部性,可以提高缓存命中率,提高程序性能,在处理大量数据时,缓存的利用率对性能有着很大的影响 正是基于性能的…...
Linux运维工程师基础面试题整理(三)
Linux运维工程师基础面试题整理(三) 1. 文件inode号有什么用?2. 文件的权限怎么设置与管理?3. 如何SSH免密配置?4. 如何快速部署一个web服务?5. 如何更新Linux系统内核?6. centos中如何配置本地yum源?7.Linux 防火墙如何简单配置?8. 有哪些工具可以批量管理Linux服务器…...
基于单片机与传感器技术的汽车起动线路设计
摘 要:在以发动机为动力源的汽车中,起动系统承担起使发动机由非工作状态进入工作状态的重要作用,属于发动机的附属系统。在传统汽车起动系统的基础上提出将单片机与传感器技术运用到起动控制线路中,通过传感器采集发动机工作状态信…...
C#如何通过反射获取外部dll的函数
在C#中,你可以使用反射(Reflection)来加载外部的DLL(动态链接库)并获取其中的函数(在C#中通常称为方法)。但是,请注意,反射主要用于访问类型信息,并且对于非托…...
Wren AI:数据民主化的技术赋能者
Wren AI:数据民主化的技术赋能者 【免费下载链接】WrenAI Turn any AI Agents into world-class data analysts through the open context layer that gives AI agents grounded, governed memory, context, SQL across 20 data sources, that helps you build GenB…...
WarcraftHelper:魔兽争霸III终极增强插件 - 简单三步让经典游戏焕发新生
WarcraftHelper:魔兽争霸III终极增强插件 - 简单三步让经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争…...
QKeyMapper:重新定义Windows输入控制的终极解决方案
QKeyMapper:重新定义Windows输入控制的终极解决方案 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠,手…...
Python爬虫实战:构建博物馆藏品数字档案(列表到详情深度采集)
㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐⭐ (进阶) 🉐福利: 一次订阅后,专栏内的所有文…...
Unity IL2CPP运行时调试:Frida-il2cpp-bridge实战指南
1. 这不是“教你怎么黑游戏”,而是Unity开发者该懂的底层透视镜你有没有在调试一个Unity项目时,突然发现某个C#方法的行为和预期完全不符,但断点打进去却卡在IL2CPP生成的汇编里,连变量名都看不到了?或者你在做性能优化…...
JMeter分布式压测实战:突破单机瓶颈的原理与落地
1. 为什么单台JMeter跑不动你的压测任务?你是不是也遇到过这样的场景:在本地用JMeter跑一个5000并发的HTTP请求,CPU直接飙到98%,内存告急,响应时间曲线像心电图一样乱跳,结果还没导出,JMeter自己…...
嵌入式开发通用工具包设计:提升效率与代码质量的核心架构
1. 项目概述:为什么嵌入式开发需要一个“工具箱”?干了十几年嵌入式,从8位单片机玩到多核ARM Cortex-A,我最大的感受就是:重复造轮子和调试效率低下是拖慢项目进度的两大元凶。每次新项目启动,都得重新搭建…...
Arty S7 FPGA开发板实战指南:从硬件解析到项目开发
1. 项目概述:为什么是Arty S7?如果你是一名嵌入式开发者、数字电路设计爱好者,或者正在寻找一块能兼顾学习、原型验证和低成本部署的FPGA开发板,那么Digilent的Arty S7系列很可能已经进入了你的视野。我最初接触这块板子ÿ…...
电源大电流走线的过孔怎么打?这2个细节决定板子扛不扛得住
电源大电流走线的过孔怎么打?这2个细节决定板子扛不扛得住做硬件工程师这些年,见过太多电源板炸的、烧的、虚焊的。说实话,一大半问题出在过孔上——不是过孔打少了,是打得不对。上周五快下班了,测试的兄弟急吼吼跑过来…...
AI应用可观测性工程:像监控微服务一样监控你的LLM应用
LLM 应用进入生产后,“为什么这次回答质量差?”、"哪次调用导致成本飙升?"这些问题如果没有完整的可观测性体系,根本无法回答。本文构建 LLM 应用的完整监控体系。LLM 应用监控的独特挑战传统微服务监控关注的是&#x…...
