数据库学习8 — 集合查询、数据更新、视图

本文介绍了SQL中的集合查询,包括UNION、INTERSECT和EXCEPT操作,并展示了如何处理空值。此外,详细讲解了数据的插入、修改和删除,以及如何使用基于派生表的查询。最后,探讨了视图的概念,包括创建、查询和更新视图的操作,强调了视图在数据操作中的作用。
摘要由CSDN通过智能技术生成

章节3.4.4 — 3.7.3

一、集合查询

SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。需要注意:各结果的列数、对应项的数据类型必须相同。主要有以下操作:

并操作 UNION

交操作 INTERSECT

差操作 EXCEPT

例题1:查询计算机科学系的学生及年龄不大于19岁的学生。

SELECT *
FROM Student
WHERE Sdept='CS'
UNION
SELECT *
FROM Student
WHERE Sage<=19;
//使用 UNION时,系统会自动去掉重复元组;可用 UNION ALL操作符保留重复元组。

例题2:查询选修了课程1或者选修了课程2的学生。

SELECT *
FROM Student
WHERE Sdept='CS'
INTERSECT
SELECT *
FROM Student
WHERE Sage<=19;

例题3:查询选修了课程1或者选修了课程2的学生。

SELECT Sno
FROM SC
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM SC
WHERE Cno='2';

例题4:查询计算机科学系的学生 与 年龄不大于19岁的学生的交集。

SELECT *
FROM Student
WHERE Sdept='CS'
EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;

在这里插入图片描述

二、基于派生表的查询

子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这是子查询生成的临时派生表成为主查询的查询对象。如果子查询中没有聚集函数,派生表可以不指定属性列,子查询SELECT子句后面的列名为其默认属性。

例题1:查询所有选修了1号课程的学生姓名。

SELECT Sname
FROM Student,(SELECT Sno FROM SC WHERE Cno='1')AS SC1
WHERE Student.Sno=SC1.Sno;

通过FROM子句生成派生表时,AS关键字可以省略,但必须为一个派生关系指定一个别名。

三、数据更新

1.插入数据

1)插入元组

INSERT into SC values ('123456789',‘1’,80);
//按照表的构成填入数据,需要注意要保持数据类型不变

INSERT into SC(Cno,Sno) values ('1','123456789');
//按照指定顺序填入,未指定的默认为 NULL

2)插入子查询结果

语句格式:
INSERT
[INTO] <表名> [<属性列1&g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想秃头少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值