SCount * SMoney AS TOTALMONEY
FROM BookStore, BookSell
WHERE BookStore. BNo= BookSell. Bno GROUP BY BNo, BName , SDate , BCount
(5) 分析畅销书,即列出当期(从当前起,向前30天)销售数量大于100的书名、数量。
SELECT BName , SCount FROM BookStore, BookSell
WHERE BookStore. BNo= BookSell. BNo AND SCount>100 AND SDate+30<(SELECT MAX(SDate) FROM BookSell) 或:SDate-‘2009-5-1’<30 或: ‘2009-5-30’- SDate <30
或:SDate BETWEEN ‘2009-5-1’ AND ‘2009-5-30’
说明:日期的表示方法
2009-5-30 20090530 2009/5/30
四、简答题 S(学生信息表) 学学生年所在系 S# SN AGDEE PT C(课程信息表) 课课程程名称 号 C# CN SC(选课信息表) 学课成号 姓名 龄 号 程绩 号 S# C# GR
(1) 创建S表,S#为主键,SN不能为空。
CREATE TABLE S
( S# CHAR(8) PRIMARY KEY,
SN CHAR(8) NOT NULL, AGE INT,
DEPT VARCHAR(20) );
(2) 创建计算机系学生的视图,该视图的属性列由学号、姓名、课程名和任课教师号组成。
CREATE VIEW computer_student(S#, SN,
C#,T#) AS
SELECT S.S#, SN,SC.C#,T# FROM S,SC,T WHERE S.S#= SC.S# AND SC.C#= T.C# AND DEPT=’计算机’
(3) 检索计算机系年龄在20岁以上的学生学号。 SELECT S# FROM S WHERE AGE>20 AND DEPT=’计算机’
(4) 检索姓王的教师所讲课程的课程号和课程名称。
SELECT C.C#,CN FROM C, T
WHERE C.C#= T.C# AND TN LIKE ‘王%’
(5) 检索张三同学所学课程的成绩,列出SN, C#,GR
SELECT SN,C#,GR FROM S,SC
WHERE S.S#= SC.S# AND SN= ’张三’
(6) 检索选修总收入超过1000元的教师所讲课程的学生姓名、课程号和成绩。
SELECT SN,T.C#,GR FROM T,SC,S
WHERE T.C# =SC.C# AND S.S#= SC.S# AND (SAL+COMM)>1000
(7) 检索没有选修C1课程且选修课程数为两门的学生的姓名和平均成绩,并按平均成绩降序排列。
SELECT S.S#,SN,AVG(GR) AS AVGSCORE FROM S,SC
WHERE S.S#= SC.S# AND C#<>’C1’
GROUP BY S.S#,SN HAVING COUNT(*)=2 ORDER BY AVG(GR) DESC
(8) 检索选修和张三同学所选课程中任意一门相同的学生姓名,课程名
SELECT SN,CN FROM S,SC,C
WHERE S.S#= SC.S# AND C.C#=SC.C#
或:CN=ANY AND C# IN (SELECT C# FROM S,SC WHERE S.S#= SC.S# AND SN= ’张三’) AND SN<> ’张三’
(9) S1同学选修了C3,将此信息插入SC表中。
INSERT INTO SC(S#,C#) VALUES(‘S1’,’C3’) 或 INSERT INTO SC VALUES(‘S1’,’C3’)
(10) 删除S表中没有选修任何课程的学生的记录。
DELETE FROM S WHERE S# NOT IN(SELECT DISTINCT S# FROM SC)