《数据库原理与应用》(第三版)书后上机练习题——第六章

《数据库原理与应用》(第三版)书后上机练习题——第六章


书上给的三个表的数据

《数据库原理与应用》(第三版)书后上机练习题——第六章_第1张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第2张图片
在这里插入图片描述
《数据库原理与应用》(第三版)书后上机练习题——第六章_第3张图片

题目错误的地方

  • 所有关于VB课的题目,这里可以选择把表中的Java课改成VB课,或者把题目中的VB课改为Java课
    • 我这里是把题目中的VB课改为Java课来写的
  • 18题: 查询选课人数最多的前两名学生的学号和选课门数,包括并列的情况。
    • 这里不通顺应该是: 选课门数最多的前两名学生

答案

题1.查询学生选课表中的全部数据。

SELECT * FROM SC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第4张图片

题2.查询计算机系的学生姓名、年龄。

SELECT Sname,Sage FROM Student WHERE Sdept='计算机系'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第5张图片

题3.查询成绩在70 ~ 80 分之间的学生学号、课程号和成绩。

SELECT Sno,Cno,Grade FROM SC WHERE Grade BETWEEN 70 AND 80

《数据库原理与应用》(第三版)书后上机练习题——第六章_第6张图片

题4.查询计算机系年龄在18 ~ 20且性别为“男”的学生姓名、年龄。

SELECT Sname,Sage FROM Student 
	WHERE Sdept='计算机系' AND Sage BETWEEN 18 AND 20 AND Ssex='男'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第7张图片

题5.查询“c01” 课程最高分。

SELECT MAX(Grade) AS c01的最高分 FROM SC WHERE Cno = 'c01'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第8张图片

题6.查询计算机系学生的最大年龄和最小年龄。

SELECT MAX(Sage) AS 计算机系的最大年龄,MIN(Sage) AS 计算机系的最小年龄 FROM Student
	WHERE Sdept = '计算机系'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第9张图片

题7.统计每个系的学生人数。

SELECT Sdept,COUNT(*) AS 学生人数 FROM Student GROUP BY Sdept

《数据库原理与应用》(第三版)书后上机练习题——第六章_第10张图片

题8.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果(不包括没选课的学生)。

SELECT Sno,COUNT(*) AS 选课门数,SUM(Grade) AS 总成绩 FROM sc GROUP BY Sno
	ORDER BY COUNT(*) ASC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第11张图片

题9.查询总成绩超过200分的学生,列出学号、总成绩。

SELECT Sno,SUM(Grade) AS 总成绩 FROM SC
	GROUP BY Sno HAVING SUM(Grade)>200

《数据库原理与应用》(第三版)书后上机练习题——第六章_第12张图片

题10.查询选了“c02”课程的学生姓名和所在系。

SELECT Sname,Sdept FROM Student S JOIN SC ON S.Sno = SC.Sno
	WHERE Cno = 'c02'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第13张图片

题11.查询成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。

SELECT Sname,Cno,Grade FROM Student S JOIN SC ON S.sno = SC.sno
	WHERE Grade>80 ORDER BY Grade DESC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第14张图片

题12.查询哪些学生没有选课,要求列出学号、姓名和所在系。

SELECT S.Sno,Sname,Sdept FROM Student S LEFT JOIN SC ON S.Sno = SC.Sno
	WHERE SC.Cno is NULL

《数据库原理与应用》(第三版)书后上机练习题——第六章_第15张图片

题13.统计每门课程的选课人数,列出课程号和选课人数(包括没人选的课程)。

SELECT C.Cno,COUNT(SC.Sno) AS 选课人数 FROM Course C LEFT JOIN SC
	ON C.Cno = SC.Cno GROUP BY C.Cno

《数据库原理与应用》(第三版)书后上机练习题——第六章_第16张图片

题14.查询与"VB""Java"在同一学期开设的课程的课程名和开课学期。

/*题目应该是 查询与“Java"在同一学期开设的课程的课程名和开课学期。*/
SELECT Cname,Semester FROM Course
	WHERE Semester IN (
		SELECT Semester FROM Course WHERE Cname='Java')

《数据库原理与应用》(第三版)书后上机练习题——第六章_第17张图片

题15.查询与李勇年龄相同的学生的姓名、所在系和年龄。

SELECT Sname,Sdept,Sage FROM Student
	WHERE Sage IN (
		SELECT Sage FROM Student WHERE Sname='李勇')

《数据库原理与应用》(第三版)书后上机练习题——第六章_第18张图片

题16.查询计算机系年龄最小的两名学生的姓名和年龄。

SELECT TOP 2 WITH TIES Sname,Sage FROM Student
	WHERE Sdept='计算机系'
	ORDER BY Sage ASC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第19张图片

