SQL Views(视图)

article/2025/6/29 19:50:59

目录

Views

Declaring Views

Example: View Definition

Example: Accessing a View

Advantages of Views

Triggers on Views

Interpreting a View Insertion(视图插入操作的解释)

The Trigger


Views

A view is a relation defined in terms of stored tables (called base tables ) and other views.(视图是一种储存表和其他视图之间的一种关系)

Two kinds:

  • Virtual = not stored in the database; just a query for constructing the relation.

  • Materialized = actually constructed and stored.

可以将视图分为两种形式:虚拟视图(并没有真实存在,只是构造关系的查询语句)、物化视图

Declaring Views

Declare by:

CREATE [MATERIALIZED] VIEW
<name> AS <query>;

Default is virtual.(缺省值是虚拟的)

Example: View Definition

CanDrink(drinker, beer) is a view “containing” the drinker-beer pairs such that the drinker frequents at least one bar that serves the beer:

CREATE VIEW CanDrink AS
SELECT drinker, beer
FROM Frequents, Sells
WHERE Frequents.bar = Sells.bar;

Example: Accessing a View

  • Query a view as if it were a base table.(视图的查询和普通的表没有什么区别)
  • Also: a limited ability to modify views if it makes sense as a modification of one underlying base table.(能够有限的修改能力,如果对于视图的操作能够合理的映射到基表)

Example query:

SELECT beer FROM CanDrink
WHERE drinker = ’Sally’;

Advantages of Views

  • Focus the Data for Users(为用户聚焦数据)

    • Focus on important or appropriate data only

    • Limit access to sensitive data(限制访问敏感数据)

  • Mask Database Complexity(屏蔽掉数据库的复杂性)

    • Hide complex database design

    • Simplify complex queries, including distributed queries to heterogeneous data

  • Simplify Management of User Permissions

  • Improve Performance

  • Organize Data for Export to Other Application

Triggers on Views

  • Generally, it is impossible to modify a virtual view, because it doesn’t exist.(通常情况下,修改视图是不可能的,因为视图并不存在)

  • But an INSTEAD OF trigger lets us interpret view modifications in a way that makes sense.(但是可以通过建立触发器,使得对于视图的操作能够映射到对应的基表中)

  • Example:

View Synergy has (drinker, beer, bar) triples such that the bar serves the beer, the drinker frequents the bar and likes the beer.

Interpreting a View Insertion(视图插入操作的解释)

  1. We cannot insert into Synergy --- it is a virtual view.

  2. But we can use an INSTEAD OF trigger to turn a (drinker, beer, bar) triple into three insertions of projected pairs, one for each of Likes, Sells, and Frequents.(可以使用触发器将视图投影成三个数对,对应三张表)

  3. Sells.price will have to be NULL.(要注意的是Sells表中的price一定要置空)

The Trigger

CREATE TRIGGER ViewTrig
INSTEAD OF INSERT ON Synergy
REFERENCING NEW ROW AS n
FOR EACH ROW
BEGIN
INSERT INTO LIKES VALUES(n.drinker, n.beer);
INSERT INTO SELLS(bar, beer) VALUES(n.bar, n.beer);
INSERT INTO FREQUENTS VALUES(n.drinker, n.bar);
END;

http://www.hkcw.cn/article/gGNgIiwxwO.shtml

相关文章

MySQL指令个人笔记

MySQL学习&#xff0c;SQL语言笔记 一、MySQL 1.1 启动、停止 启动 net start mysql83停止 net stop mysql831.2 连接、断开 连接 mysql -h localhost -P 3306 -u root -p断开 exit或者ctrlc 二、DDL 2.1 库管理 2.1.1 直接创建库 使用默认字符集和排序方式&#xf…

【redis实战篇】第七天

摘要&#xff1a; 本文介绍了黑马点评中点赞、关注和推送功能的实现方案。点赞功能采用Redis的ZSET结构存储用户点赞数据&#xff0c;实现点赞状态查询、热门博客排行和点赞用户展示。关注功能通过关系表和Redis集合实现用户关注关系管理&#xff0c;包含共同关注查询。推送功能…

[yolov11改进系列]基于yolov11引入特征融合注意网络FFA-Net的python源码+训练源码

【FFA-Net介绍】 北大和北航联合提出的FFA-net: Feature Fusion Attention Network for Single Image Dehazing图像增强去雾网络&#xff0c;该网络的主要思想是利用特征融合注意力网络&#xff08;Feature Fusion Attention Network&#xff09;直接恢复无雾图像&#xff0c;…

Baklib领跑三强:知识管理高效优选

Baklib技术架构解析 Baklib的技术底座基于全链路数字化管理理念&#xff0c;通过知识中台的三层架构实现企业级知识资产的深度整合。核心层采用分布式存储引擎与多模态数据处理技术&#xff0c;支持文档、音视频、代码等20格式的智能化解析&#xff0c;确保非结构化数据的精准…

零基础学习计算机网络编程----socket实现UDP协议

本章将会详细的介绍如何使用 socket 实现 UDP 协议的传送数据。有了前面基础知识的铺垫。对于本章的理解将会变得简单。将会从基础的 Serve 的初始化&#xff0c;进阶到 Client 的初始化&#xff0c;以及 run。最后实现一个简陋的小型的网络聊天室。 目录 1.UdpSever.h 1.1 构造…

深入了解linux系统—— 进程间通信之管道

