资源描述
刘文玲41304289
一、 查询学生-课程数据库
1. 查询目前年龄大于19岁的学生信息:学号、姓名和出生年份。
SELECT SNO,NAME,2015-AGE
FROM Student
WHERE AGE>19
2. 查询每门课程的最高分,要求得到的信息包括课程号和分数。
SELECT CNO,MAX(GRADE)
FROM SC
GROUP BY CNO
3. 统计只有2名以下(含2名)学生选修的课程情况,统计结果包括课程号、课程名和选修人数,并按选课人数降序排列。
SELECT Course.CNO,CNAME,COUNT(SNO)
FROM SC,Course
WHERE SC.CNO=Course.CNO
GROUP BY(Course.CNO,Course.CNAME)
HAVING COUNT(SNO)<=2
ORDER BY COUNT(SC.SNO) DESC
4. 查询选修了信息系统和数据库的学生的名字。(2种方法)
l SELECT DISTINCT NAME
FROM Student,Course,SC
WHERE Student.SNO=SC.SNO AND SC.CNO=Course.CNO AND CNAME IN('数据库','信息系统')
l SELECT NAME
FROM Student
WHERE SNO IN(
SELECT SNO
FROM SC
WHERE CNO IN(
SELECT CNO
FROM Course
WHERE CNAME IN('数据库','信息系统')))
5. 查询每门课程的间接先修课程(即先修课程的先修课),输出课程和间接先修课程的课程号及学分。
SELECT S1.CNO,S1.CREDIT,S2.CPNO
FROM Course S1,Course S2
WHERE S1.CNO=S2.CNO;
SELECT S2.CPNO,S2.CREDIT
FROM Course S1,Course S2
WHERE S2.CPNO=S1.CNO
二、
P130:5 (1),(4),(6)(2种方法),(7),(9),(10),(11)
(1)SELECT SNAME,CITY
FROM S
(4)SELECT P.PNAME,QTY
FROM SPJ,P
WHERE SPJ.PNO=P.PNO AND SPJ.JNO=’J2’
(6)
l SELECT JNAME
FROM S,SPJ,J
WHERE S.NO=SPJ.SNO AND S.CITY=’上海’ AND SPJ.JNO=P.JNO
l SELECT JNAME
FROM SPJ,J
WHERE SPJ.JNO=P.JNO AND SNO IN
(SELECT SNO
FROM S
WHERE CITY=’上海’)
(7)SELECT JNO
FROM S,SPJ
WHERE S.NO=SPJ.NO AND S.CITY NOT IN(‘天津’)
(9)UPDATE SPJ
SET SNO=’S3’
WHERE JNO=’J4’ AND PNO=’P6’ AND SNO=’S5’
(10)DELETE
FROM S
WHERE SNO=’S2’ ;
DELETE
FROM SPJ
WHERE SNO=’S2’
(11)INSERT
INTO SPJ
VALUES(‘S2’,’J6’,’P4’,’200’)
三、 预习
1. 视图
(1) 视图与基表的区别与联系
答:区别:视图是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据存放在对应的基本表中;而基本表真实存在,数据存在其中。
联系:视图对应的数据存在基本表中,因此视图查询出的数据随基本表中数据变动变动
(2) 创建信息系学生的视图。
CREATE VIEW IS1_Student
AS
SELECT SNO,NAME,AGE
FROM Student
WHERE DEPT='IS'
(3) 将学生的学号、姓名及平均成绩定义为一个视图
CREATE VIEW StuV1(SNO,NAME,GAVG)
AS
SELECT Student.SNO,NAME,AVG(GRADE)
FROM Student,SC
WHERE Student.SNO=SC.SNO
GROUP BY (Student.SNO,NAME)
(4) 视图可以查询吗?与基表的查询方法相同吗
答:视图可以查询,与基本表的查询方式一样
(5) 查询平均成绩在90分以下的学生姓名和平均成绩。分别从基表和视图查询。
l 基本表:SELECT NAME,AVG(GRADE)
FROM Student,SC
WHERE Student.SNO=SC.SNO
GROUP BY NAME
HAVING AVG(GRADE)<90
l 视图SELECT NAME,GAVG
FROM StuV1
WHERE GAVG<90
(6) 视图可以更新吗?与基表的查询方法相同吗?有什么限制。
答:视图可以更新,更新方式与基本表的一样,但并不是所有的视图都是可更新的,一般只允许对行列子集视图进行更新。
(7) 通过更新视图将信息系的学生张立的名字更改为张国立。
UPDATE IS1_Student
SET NAME='张国立'
WHERE NAME='张立'
展开阅读全文