关系数据库标准语言SQL视图模块

article/2025/9/26 11:59:34

目录

一. 视图的特点

二. 基于视图的操作

2.1 建立视图

1)行列子集视图举例:

2)基于多个基表的视图: 

3)基于视图的视图:

4)带表达式的视图: 

5)建立分组视图:

2.2 删除视图 

2.3 查询视图

2.4 更新视图 

1)更新视图的限制:

2)DB2对视图更新的限制:

三. 视图的作用 

3.1 视图能够简化用户的操作

3.2 视图使用户能以多种角度看待同一数据

3.3 视图对重构数据库提供了一定程度的逻辑独立性 

3.4 视图能够对机密数据提供安全保护 

四. 数据库专栏 


一. 视图的特点

  • 虚表,是从一个或几个基本表(或视图)导出的表;
  • 只存放视图的定义,不会出现数据冗余;
  • 基表中的数据发生变化,从视图中查询出的数据也随之改变

二. 基于视图的操作

  • 定义;
  • 查询;
  • 删除;
  • 受限更新;
  • 定义基于该视图的新视图

2.1 建立视图

语句格式:

CREATE VIEW<视图名> (<列名> ,<列名>…)AS<子查询>WITH CHECK OPTION;
  • 行列子集视图:从单个基本表导出,只是去掉了基本表的某些行和某些列,保留了码;
  • WITH CHECK OPTION:透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件 (即子查询中的条件表达式);

1)行列子集视图举例:

CREATE VIEW IS_StudentAS SELECT Sno,Sname,SageFROM    StudentWHERE  Sdept= 'IS';

2)基于多个基表的视图: 

CREATE VIEW IS_S1(Sno,Sname,Grade)AS SELECT Student.Sno,Sname,GradeFROM  Student,SCWHERE  Sdept= 'IS' ANDStudent.Sno=SC.Sno ANDSC.Cno= '1';

3)基于视图的视图:

CREATE VIEW IS_S2ASSELECT Sno,Sname,GradeFROM  IS_S1WHERE  Grade>=90;

4)带表达式的视图: 

CREATE  VIEW BT_S(Sno,Sname,Sbirth)AS SELECT Sno,Sname,2006-SageFROM  Student

        设置一些派生属性列, 也称为虚拟列--Sbirth 带表达式的视图必须明确定义组成视图的各个属性列名;

5)建立分组视图:

CREAT  VIEW S_G(Sno,Gavg)AS  SELECT Sno,AVG(Grade)FROM  SCGROUP BY Sno;

2.2 删除视图 

语句格式:

DROP  VIEW  <视图名>; 
  • 该语句从数据字典中删除指定的视图定义;
  • 由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除;
  • 删除基表时,由该基表导出的所有视图定义都必须显式删除;

2.3 查询视图

  • 从用户角度:查询视图与查询基本表相同;
  • DBMS实现视图查询的方法:实体化视图(View Materialization)
  1. 有效性检查:检查所查询的视图是否存在;
  2. 执行视图定义,将视图临时实体化,生成临时表;
  3. 查询视图转换为查询临时表;
  4. 查询完毕删除被实体化的视图(临时表)

在上面创建的IS_Student视图中找出年龄小于20岁的学生:

SELECT   Sno,Sage
FROM      IS_Student
WHERE   Sage<20;

2.4 更新视图 

  • 用户角度:更新视图与更新基本表相同;
  • DBMS实现视图更新的方法:
  1. 视图实体化法(View Materialization)
  2. 视图消解法(View Resolution)
  • 指定WITH CHECK OPTION子句后:
  1. DBMS在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新

1)更新视图的限制:

        一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新(对两类方法均如此)

  • 允许对行列子集视图进行更新;
  • 对其他类型视图的更新不同系统有不同限制;

2)DB2对视图更新的限制:

  • 若视图是由两个以上基本表导出的,则此视图不允许更新。
  • 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。
  • 若视图的字段来自集函数,则此视图不允许更新。
  • 若视图定义中含有GROUP BY子句,则此视图不允许更新。
  • 若视图定义中含有DISTINCT短语,则此视图不允许更新。
  • 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。
  • 一个不允许更新的视图上定义的视图也不允许更新。