题17.查询"VB"“Java"成绩最高的前两名学生的姓名、所在系和"VB”"Java"成绩,包括并列的情况。

/*题目应该是 查询Java成绩最高的前两名学生的姓名,所在系和Java成绩,包括并列情况*/
SELECT TOP 2 WITH TIES Sname,Sdept,Grade
	FROM Student S JOIN	SC ON	S.Sno=SC.Sno
	JOIN Course C ON C.Cno=SC.Cno
	WHERE Cname = 'Java'
	ORDER BY Grade DESC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第20张图片

题18.查询选课人数门数最多的前两名学生的学号和选课门数,包括并列的情况。

/*题目应该是 查询选课门数组多的前两名学生的学号和选课门数,包括并列情况*/
SELECT TOP 2 WITH TIES Sno,COUNT(*) AS 选课门数
	FROM SC GROUP BY Sno ORDER BY COUNT(*) DESC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第21张图片

题19.查询学生人数最多的系,列出系名和人数。

SELECT TOP 1 Sdept,COUNT(*) AS 人数 FROM Student
	GROUP BY Sdept ORDER BY COUNT(*) DESC

《数据库原理与应用》(第三版)书后上机练习题——第六章_第22张图片

题20.用子查询实现如下查询:

(1)查询选修了"c01"号课程的学生的姓名和所在系。

SELECT Sname,Sdept FROM Student
	WHERE Sno IN (SELECT Sno FROM SC WHERE Cno = 'c01')

《数据库原理与应用》(第三版)书后上机练习题——第六章_第23张图片

(2)查询数学系成绩在80分以上的学生学号、姓名、课程号和成绩。

SELECT Student.Sno,Sname,Cno,Grade FROM Student JOIN SC ON Student.Sno=SC.Sno
	WHERE Student.Sno IN(SELECT Sno FROM Student WHERE Sdept = '数学系') 
	AND SC.Sno IN(SELECT Sno FROM SC WHERE Grade > 80)

《数据库原理与应用》(第三版)书后上机练习题——第六章_第24张图片

(3)查询计算机系考试成绩最高的学生姓名。

SELECT Sname FROM Student JOIN SC ON Student.Sno=SC.Sno 
	WHERE Sdept = '计算机系' AND Grade = (SELECT MAX(Grade) FROM
		SC JOIN Student ON SC.Sno=Student.Sno WHERE Sdept = '计算机系') 

《数据库原理与应用》(第三版)书后上机练习题——第六章_第25张图片

(4)查询数据结构考试成绩最高的学生姓名、所在系、性别和成绩。

SELECT Sname,Sdept,Ssex,Grade FROM Student
	JOIN SC ON Student.Sno=SC.Sno
	JOIN Course ON SC.Cno=Course.Cno
	WHERE Cname='数据结构' AND Grade=(SELECT MAX(Grade)
		FROM SC JOIN Course ON SC.Cno=Course.Cno WHERE Cname='数据结构')

《数据库原理与应用》(第三版)书后上机练习题——第六章_第26张图片

题21.查询没选"VB""Java"课程的学生姓名和所在系。

/*题目应该是 查询没选“Java*课程的学生姓名和所在系*/
SELECT Sname,Sdept FROM Student 
	WHERE Sno IN(SELECT Sno FROM SC JOIN Course ON SC.Cno = Course.Cno
		WHERE Cname != 'Java')

《数据库原理与应用》(第三版)书后上机练习题——第六章_第27张图片

题22.查询计算机系没有选课的学生的姓名和性别。

SELECT Sname,Ssex FROM Student
 LEFT JOIN SC ON Student.Sno=SC.Sno
 WHERE Sdept='计算机系' AND SC.Sno IS NULL

《数据库原理与应用》(第三版)书后上机练习题——第六章_第28张图片

题23.查询计算机系考试平均成绩最低的学生的姓名以及所选的课程名。

SELECT Sname,Cname FROM Student
	JOIN SC ON Student.Sno=SC.Sno
	JOIN Course ON SC.Cno=Course.Cno
	WHERE  Student.Sno IN
	(SELECT TOP 1 WITH TIES Student.Sno 
		FROM Student JOIN SC ON Student.Sno=SC.Sno
		WHERE Sdept='计算机系'
		GROUP BY Student.Sno ORDER BY AVG(Grade) ASC)

《数据库原理与应用》(第三版)书后上机练习题——第六章_第29张图片

题24.查询1 ~ 5学期中,选课人数最少的课程的课程名、开课学期和学分。

SELECT Cname,Semester,Credit FROM Course 
	WHERE Cno IN 
	(SELECT TOP 1 WITH TIES Cno FROM SC 
		WHERE Cno IN
		(SELECT Cno FROM Course
		 WHERE Semester
		 BETWEEN 1 AND 5)
		GROUP BY Cno ORDER BY COUNT(Sno) 
	)
	/*对1到5学期的课程号进行分组,根据学生数量排序(就是选课人数)*/

