实验三:SQL查询(连接查询、嵌套查询)

时间:2024-03-31 17:17:11

实验内容与完成情况(记录所有的实验过程):

按照《数据库系统概论》(第五版)P79页的学生课程数据库和P70-71页中的SPJ数据库完成以下查询

1.P130 3:(3);(6)

(3):

SELECT  A,B,S.C,S.D,E

FROM S,T

WHERE S.C=T.C AND S.D=T.D;

(4):

SELECT S.C,S.D,T.*

FROM S,T;

2.查询所有供应商的姓名和所在城市。

SELECT Sname 供应商,CITY 所在城市

FROM S;

运行结果

实验三:SQL查询(连接查询、嵌套查询)

3.查询使用上海供应的零件的工程名称。

SELECT JNAME 工程名称

FROM J

WHERE JNO IN(

SELECT JNO

FROM SPJ

WHERE SNO IN(

SELECT SNO

FROM S

WHERE CITY='上海'

)

);

运行结果

实验三:SQL查询(连接查询、嵌套查询)

4.查询每个工程的信息及相应的供应信息(包括列出尚未被供应零件的那些工程)。

查询结果形如下:

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.*,SNO,PNO,QTY

FROM J LEFT OUTER JOIN SPJ

ON J.JNO=SPJ.JNO;

运行结果

实验三:SQL查询(连接查询、嵌套查询)

5.查询供应工程J1蓝色零件的供应商号SNO,请用两种方法实现。

方法1:

SELECT DISTINCT SNO 供应商号

FROM SPJ

WHERE JNO='J1' AND PNO IN(

SELECT PNO

FROM P

WHERE COLOR='蓝');

方法2:

SELECT DISTINCT SNO 应商号,JNO,P.COLOR

FROM SPJ JOIN P

ON P.PNO=SPJ.PNO AND P.COLOR = '蓝' AND SPJ.JNO = 'J1';

运行结果

实验三:SQL查询(连接查询、嵌套查询)

6.查询先行课的学分为4的课程信息。

方法1:

SELECT Course.*

FROM Course

WHERE Cpno IN(

SELECT Cno

FROM Course

WHERE Ccredit=4

);

方法2:

SELECT DISTINCT First.*

FROM Course First,Course Second

WHERE First.Cpno IN(

SELECT Cno

FROM Course

WHERE Ccredit=4

);

运行结果

实验三:SQL查询(连接查询、嵌套查询)

7.查询课程名称与其间接先行课的名称。

SELECT First.Cname 课程名称,Third.Cname 先行课名称

FROM Course First,Course Second,Course Third

WHERE First.Cpno=Second.Cno AND Second.Cpno=Third.Cno

实验三:SQL查询(连接查询、嵌套查询)

8.查询非计算机科学系中比计算机科学系所有学生年龄都小的学生完整信息,用两种方法实现。

方法1:

SELECT *

FROM Student

WHERE Sdept!='CS' AND Sage< ALL(

SELECT Sage

FROM Student

WHERE Sdept='CS'

);

方法2:

SELECT *

FROM Student

WHERE Sdept!='CS' AND Sage< (

SELECT MIN(Sage)

FROM Student

WHERE Sdept='CS'

);

运行结果

实验三:SQL查询(连接查询、嵌套查询)