资源描述
《数据库原理与应用》实验报告
题目:实验五:嵌套查询、数据更新和视图
学号:1148028
姓名:沈宇杰
日期:2013/5/13
实验预习情况:
实验目的:
①:掌握SQL语言的核心语句—SELECT语句的使用,具体为在SQL Server 2008环境下采用Transact-SQL实现嵌套查询
②:掌握采用Transact-SQL实现数据更新
③:掌握采用Transact-SQL实现视图的定义、删除、查询与更新。
实验内容与要求:
按照《数据库系统概论》(第四版)P82及P75中的关系模式及数据,详细的实验事例请参照实验四,完成以下实验。
实验内容与完成情况:
嵌套查询:
①:查询其他系中比计算机系所有学生年龄都小的学生姓名与年龄,请用两种方法实现
法一:
SELECT Sname 姓名,Sage 年龄
FROM Student
WHERE Sage < ALL
(
SELECT Sage
FROM Student
WHERE Sdept = 'CS'
)
AND Sdept <> 'CS'
法二:
SELECT Sname 姓名,Sage 年龄
FROM Student
WHERE Sage <
(
SELECT MIN(Sage)
FROM Student
WHERE Sdept = 'CS'
)
AND Sdept <> 'CS'
②:查询其他系中比计算机科学系某一学生年龄大的学生姓名与年龄,请用两种方法实现
法一:
SELECT Sname 姓名,Sage 年龄
FROM Student
WHERE Sage > ANY
(
SELECT Sage
FROM Student
WHERE Sdept = 'CS'
)
AND Sdept <> 'CS'
法二:
SELECT Sname 姓名,Sage 年龄
FROM Student
WHERE Sage >
(
SELECT MAX(Sage)
FROM Student
WHERE Sdept = 'CS'
)
AND Sdept <> 'CS'
③:查询供应工程 J1 红色零件的供应商号SNO,请用三种方法实现
法一:
SELECT SNO 供应商号
FROM SPJ
WHERE PNO IN
(
SELECT PNO
FROM P
WHERE COLOR = '红'
)
AND JNO = 'J1'
法二:
SELECT SNO
FROM P,SPJ
WHERE SPJ.PNO = P.PNO AND COLOR = '红' AND JNO = 'J1'
法三:
SELECT SNO
FROM SPJ
WHERE EXISTS
(
SELECT *
FROM P
WHERE PNO = SPJ.PNO AND SPJ.JNO = 'J1' AND COLOR = '红'
)
④:查询至少用了供应商S1所提供的全部零件的工程号JNO,要求用带EXISTS谓词的子查询实现。
SELECT DISTINCT JNO
FROM SPJ A
WHERE NOT EXISTS
(
SELECT *
FROM SPJ B
WHERE B.SNO='S1'AND NOT EXISTS
(
SELECT *
FROM SPJ C
WHERE C.JNO = A.JNO
AND C.PNO = B.PNO
)
⑤:查询使用了全部零件的工程号JNO,要求用带EXISTS谓词的子查询实现
SELECT JNO
FROM SPJ A
WHERE NOT EXISTS
(
SELECT *
FROM SPJ B
WHERE NOT EXISTS
(
SELECT *
FROM SPJ C
WHERE C.JNO=B.JNO
AND B.PNO = A.PNO
)
)
数据更新:
①:将所有学号为10的学生姓名改为“王华英”
UPDATE Student
SET Sname = '王华英'
WHERE Sno = '10'
②:将所有“95101”班号改为“95091”
UPDATE Student
SET Sno = '95091'
WHERE Sno = '95101'
视图:
请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO),零件代码(PNO),供应数量(QTY)。针对该视图完成下列查询:
CREATE VIEW IS_SP
AS
SELECT SNO,PNO,QTY
FROM SPJ
WHERE JNO = 'J1'
①:找出三建工程项目的各种零件代码及其数量
SELECT PNO 零件代码,QTY 数量
FROM IS_SPJ
②:找出供应商S1的供应情况
SELECT PNO 零件代码,QTY 数量
FROM IS_SPJ
WHERE SNO = 'S1'
出现的问题:(正式实验中遇到的问题)
1. 第四题:查询至少用了供应商S1所提供的全部零件的工程号JNO,要求用带EXISTS谓词的子查询实现。出现结果为J4,但是J4的零件不是由S1提供的,产生错误。还是说只要用了P1,P2两种零件即可。理解问题。
解决方案(列出遇到的问题和解决办法,列出没有解决的问题):
1.
展开阅读全文