《数据库原理与应用》(第三版)书后上机练习题——第六章_第30张图片

题25.查询计算机系每个学生的考试情况,列出姓名、课程名和考试成绩,并将查询结果保存到一个新表中。新表名为: Computer_Dept。

/*查询计算机系每个学生的考试情况,列出姓名、课程名和考试成绩,并将查询结果保存到一个新表中。新表名为: Computer_Dept*/
SELECT Sname,Cname,Grade INTO Computer_Dept
	FROM Student 
	LEFT JOIN SC ON Student.Sno=SC.Sno
	LEFT JOIN Course ON SC.Cno=Course.Cno
	WHERE Sdept='计算机系'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第31张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第32张图片

题26.创建一个新表,表名为test _t,其结构为(COLI, COL2, COL3),其中:

《数据库原理与应用》(第三版)书后上机练习题——第六章_第33张图片

CREATE TABLE test_t(
	COL1 int,
	COL2 char(10) not NULL,
	COL3 char(10)
)
INSERT INTO test_t(COL2) VALUES('B1')
INSERT INTO test_t(COL1,COL2,COL3) VALUES(1,'B2','C2')
INSERT INTO test_t(COL1,COL2) VALUES(2,'B3')

《数据库原理与应用》(第三版)书后上机练习题——第六章_第34张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第35张图片

题27.删除考试成绩低于50分的学生的选课记录。

DELETE FROM SC WHERE Grade < 50

没有低于50分的
《数据库原理与应用》(第三版)书后上机练习题——第六章_第36张图片

题28.删除没有人选的课程。

DELETE FROM Course
	WHERE Cno NOT IN(SELECT Cno FROM SC)

删了两个课程 c03计算机网路,c08离散数学
《数据库原理与应用》(第三版)书后上机练习题——第六章_第37张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第38张图片

题29.删除计算机系"VB"“Java"成绩不及格学生的"VB”"Java"选课记录。

DELETE FROM SC
	FROM SC JOIN Student ON Student.Sno=SC.Sno
	JOIN Course ON Course.Cno=SC.Cno
	WHERE Cname='Java' AND Grade < 60 AND Sdept='计算机系'

没有不及格的
《数据库原理与应用》(第三版)书后上机练习题——第六章_第39张图片

题30.删除"VB"“Java"考试成绩最低的学生的"VB”"Java"选课记录。

DELETE FROM SC
	FROM SC JOIN Course ON Course.Cno=SC.Cno
	WHERE Cname='Java' AND Grade=(
		SELECT MIN(Grade) FROM SC
		JOIN Course ON Course.Cno=SC.Cno
		WHERE Cname='Java')

删除了9521103 c02 68 这条记录
《数据库原理与应用》(第三版)书后上机练习题——第六章_第40张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第41张图片

题31.将第2学期开设的所有课程的学分增加2分。

UPDATE Course SET Credit=Credit+2 
	WHERE Semester=2

高等数学学分从8变为10
《数据库原理与应用》(第三版)书后上机练习题——第六章_第42张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第43张图片

题32.将VBJava课程的学分改为3分。

UPDATE Course SET Credit=3
	WHERE Cname='Java'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第44张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第45张图片

题33.将计算机系学生的年龄增加1岁。

UPDATE Student SET Sage=Sage+1
	WHERE Sdept='计算机系'

《数据库原理与应用》(第三版)书后上机练习题——第六章_第46张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第47张图片

题34.将信息系学生的“计算机文化学”课程的考试成绩加5分。

UPDATE SC SET Grade=Grade+5
	FROM SC JOIN Course ON Course.Cno=SC.Cno
	JOIN Student ON SC.Sno=Student.Sno
	WHERE Sdept = '信息系' AND Cname='计算机文化学'

9521102 c01 分数从82变为87
《数据库原理与应用》(第三版)书后上机练习题——第六章_第48张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第49张图片

题35.将选课人数最少的课程的学分降低1分。

UPDATE Course SET Credit=Credit-1
	WHERE Cno IN (SELECT TOP 1 WITH TIES Course.cno
		FROM Course LEFT JOIN SC ON Course.cno=Sc.cno
		GROUP BY Course.cno
		ORDER BY COUNT(Sno))

图中的代码是错误的!看上面的代码
数据库基础、数据结构、操作系统的学分从4、5、4变为3、4、3
《数据库原理与应用》(第三版)书后上机练习题——第六章_第50张图片
《数据库原理与应用》(第三版)书后上机练习题——第六章_第51张图片
如有大佬发现错误,还请指正,感谢!

你可能感兴趣的:(数据库,习题,#,数据库原理习题)