数据库第七周实验——集合查询,空值处理,视图——例题实现

本文介绍了数据库中的集合查询,包括UNION、INTERSECT和EXCEPT操作,以及如何处理空值,特别是空值产生的原因和判断方法。此外,详细讲解了视图的创建、删除、查询和更新,包括基于多个基本表的视图、基于视图的视图、带表达式的视图和分组视图。通过对视图的操作,强调了WITH CHECK OPTION的重要性,以及视图更新的限制和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合查询

并操作UNION,交操作INTERSECT,差操作EXCEPT

注意:参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同

【例3.64 3.65 3.66 3.67 3.68】

--查询计算机科学系的学生及年龄不大于19岁的学生:并
SELECT *
FROM Student
WHERE Sdept='CS'
UNION 
SELECT *
FROM Student
WHERE Sage<=19;

--查询选修了课程1或者选修了课程2的学生:并
SELECT Sno
FROM SC
WHERE Cno='1'
UNION 
SELECT Sno
FROM SC
WHERE Cno='2';

--查询计算机科学系的学生与年龄不大于19岁的学生的交集
SELECT *
FROM Student
WHERE Sdept='CS'
INTERSECT
SELECT *
FROM Student
WHERE Sage<=19;

SELECT *         --与上面等价
FROM Student
WHERE Sdept='CS'AND Sage<=19;

--查询既选修了课程1又选修了课程2的学生:交集
SELECT Sno
FROM SC
WHERE Cno='1'
INTERSECT
SELECT Sno
FROM SC
WHERE Cno='2';

SELECT Sno      --嵌套查询,与上面等价
FROM SC
WHERE Cno='1' AND Sno IN
	(
		SELECT Sno
		FROM SC 
		WHERE Cno='2'
	);

--查询计算机科学系的学生与年龄不大于19岁的学生的差集
SELECT *
FROM Student
WHERE Sdept='CS'
EXCEPT
SELECT *
FROM Student
WHERE Sage<=19;

--即查询计算机科学系中年龄大于19岁的学生,与上面等价
SELECT *       
FROM Student
WHERE Sdept='CS'AND Sage>19;

在这里插入图片描述
在这里插入图片描述

空值的处理

空值就是“不知道”或“不存在”或“无意义”的值。

SQL语言中允许某些元组的某些属性在一定情况下取空值。一般有以下几种情况:
(1)该属性应该有一个,但目前不知道它的具体值。
(2)该属性不应该有值。
(3)由于某种原因不便于填写。

  一.空值的产生

【例3.79 3.80】

--向SC表中插入一个元组,学生号是“201215126”,课程号是“1”,成绩为空
INSERT 
INTO SC 
VALUES('201215126','1',NULL);       --在插入时该学生还没有考试成绩,取空值

INSERT                 --与上面等价
INTO SC(Sno,Cno)
VALUES('201215126','1');           --在插入插入语句中没有赋值的属性,其值为空值

--将Student表中学生号为“201215200”的学生所属的系改为空值
一、实验目的 1、掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言查询语句的理解。 2、熟练掌握数据查询中的分组、统计、计算与集合查询方法。 二、实验环境: Microsoft Windows 2000操作系统,Microsoft SQL Server 2000数据库管理系统标准版或企业版。 三、实验内容、步骤、结果和实验过程中出现的问题: 1>内容: 基于实验一建立的 “图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5快捷键),执行输入区的Transact-SQL语句。 1、集合查询实验 在“图书读者数据库”(Book_Reader_DB)中,用集合查询的方法完成下列查询任务: ① 查询计算机类和机械工业出版社出版的图书; ② 查询清华大学出版社出版的书中与机械工业出版社出版的所有不相同的图书号与书名; ③ 查询清华大学出版社出版的书与环境类图书的交集; ④ 查询借阅过清华大学出版社出版的“数据结构” 图书和西安电子工业出版社出版的“操作系统”图书的读者号的并集; 2、统计查询实验 在“图书读者数据库”(Book_Reader_DB)中,用分组、统计与计算的方法完成下列查询任务: ① 查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍; ② 求机械工业出版社出版的各类图书的平均定价,用Group by来实现; ③ 列出计算机类图书的书号、名称及价格,最后求出册数和总价格; ④ 列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格; ⑤ 查询订购图书最多的出版社及订购图书的数量; ⑥ 查询2000年以后购买的图书总册数; ⑦ 计算各类图书的总册数; ⑧ 查询每本图书的平均借阅次数;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值