三. 视图的作用 

3.1 视图能够简化用户的操作

        当视图中数据不是直接来自基本表时,定义视图能够简化用户的操作:

  • 基于多张表连接形成的视图;
  • 基于复杂嵌套查询的视图;
  • 含导出属性的视图;

3.2 视图使用户能以多种角度看待同一数据

        视图机制能使不同用户以不同方式看待同一数据,适应数据库共享的需要;

3.3 视图对重构数据库提供了一定程度的逻辑独立性 

  • 物理独立性与逻辑独立性的概念;
  • 视图在一定程度上保证了数据的逻辑独立性;
  • 视图只能在一定程度上提供数据的逻辑独立性:
  1. 由于对视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因基本表结构的改变而改变。

3.4 视图能够对机密数据提供安全保护 

  • 对不同用户定义不同视图,使每个用户只能看到他有权看到的数据;
  • 通过WITH CHECK OPTION对关键数据定义操作时间限制;

四. 数据库专栏 

https://blog.csdn.net/weixin_53919192/category_11813282.html?spm=1001.2014.3001.5482https://blog.csdn.net/weixin_53919192/category_11813282.html?spm=1001.2014.3001.5482


http://chatgpt.dhexx.cn/article/rH30SuJ1.shtml

相关文章

Oracle的视图,索引,约束,事务,数据库范式

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎分享给我&#xff0c;我会取其精华去其糟粕 &#x1f345;java自学的学习…

