以下SQL语句均在SQL2008环境下执行
按照《数据库系统概论》(第五版)P79页的学生课程数据库和P70-71页中的SPJ数据库完成以下查询
- P130 3:(3);(6)
3(3)
代码:
--表S和表T做自然连接
SELECT A,B,S.C,S.D,E,F
FROM S,T
WHERE S.C=T.C AND S.D=T.D
3(6)
代码:
--投影表S的C、D属性列,与表T做笛卡儿积
SELECT S.C,S.D,T.*
FROM S,T
- 查询所有供应商的姓名和所在城市。
代码:
--查询所有供应商的姓名和所在城市
SELECT SNAME,CITY
FROM S
- 查询使用上海供应的零件的工程名称。
代码:
--查询使用上海供应的零件的工程名称
SELECT DISTINCT JNAME
FROM S,J,SPJ
WHERE S.SNO = SPJ.SNO AND S.SNO = 'S5' AND J.JNO = SPJ.JNO
- 查询每个工程的信息及相应的供应信息(包括列出尚未被供应零件的那些工程)。
查询结果形如下:
jno jname city sno pno qty
---- -------- ---- ---- ---- ------
j1 三建 北京 s1 p1 200
j1 三建 北京 s2 p3 400
……
j4 造船厂 天津 s5 p6 500
j5 机车厂 唐山 s2 p3 400
j6 无线电厂 常州 NULL NULL NULL
j7 半导体厂 南京 NULL NULL NULL
代码:
--查询每个工程的信息及相应的供应信息(包括列出尚未被供应零件的那些工程)
SELECT J.JNO, JNAME, CITY, SNO, PNO, QTY
FROM J LEFT OUTER JOIN SPJ ON(J.JNO = SPJ.JNO)
- 查询供应工程J1蓝色零件的供应商号SNO,请用两种方法实现。
代码:
--查询供应工程J1蓝色零件的供应商号SNO,方法一
SELECT DISTINCT SNO
FROM P, SPJ
WHERE P.PNO = SPJ.PNO AND SPJ.JNO = 'J1' AND P.COLOR = '蓝'
--查询供应工程J1蓝色零件的供应商号SNO,方法二
SELECT DISTINCT SNO
FROM P, SPJ
WHERE SNO IN
(SELECT SNO
FROM SPJ
WHERE PNO IN
(SELECT PNO
FROM P
WHERE COLOR = '蓝'
)
);
- 查询先行课的学分为4的课程信息。
代码:
--查询先行课的学分为的课程信息
SELECT *
FROM COURSE SECOND
WHERE SECOND.Cno IN
(SELECT Cpno
FROM COURSE FIRST
WHERE SECOND.Ccredit = 4
);
- 查询课程名称与其间接先行课的名称。
代码:
--查询课程名称与其间接先行课的名称
SELECT FIRST.Cname, THIRD.Cname
FROM COURSE FIRST, COURSE SECOND, COURSE THIRD
WHERE FIRST.Cpno = SECOND.Cno AND SECOND.Cpno = THIRD.Cno
- 查询非计算机科学系中比计算机科学系所有学生年龄都小的学生完整信息,用两种方法实现。
代码:
--查询非计算机科学系中比计算机科学系所有学生年龄都小的学生完整信息,方法一
SELECT *
FROM STUDENT
WHERE Sage < ALL
(SELECT Sage
FROM STUDENT
WHERE Sdept = 'CS'
)
AND Sdept != 'CS'
--查询非计算机科学系中比计算机科学系所有学生年龄都小的学生完整信息,方法二
SELECT *
FROM STUDENT
WHERE Sage <
(SELECT MIN(Sage)
FROM STUDENT
WHERE Sdept = 'CS'
)
AND Sdept != 'CS'