当前位置: 首页 > article >正文

数据库原理及应用(六)——视图和子查询

一、什么是视图

视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。

视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍),所以操作视图时会根据创建视图的SELECT语句生成一张虚拟表,然后在这张虚拟表上做SQL操作。

二、视图与表有什么区别、

  1. 视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表,你可以理解成Windows的快捷方式。而表是物理存在的,你可以理解成计算机中的文件。

  2. 表是内模式,视图是外模式。

  3. 视图可以像基本表一样被查询、删除,也可以在一个视图上再定义视图,但是对视图的增删改有一定的限制。

三、视图的定义和删除

1. 定义视图

SQL语言用CREATE VIEW建立视图:

CREATE VIEW<视图名>(<列名1>,<列名2>,...)
AS <SELECT语句>
[WITH CHECK OPTION];

例: 建立计算机系的学生的视图

CREATE VIEW CS_VIEW
AS
	SELECT *
	FROM S
	WHERE sdept='CS';

image.png

2.删除视图

SQL语言用DROP VIEW删除视图:
DROP VIEW <视图名>;

视图删除后,基于该视图建立的视图仍在数据字典中,不过无法使用,需要一一删除它们。

例2:删除CS_VIEW视图。

DROP VIEW CS_VIEW

执行结果:

DROP VIEW CS_VIEW
> OK
> 时间: 0.016s

四、更新视图

更新视图是指通过INSERT、DELETE、UPDATE来更新.

!!!

由于视图实际上是不储存数据的虚表,因此对视图的更新其实就是对基本表的更新。


例3:将计算机系的学生的视图CS_VIEW中性别为男的同学年龄加1

UPDATE CS_VIEW
SET sage = sage + 1
WHERE ssex = '男';

修改前:
image.png
修改后:
image.png

五、子查询

1.什么是子查询

子查询就是将用来定义视图的 SELECT 语句直接用于 FROM 子句当中。

2.嵌套子查询

例4 查询年龄大于19岁的学生信息:

SELECT
	* 
FROM
	( SELECT * FROM s WHERE sage > 19 ) AS S5

image.png

虽然嵌套子查询可以查询出结果,但是随着子查询嵌套的层数的叠加,SQL语句不仅会难以理解而且执行效率也会很差,所以要尽量避免这样的使用。

3.标量子查询

标量就是单一的意思,那么标量子查询也就是单一的子查询,那什么叫做单一的子查询呢?

所谓单一就是要求我们执行的SQL语句只能返回一个值,也就是要返回表中具体的某一行的某一列。

例:查询学生的学号、姓名、年龄、和平均年龄:

SELECT
	sno,
	sname,
	sage,
	( SELECT AVG ( sage ) FROM s ) AS AVG_AGE 
FROM
	S

image.png


http://www.kler.cn/a/5615.html

相关文章:

  • 基于YOLOv8的高空无人机小目标检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型
  • OpenCV相机标定与3D重建(48)对三台相机进行极线校正(rectification)函数rectify3Collinear()的使用
  • 利用obs studio制作(人像+屏幕)录制影像
  • 计算机网络之---公钥基础设施(PKI)
  • 分享我通过 API 赚钱的思路
  • 【安卓开发】显示手机信息的APP
  • python get方法及常用的代码
  • 37了解高可用技术方案,如冗余、容灾
  • 【Deepstream学习】 TX1模块中C++ Sample application 2详细测试讲解
  • IP协议以及相关技术
  • 【致敬嵌入式攻城狮第2期活动预热征文】 [深入理解SSD 20] 话说固态硬盘里的HMB
  • spark通过connector的方式读写starrocks
  • Java连接SqlServer错误
  • 每日学术速递3.27
  • 学习node之——MySQL的安装和基本使用
  • 重构类关系-Extract Interface提炼接口八
  • 【华为】组播IGMP基本原理(5月份将再次更新,这是以前的笔记 还存在些许问题)
  • 异想天开!没有CPU的操作系统
  • c#第二次作业
  • 【Linux内存管理概述】
  • uni-app--》uni-app的生命周期讲解
  • 反向传播自动求微分【Pytorch】
  • 第06章_索引的数据结构
  • 2010年9月计算机二级JAVA笔试试题及答案