数据库第三章习题 下载本文

内容发布更新时间 : 2024/12/23 7:00:18星期一 下面是文章的全部内容请认真阅读。

S

SN S1 S2 S3 S4 S5 SPJ SNAME CITY N1 上海

N2 N3 N4 N5 P 北京 北京 上海 南京 COLOR 红 绿 蓝 红 蓝 绿 J SN S1 S1 S2 S2 S2 S2 S2 S2 S2 S2 S3 S3 S4 S4 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 PN P1 P1 P3 P3 P3 P3 P3 P3 P3 P3 P3 P4 P6 P6 P2 P2 P5 P5 P6 P1 P3 P4 P5 P6 JN J1 J4 J1 J2 J3 J4 J5 J6 J7 J2 J1 J2 J3 J7 J2 J4 J5 J7 J2 J4 J4 J4 J4 J4 QTY 200 700 400 200 200 500 600 400 800 100 200 500 300 300 200 100 500 100 200 1000 1200 800 400 500 WEIGHT 12 18 20 13 11 15 PN PNAME PN1 PN2 PN3 PN4 PN5 PN6 JN J1 J2 J3 J4 J5 J6 J7

P1 P2 P3 P4 P5 P6

JNAME CITY JN1 JN2 JN3 JN4 JN5 JN6 JN7 上海 广州 南京 南京 上海 武汉 上海 (1) 取出工程的全部细节。

Select * From J

(2) 取出所在城市为上海的所有工程的全部细节。

Select * From J

Where CITY=‘上海’; (3) 取出重量最轻的零件代号。

Select PN From P

Where WEIGHT=

(SelectMIN (WEIGHT) From P );

6

(4) 取出为工程J1提供零件的供应商代号。

Select SN From SPJ Where JN=?J1?;

(5) 取出为工程J1提供零件P1的供应商代号。

Select SN From SPJ

Where JN=?J1? AND PN=?P1?;

(6) 取出由供应商S1提供零件的工程名称。

Select J.JNAME From SPJ, J

Where SPJ.JN=J.JN AND SPJ.SN=‘S1’; (7) 取出供应商S1提供的零件的颜色。

Select Distinct P.COLOR From SPJ, P

Where SPJ.PN=P.PN AND SPJ.SN=?S1?; (8) 取出为工程J1或J2提供零件的供应商代号。

Select Distinct SN From SPJ

Where JN=?J1? OR JN=?J2?;

(9) 取出为工程J1提供红色零件的供应商代号。

Select Distinct SPJ.SN From SPJ, P

Where SPJ.PN=P.PN AND SPJ.JN=‘J1’ AND P.COLOR=‘红’; (10)取出为所在城市为上海的工程提供零件的供应商代号。

Select DISTINCT SPJ.SN From J, SPJ

Where J.JN=SPJ.JN AND J.CITY=‘上海’;

(11)取出为所在城市为上海或北京的工程提供红色零件的供应商代号。

Select SPJ.SN From P,J,SPJ

Where J.JN=SPJ.JNO ANDP.PN=SPJ.PN AND P.COLOR=‘红’AND (J.CITY=‘上海’OR J.CITY=‘北京’);

(12)取出供应商与工程所在城市相同的供应商提供的零件代号。

Select DISTINCT SPJ.PN From S, J, SPJ

Where J.JN=SPJ.JN AND S.SN=SPJ.SN AND J.CITY=S.CITY

7

S(SN,SNAME,CITY) P(PN,PNAME,COLOR,WEIGHT) J(JN,JNAME,CITY) SPJ(SN,PN,JN,QTY) (13)取出上海的供应商提供给上海的任一工程的零件的代号。

Select SPJ.PN From S, J, SPJ

Where J.JN=SPJ.JN ANDS.SN=SPJ.SN AND J.CITY=‘上海’ AND S.CITY=‘上海’;

(14)取出由供应商S1提供零件的工程的代号。

Select Distinct SPJ.JN From S,P,SPJ

Where S.SN=SPJ.SN AND P.PN=SPJ.PN AND S.SN=‘S1’;

(15)取出所有这样的一些二元组,使得第1个城市的供应商为

