数据库课后作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库大作业
11.针对习题10的四个表,用SQL语言完成以下各项操作:
(1)给学生表增加一属性Nation(民族),数据类型为Varchar(20);ALTER TABLE dbo.Student
ADD Nation VarChar(20);
SElECT*
FROM dbo.Student;
(2)删除学生表中新增的属性Nation;
ALTER TABLE dbo.Student
DROP COLUMN Nation;
SElECT*
FROM dbo.Student;
(3)向成绩表中插入记录(“2001110”,“3”,80);
INSERT INTO dbo.Grade
VALUES ('2001110','3',80);
SElECT*
FROM dbo.Grade;
(4)将学号为“2001110”的学生的成绩修改为70分;
UPDATE dbo.Grade
SET Gmark= 70
WHERE Sno='2001110';
SElECT*
FROM dbo.Grade;
(5)删除学号为“2001110”的学生的成绩记录;
DELETE FROM dbo.Grade
WHERE Sno='2001110';
SElECT*
FROM dbo.Grade;
(6)在学生表的Clno属性上创建一个名为IX_Class的索引,以班级号的升序排序;
CREATE INDEX IX_CLASS
ON dbo.Student(Clno);
SELECT*
FROM dbo.Student;
(7)删除IX_Class索引。
DROP INDEX Student.IX_CLASS;
SELECT*
FROM dbo.Student;
12. 针对习题10的四个表,用SQL语言完成以下各项查询:
(1)找出所有被学生选修了的课程号;
SELECT DISTINCT Cno
FROM Grade,Student
WHERE Grade.Sno=Student.Sno;
(2)找出01311班女学生的个人信息;
SELECT*
FROM Student
WHERE Ssex='女'AND Clno='01311';
(3)找出0311班和01312班的学生姓名、性别、出生年份;
SELECT Sname,Ssex,(2014-Sage)AS'出生年份'
FROM Student
WHERE Clno IN('01311','01312');
(4)找出所有姓李的学生的个人信息;
SELECT*
FROM Student
WHERE Sname LIKE'李%';
(5)找出学生李勇所在班级的学生人数;
SELECT COUNT(*)AS'李勇班级人数'
FROM Student
WHERE Clno IN(
SELECT Clno
FROM Student
WHERE Sname='李勇');
(6)找出课程名为操作系统的平均成绩、最高分、最低分;
SELECT MAX(Gmark)AS'最高分'
,MIN(Gmark)AS'最低分'
,AVG(Gmark)AS'平均成绩'
FROM Grade g,Course c
WHERE o IN(SELECT o
FROM Course
WHERE ame='操作系统');
(7)找出选修了课程的学生人数;
SELECT COUNT(DISTINCT Sno)AS'选修了课程的学生人数'
FROM Grade;
(8)找出选修了课程操作系统的学生学号和姓名;
SELECT S.Sno,S.Sname
FROM Student S,Grade G
WHERE S.Sno IN(
SELECT G.Sno
FROM Grade
WHERE o=(
SELECT Cno
FROM Course
WHERE Cname='操作系统'));
(9)找出2000级计算机软件班的成绩为空的学生姓名。
SELECT S.Sname
FROM Student S
WHERE S.Sno NOT IN(
SELECT Sno
FROM Grade)AND S.Clno=(SELECT Clno
FROM Class
WHERE Inyear='2000'AND Speciality ='计算机软件');
13. 针对习题10的四个表,用SELECT的嵌套查询完成以下各项查询:
(1)找出与李勇在同一个班级的学生信息;
SELECT*
FROM Student
WHERE Clno=(SELECT Clno
FROM Student
WHERE Sname='李勇')AND Sname NOT IN('李勇');
(2)找出所有与李勇有相同选修课程的学生信息;
SELECT*
FROM Student
WHERE Sno IN(
SELECT Sno
FROM Grade
WHERE o IN(
SELECT Cno
FROM Grade
WHERE Sno=(
SELECT Sno
FROM Student
WHERE Sname='李勇')))AND Sname NOT IN('李勇');
(3)找出年龄介于学生李勇与25岁之间的学生信息(已知李勇的年龄小于25岁);SELECT*
FROM Student
WHERE Sage< 25 AND Sage>(SELECT Sage
FROM Student
WHERE Sname='李勇');
(4)找出选修了课程操作系统的学生学号与姓名;
SELECT Sno,Sname
FROM Student
WHERE Sno IN(SELECT Sno
FROM Grade
WHERE Cno=(SELECT Cno
FROM Course
WHERE Cname='操作系统'));
(5)找出没有选修1号课程的所有学生姓名;
SELECT Sname
FROM Student
WHERE Sno NOT IN(SELECT Sno
FROM Grade
WHERE Cno='1');
(6)找出选修了全部课程的学生姓名。