(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第一节:SQL概述

pdf下载&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】&#xff08;考研复试&#xff09;数据库系统概论第五版&#xff08;王珊&#xff09;专栏学习笔记目录导航及课后习题答案详解 文章目录 一&#xff1a;SQL的产生与发展二&#xff1a;SQL特点&#xff08;1&a…

第三章 关系数据库标准语言 SQL

第三章 关系数据库标准语言 SQL 文章目录 第三章 关系数据库标准语言 SQL3.1 SQL 概述3.1.1 SQL 的特点 3.2 学生-课程数据库3.3 数据定义3.3.2 基本表的创建、删除与修改1. 基本表的创建2. 数据类型3. 插入数据4. 修改数据&#xff08;1&#xff09; 修改某一个元组的值(2) 修…

(九)密度聚类、层次聚类和轮廓系数[机器学习代码实现]

机器学习课程总结&#xff0c;本系列文章以代码和注释为主。 理论部分搬至博客上比较耗费时间&#xff0c;所以缺少理论部分。但是也欢迎大家一起探讨学习。 如果需要理论部分的讲义&#xff0c;可私信&#xff08;个人觉的讲的很好很全&#xff09;。 文章目录 问题需…

Oracle 数据库中的 索引、约束、视图

约束&#xff1a;就是指对插入数据的各种限制&#xff0c;约束既可在建表的时候直接声明&#xff0c;也可以为已经建好的表添加约束。 视图&#xff1a;就是一个封装了各种复杂查询的语句&#xff0c;就称之为视图。 索引&#xff1a;是一种用于提升查询效率的数据库对象。通过…

数据库原理与应用(SQL)——2、关系数据库(E-R图、关系模式、关系运算、关系代数)

目录 关系 关系运算 元组、域关系演算表达式 题目 关系代数表达式——例 元组演算表达式——例 域演算表达式——例 关系数据库是以二维表形式组织数据&#xff0c;应用数学方法处理数据库组织的方法。目前关系数据库系统在数据管理中已占据了主导地位。 关系 关系&…

Oracle约束 SQL语句分类 集合运算 索引 相关知识点讲解

ORACLE 约束&#xff1a; 数据库用来确保数据满足业务的手段&#xff0c;强制数据符合某些特定条件或者规范才可以插入 主键约束&#xff1a; primary key PK唯一约束&#xff1a;unique非空约束&#xff1a;not null外键约束&#xff1a;foreign key FK检查约束&#xff1a;…

SQL对数据进行统计、常用集合函数

学生表&#xff1a; 1、统计记录个数 1&#xff09; count&#xff08;【all】*&#xff09;【as 列别名】 返回表中的记录数 执行&#xff1a;SELECT COUNT (* ) FROM 学生表 结果为&#xff1a; 执行&#xff1a;SELECT COUNT (* ) as 学生总人数 FROM 学生表…

关系数据库SQL数据查询

关系数据库SQL数据查询 数据查询 一、单表查询 1.查询仅涉及一个表&#xff0c;选择表中的若干列 [例1] 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student; [例2] 查询全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;查询全部列 选出所有属…

样本轮廓系数(原理、sklearn.metrics.silhouette_score、silhouette_samples参数介绍)

一、轮廓系数含义&#xff1a; 轮廓系数&#xff08;Silhouette Coefficient&#xff09;&#xff0c;是聚类效果好坏的一种评价方式。 最佳值为1&#xff0c;最差值为-1。接近0的值表示重叠的群集。负值通常表示样本已分配给错误的聚类&#xff0c;因为不同的聚类更为相…

java上位机开发(开篇)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前对于java语言&#xff0c;很多人都认为太简单。其实这是不对的&#xff0c;因为某种意义上来说所&#xff0c;java语言就像学习日语一样&#…

Qt之上位机开发实战(一)

一、Qt三大金刚 1、qt下的串口编程 2、qt下的网络编程 3、qt下的GPIO 本章节先介绍一下qt下的串口编程&#xff0c;首先我们新建一个Widget项目 其中接受框使用Plain Text Edit&#xff08;设置只读&#xff09;&#xff0c;串口号等按钮使用Combo Box&#xff0c;发送框使…

C# | 上位机开发新手指南(二)上位机通信

上位机开发新手指南&#xff08;二&#xff09;上位机通信 文章目录 上位机开发新手指南&#xff08;二&#xff09;上位机通信前言串口通信应用场景与控制器通信与传感器通信与仪器仪表通信与智能家居设备通信 常见协议ModbusCAN&#xff08;Controller Area Network&#xff…

C# 西门子PLC上位机开发环境搭建

一、安装软件 1. TIA_Portal_STEP7 15 博途&#xff0c;西门子的自动化开发软件 2. SIMATIC_S7PLCSIM_V15_1 西门子的仿真软件 3. NetToPLCsim C#程序是不能和仿真通信的&#xff0c;只有利用此软件&#xff0c;C#程序才能连接到仿真 二、配置软件 1. 博途 点击 创建新…

java上位机开发(网络编程)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 所谓的网络编程&#xff0c;一般就是指UDP、TCP编程。传统的方法就是用api或者sdk直接编程&#xff0c;这种方法对于简单的协议是可以的。但是对于…

上位机开发(详细设计)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 所谓软件详细设计,它的上面对应的是架构设计,下面对应的是程序开发。架构设计有可能涉及多个软件,比如既可能涉及上位机这端,也可能涉及到mcu这端。详细设计的话,一般要落实到…

android ble 上位机,BLE的Android上位机开发(下)

原标题&#xff1a;BLE的Android上位机开发(下) ELLO! 大家好&#xff01;马上就更新下篇了呢~哈哈&#xff01;(上篇的地址&#xff1a;BLE的Android上位机开发(上))废话不多说了&#xff0c;先上主角吧&#xff01;代码如下&#xff01; [Java] 纯文本查看复制代码 ? 01 02 …

java上位机开发(java基础)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 java基础就是把java环境安装好&#xff0c;把基础程序构建起来。至少说让开发的同学来说有一点信心。从这一点来说&#xff0c;就算编写一个“Hell…

上位机开发的意义

上位机开发的意义 常见的上位机定义为一台可以发出特定操控命令的计算机&#xff0c; 通过操作预先设定好的命令&#xff0c;将命令传递给下位机&#xff0c;通过下位机来控制设备完成各项操作。此定义着重于强调控制指令的发送&#xff0c;实际上除了发送控制命令&#xff0c…

Qt之上位机开发实战(三)

UDP编程 udp相对于tcp来说相对简单&#xff0c;udp不分客户端和服务器&#xff0c;只需要使用一个QUdpSocket类&#xff0c;首先完成布局 Pro文件下加QT core gui network&#xff0c;.h文件下加#include <QUdpSocket> .h文件public下创建对象 QUdpSocket *udpSocket;…