前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库原理及应用(六)——视图和子查询

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

作者头像
Regan Yue
发布2023-03-30 15:41:17
5350
发布2023-03-30 15:41:17
举报
文章被收录于专栏:ReganYue's Blog

一、什么是视图

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

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

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

  1. 视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表,你可以理解成Windows的快捷方式。而表是物理存在的,你可以理解成计算机中的文件。
  2. 表是内模式,视图是外模式。
  3. 视图可以像基本表一样被查询、删除,也可以在一个视图上再定义视图,但是对视图的增删改有一定的限制。

三、视图的定义和删除

1. 定义视图

SQL语言用CREATE VIEW建立视图:

代码语言:javascript
复制
CREATE VIEW<视图名>(<列名1>,<列名2>,...)
AS <SELECT语句>
[WITH CHECK OPTION];

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

代码语言:javascript
复制
CREATE VIEW CS_VIEW
AS
	SELECT *
	FROM S
	WHERE sdept='CS';
image.png
image.png

2.删除视图

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

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

例2:删除CS_VIEW视图。

代码语言:javascript
复制
DROP VIEW CS_VIEW

执行结果:

代码语言:javascript
复制
DROP VIEW CS_VIEW
> OK
> 时间: 0.016s

四、更新视图

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

!!!

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


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

代码语言:javascript
复制
UPDATE CS_VIEW
SET sage = sage + 1
WHERE ssex = '男';

修改前:

image.png
image.png

修改后:

image.png
image.png

五、子查询

1.什么是子查询

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

2.嵌套子查询

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

代码语言:javascript
复制
SELECT
	* 
FROM
	( SELECT * FROM s WHERE sage > 19 ) AS S5
image.png
image.png

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

3.标量子查询

标量就是单一的意思,那么标量子查询也就是单一的子查询,那什么叫做单一的子查询呢? 所谓单一就是要求我们执行的SQL语句只能返回一个值,也就是要返回表中具体的某一行的某一列。

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

代码语言:javascript
复制
SELECT
	sno,
	sname,
	sage,
	( SELECT AVG ( sage ) FROM s ) AS AVG_AGE 
FROM
	S
image.png
image.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是视图
  • 二、视图与表有什么区别、
  • 三、视图的定义和删除
    • 1. 定义视图
      • 2.删除视图
      • 四、更新视图
      • 五、子查询
        • 1.什么是子查询
          • 2.嵌套子查询
            • 3.标量子查询
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档