数据库作业第三章(续):集合查询,基于派生表的查询以及 数据更新,空值的处理,视图

本文详细分析了数据库的集合查询,包括UNION、INTERSECT和EXCEPT操作;基于派生表的查询,如找出超平均成绩的课程;数据更新,包括插入、修改和删除;空值处理,如空值产生的原因、判断和运算;以及视图的创建、使用和更新。通过对这些概念的深入理解,可以更好地管理和操作数据库。
摘要由CSDN通过智能技术生成

本次作业内容是对数据库第三章剩余的部分做一个分析和总结,包括查询的剩余部分,数据更新,空值的处理和视图

数据查询

一,集合查询
多个SELECT语句的结果可进行集合操作,主要包括并操作UNION,交操作INTERSECT和差操作EXCEPT
例:查询计算机科学系的学生及年龄不大于19岁的学生

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

在这里插入图片描述

注:使用UNION将多个查询结果合并起来时,系统将会自动去掉重复元组

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

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

在这里插入图片描述

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

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

在这里插入图片描述

也可用WHERE…AND…来实现

1.2基于派生表的查询
子查询也可出现在FROM子句中,这时子查询生成的临时派生表成为主查询的查询对象
例:找出每个学生超过他自己选修课程平均成绩的课程号

SELECT Sno,Cno
FROM SC,(SELECT Sno,AVG(Grade)FROM SC GROUP BY Sno)
         AS AVG_sc(avg_sno,avg_grade)
WHERE SC.Sno=Avg_sc.avg_sno AND SC.Grade>=Avg_sc.avg_grade;

在这里插入图片描述

注:如果子查询中没有聚集函数,派生表可以不指定属性列
例:查询所有选修了1号课程的学生姓名

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

在这里插入图片描述

数据更新

一 插入数据
插入语句INSERT通常有两种形式,一种是插入一个元组,另一种是插入查询结果
1插入元组
格式
INSERT
INTO<表名>
VALUES(<常量>…);
例: 将一个新学生元组(学号201215128,姓名:陈忆,性别:男,所在系:IS,18)

INSERT 
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值