第2个城市的工程提供零件。 Select Distinct S.CITY,J.CITY From S, J, SPJ

Where S.SN=SPJ.SN AND J.JN=SPJ.JN ; (16)把零件P2的重量增加5,颜色改为黄色。

UPDATE P

SET WEIGHT=WEIGHT+5, COLOR=‘黄’ Where PN=‘P2’;

(17)将没有供货的所有工程项目从J表中删除。

Delete From J Where JN not in

( Select * From SPJ);

(18)查询提供全部零件的供应商名。

Select SNAME From S Where SNO IN (

SELECT SNO FROM SPJ);

(19)查询这样的工程项目号:该工程项目使用P1零件的平均使用量大于工程

项目J1使用的任何一种零件的最大数量。

SELECT JNO FROM SPJ

WHERE SPJ.PNO=P1 GROUP BY JNO

HAVING AVG(QTY)>ALL

(SELECT QTY FROM SPJ

8

WHERE SPJ.JNO =‘J1?);

(20)定义一个视图,它由所有这样的工程项目(工程项目号与所在城市名称)组成:它们由供应商S1供货且使用零件P1。 CREAT VIEW JN,JCITY AS

Select J.JN,J.CITY From J, SPJ

Where J.JN=SPJ.JN AND SPJ.SN=?S1? AND SPJ.PN=?P1?; 5.假设有如下4个样本表: student (学生信息表) NO 108 105 107 101 109 103

teacher (教师信息表) NO 804 856 825 831 CNO 3-105 3-245 6-166 9-888 NAME 李成 张旭 王萍 刘冰 CNAME 操作系统 数字电路 高等数学 SEX 男 男 女 女 TNO NO CNO 103 105 3-245 3-245 DEGREE 86 75 804 856 100 Student(NO,NAME,SEX,BIRTHDAY,CLASS) Teacher(NO,NAME,SEX,BIRTHDAY,PROF,DEPART) Course(CNO,CNAME,TNO) Score(NO,CNO,DEGREE) BIRTHDAY 12/02/58 03/12/69 05/05/72 08/14/77 PROF 副教授 讲师 助教 助教 DEPART 计算机系 电子工程系 计算机系 电子工程系 NAME 曾华 匡明 王丽 李军 王芳 陆军 SEX 男 男 女 男 女 男 BIRTHDAY 09/01/77 10/02/75 01/23/76 02/20/76/ 02/10/75 06/03/74 CLASS 95033 95031 95033 95033 95031 95031 course (课程表) score (成绩表)

计算机导论 825 (1) 列出至少有2名男生的班号。

Select CLASS From student Where SEX=?男? GROUP BY CLASS HAVING COUNT(*)>2

9

(2) 显示student表中不姓“王”的同学记录。

SELECT * FROM STUDENT

WHERE NAME NOT LIKE?王%?; (3) 显示student表中每个学生的姓名和年龄。

SELECT NAME,2017-YEAR(birthday) FROM STUDENT;

(4) 显示student表中最大和最小的birthday日期值。

SELECT NAME,MAX(BIRTHDAY),MIN(BIRTHDAY) FROM STUDENT;

(5) 以班号和年龄从大到小的顺序显示student表中的全部记录。

SELECT * FROM STUDENT

ORDER BY CLASS,2017-YEAR(BIRTHDAY)DESC (6) 显示“男”教师及其所上的课程。

SELECT TEACHER.NAME,COURSE.NAME FROM TEACHER,COURSE

WHERE TEACHER.NO=COURSE.TNO AND TEACHER.SEX=?男?; (7) 列出最高分同学的no、cno和degree列。

SELECT NO,CNO,DEGREE FROM SCORE WHERE DEGREE=

(SELECT MAX(DEGREE) FROM SCORE)

(8) 列出和“李军”同性别的所有同学的name。

SELECT NAME FROM STUDENT WHERE SEX=

(SELECT SEX FROM STUDENT WHERE NAME=?李军?); (9) 列出和“李军”同性别并同班的同学name。

SELECT NAME FROM STUDENT WHERE SEX =

(SELECET SEX FROM STUDENT

10