前言 本篇博客所涉及到的代码一同步到本人gitee&#xff1a;testfifo 迟来的grown/linux - 码云 - 开源中国 一、进程间通信 什么是进程间通信 在之前的学习中&#xff0c;我们了解到了进程具有独立性&#xff0c;就算是父子进程&#xff0c;在修改数据时也会进行写时拷贝&…

电脑使用VPN后直接关机,再次打开后无法上网的问题

出现这种问题&#xff0c;都是在使用VPN后&#xff0c;以前自己都是通过杀毒软件的网络修复工具进行解决的。 但现在有了一个更简单的方法&#xff1a; 打开设置&#xff0c;找到网络中的代理,然后关闭即可。

【Linux】线程控制

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲Linux——线程控制 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C学习笔记&#xff0c;C语言入门基础&#xf…

CppCon 2014 学习:Hardening Your Code

“Hardening Your Code” 是指增强代码的健壮性、安全性、可维护性和可测试性&#xff0c;确保在各种边界条件、错误场景甚至恶意输入下&#xff0c;代码依然稳定运行&#xff0c;不崩溃、不泄露资源&#xff0c;也不产生未定义行为。 什么是“Hardening Your Code”&#xff…

【js逆向_AES】某专业技术人员继续教育平台登录分析及模拟实践

目标&#xff1a;account&#xff0c;password加密 网址&#xff1a;aHR0cHM6Ly93d3cuZ3N6eGp5cHguY24vd2ViL2luZGV4 请求载荷加密方式 账号加密&#xff1a; 网页调试输出&#xff1a; python代码&#xff1a; from Cryptodome.Cipher import AES import base64 from Crypto…

《信号与系统》--期末总结V1.0

《信号与系统》–期末总结V1.0 学习链接 入门&#xff1a;【拯救期末】期末必备&#xff01;8小时速成信号与系统&#xff01;【拯救期末】期末必备&#xff01;8小时速成信号与系统&#xff01;_哔哩哔哩_bilibili 精通&#xff1a;2022浙江大学信号与系统&#xff08;含配…

可视化大屏通用模板Axure原型设计案例

本文将介绍一款基于Axure设计的可视化大屏通用模板&#xff0c;适用于城市、网络安全、园区、交通、社区、工业、医疗、能源等多个领域。 模板概述 这款Axure可视化大屏通用模板集成了多种数据展示模块和组件&#xff0c;旨在为用户提供一个灵活、可定制的数据展示平台。无论…

AI来敲门:我们该如何与焦虑共舞

最近一份覆盖国内上万职场人的调研报告像一颗深水炸弹&#xff0c;在职场圈激起层层涟漪——85.53%的人担心AI会抢走自己的饭碗&#xff0c;67.57%的人认为这会在五年内发生。更令人意外的是&#xff0c;这些焦虑的职场人中&#xff0c;高达34.13%出现了抑郁症状&#xff0c;这…

单调栈(打卡)

本篇基于b站灵茶山艾府。 下面是灵神上课讲解的题目与课后作业&#xff0c;课后作业还有三道实在写不下去了&#xff0c;下次再写。 739. 每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是…

【C语言入门级教学】冒泡排序和指针数组

文章目录 1.冒泡排序2.⼆级指针3.指针数组4.指针数组模拟⼆维数组 1.冒泡排序 冒泡排序的核⼼思想&#xff1a;两两相邻的元素进⾏⽐较。 //⽅法1 void bubble_sort(int arr[], int sz)//参数接收数组元素个数 { int i 0;for(i0; i-1; i) { int j 0; for(j0; j-1; j) { …

源码解析(三):Stable Diffusion

原文 技术博客 &#x1f600; Stable Diffusion是一种基于扩散模型&#xff08;Diffusion Model&#xff09;的生成式AI技术&#xff0c;通过逐步去噪过程将随机噪声转化为高质量图像。其核心优势在于开源免费、支持本地部署&#xff0c;且能通过文本提示&#xff08;prompt&am…

洛雪音乐+多种音源同步更新,附带安装教程 -【PC端/安卓端】音乐软件

今天&#xff0c;就为大家介绍一款全网免费听歌神器——‌洛雪音乐‌&#xff01; &#x1f3b6; 洛雪音乐&#xff1a;&#xff08;文末获取软件&#xff09; 一、软件亮点 全平台支持‌&#xff1a;无论是Windows系统还是安卓手机&#xff0c;洛雪音乐都能随时伴你左右&am…

【CATIA的二次开发18】根对象Application涉及用户交互相关方法

在CATIA VBA开发中&#xff0c;对根对象Application涉及用户交互相关方法进行详细总结&#xff0c;并且用不同形式展示出来。供大家后续开发全面了解Application对象的方法&#xff0c;以便在开发过程中快速查找和使用&#xff1a; 一、Application常用方法分类 1、基础控制与…

密码学:解析Feistel网络结构及实现代码

概述 Feistel网络是由IBM密码学家Horst Feistel在20世纪70年代提出的对称加密结构&#xff0c;已成为现代分组密码的核心框架。DES、Blowfish、RC5等经典加密算法均基于此结构。其核心思想是将输入明文分组分成左右两半&#xff0c;通过多轮迭代操作实现加密&#xff0c;每轮使…

JavaSE知识总结(集合篇) ~个人笔记以及不断思考~持续更新

目录 集合 List List的各种接口API List的五种遍历方式 List的删除是内部是怎么做的&#xff1f; ArrayList和LinkedList的区别 Vetor和Stack是什么&#xff1f; Set Set的特点 HashSet TreeSet LinkedHashSet Map HashMap LinkedHashMap TreeMap 集合 在Java…