数据库第八次 集合查询,数据更新,视图

本文详细介绍了SQL中的集合查询,包括并、交、差操作,并通过实例演示了如何使用。接着讨论了数据的插入、修改和删除,以及如何处理空值。此外,重点阐述了视图的定义、使用,包括创建、更新和删除视图,以及视图在数据管理中的作用。
摘要由CSDN通过智能技术生成

前言:孩子有幸在更新系统之后尝到了SQL Server突然崩掉的滋味😵,折腾了几天🚑试了N多种方法最后,在烁老板的帮助下选择了在虚拟机上重装💔💔💔


1.集合查询

集合查询操作主要包含并操作(UNION),交操作(INTERSECT),差操作(EXCEPT)

查询计算机科学与技术系的学生及年龄不大于19岁的学生
在这里插入图片描述
查询选修了课程1或者选修了课程2的学生
在这里插入图片描述
查询计算机科学系的学生与年龄不大于19岁的学生的交集
在这里插入图片描述
查询既选修了课程1又选修了课程2的学生
在这里插入图片描述

这里会有问题,如果将 Sno 换成 * ,会返回空表

在这里插入图片描述

原因在于,使用select *
进行交操作的时候,(Sno,Cno,Grade)会被看做一个整体,在两个表中进行交操作时没有完全相同的整体集合,所以就不会出现任何结果了。

嵌套查询方法

在这里插入图片描述
查询计算机科学系的学生与年龄不大于19岁的学生的差集

在这里插入图片描述

也可以普通查询

SELECT *
FROM Student
WHERE Sdept='CS' AND Sage>19;

1.基于派生表的查询

找出每个学生超过他自己选修课程平均成绩的课程号
在这里插入图片描述
查询所有选修了1号课程的学生姓名
在这里插入图片描述

2.数据更新

1.插入数据

之前的文章中已记录过具体方法,在这就不赘述了

2.插入子查询结果

对每一个系,求学生的平均年龄,并把结果存入数据库

建立新表:
CREATE TABLE Dept_age
	  (Sdept char(15),
		Avg_age smallint);

存入数据:
INSERT 
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM student
GROUP BY Sdept;

3.修改数据

将学生201215121 的年龄改为22岁

UPDATE Student
SET Sage=22
WHERE Sno='201215121';

将所有学生的年龄增加1岁

UPDATE Student
SET Sage=Sage+1;

将计算机科学系全体学生的成绩置零

UPDATE SC
SET Grade =0;
WHERE Sno IN
	(SELECT Sno
	FROM Student
	WHERE Sdept='CS');

4.删除数据

删除学号为201215128的学生记录

DELETE 
FROM Student
WHERE Sno='201215128';

删除所有学生的选课记录。

DELETE 
FROM SC;

删除计算机科学系所有学生的选课记录。

DELETE 
FROM SC
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值