数据库作业
目录
- [例3.16] 查询全体学生的学号与姓名。
- [例3.17] 查询全体学生的姓名、学号、所在系。
- [例3.18] 查询全体学生的详细记录。
- [例3.19] 查全体学生的姓名及其出生年份。
- [例3.20] 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。
- [例3.21] 查询选修了课程的学生学号。
- [例3.22] 查询计算机科学系全体学生的名单。
- [例3.23] 查询所有年龄在20岁以下的学生姓名及其年龄。
- [例3.24] 查询考试成绩有不及格的学生的学号。
- [例3.25] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、 系别和年龄
- [例3.26] 查询年龄不在20~23岁之间的学生姓名、系别和年龄。
- [例3.27]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
- [例3.28]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
- [例3.29] 查询学号为200215126的学生的详细情况。
- [例3.30] 查询所有姓刘学生的姓名、学号和性别。
- [例3.31] 查询姓"欧阳"且全名为三个汉字的学生的姓名。
- [例3.32] 查询名字中第2个字为"阳"字的学生的姓名和学号。
- [例3.33] 查询所有不姓刘的学生姓名。
- [例3.34] 查询DB_Design课程的课程号和学分。
- [例3.35] 查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。
- [例3.36] 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
- [例3.37] 查所有有成绩的学生学号和课程号。
- [例3.38] 查询计算机系年龄在20岁以下的学生
- [例3.39] 查询信息系(IS)、数学系(MA)和计算机科 学系(CS)学生的姓名和性别。
- [例3.40] 查询选修了0204号课程的学生的学号及其成绩,查询结果按分数降序排列。
- [例3.41] 查询学生总人数。
- [例3.42] 查询选修了课程的学生人数。
- [例3.43] 计算0204号课程的学生平均成绩。
- [例3.44] 查询选修0204号课程的学生最高分数。
- [例3.45]查询学生200215126选修课程的总学分数。
- [练习1] 求学号为200215127学生的总分和平均分。
- [练习2] 求选修0202号课程的最高分、最低分及之间相差的分数。
- [练习3] 求学校中共有多少个系。
- [例3.46] 求各个课程号及相应的选课人数。
- [例3.47] 查询选修了2门以上课程的学生学号。
- [例3.48] 查询平均成绩大小等于90分的学生学号和平均成绩。
[例3.16] 查询全体学生的学号与姓名。
SELECT Sno,
Sname
FROM Student;
[例3.17] 查询全体学生的姓名、学号、所在系。
SELECT Sname,
Sno,
Sdept
FROM Student;
[例3.18] 查询全体学生的详细记录。
SELECT Sno,
Sname,
Ssex,
Sage,
Sdept
FROM Student;
SELECT *
FROM Student;
[例3.19] 查全体学生的姓名及其出生年份。
SELECT Sname,
2021 - Sage
/*当年的年份为2021年*/
FROM Student;
[例3.20] 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。
SELECT Sname NAME,
'Year of Birth:' BIRTH,
2021 - Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student;
[例3.21] 查询选修了课程的学生学号。
- 如果没有指定DISTINCT关键词,则缺省为 ALL
SELECT Sno
FROM SC;
SELECT ALL Sno
FROM SC ;
- 指定DISTINCT关键词,去掉表中重复的行
SELECT DISTINCT Sno
FROM SC ;
[例3.22] 查询计算机科学系全体学生的名单。
SELECT Sname
FROM Student
WHERE Sdept = 'CS';
[例3.23] 查询所有年龄在20岁以下的学生姓名及其年龄。
SELECT Sname,
Sage
FROM Student
WHERE Sage < 20;
[例3.24] 查询考试成绩有不及格的学生的学号。
SELECT DISTINCT Sno
FROM SC
WHERE Grade < 60 ;
[例3.25] 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、 系别和年龄
SELECT Sname,
Sdept,
Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
[例3.26] 查询年龄不在20~23岁之间的学生姓名、系别和年龄。
SELECT Sname,
Sdept,
Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
[例3.27]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,
Ssex
FROM Student
WHERE Sdept IN ('IS', 'MA', 'CS');
[例3.28]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
SELECT Sname,
Ssex
FROM Student
WHERE Sdept NOT IN ('IS', 'MA', 'CS');
[例3.29] 查询学号为200215126的学生的详细情况。
SELECT *
FROM Student
WHERE Sno LIKE '200215126';
SELECT *
FROM Student
WHERE Sno = '200215126';
[例3.30] 查询所有姓刘学生的姓名、学号和性别。
SELECT Sname , Sno , Ssex
FROM Student
WHERE Sname LIKE '刘%';
[例3.31] 查询姓"欧阳"且全名为三个汉字的学生的姓名。
SELECT Sname
FROM Student
WHERE Sname LIKE '欧阳__' ;
[例3.32] 查询名字中第2个字为"阳"字的学生的姓名和学号。
SELECT Sname,
Sno
FROM Student
WHERE Sname LIKE '__阳%';
[例3.33] 查询所有不姓刘的学生姓名。
SELECT Sname,
Sno,
Ssex
FROM Student
WHERE Sname NOT LIKE '刘%';
[例3.34] 查询DB_Design课程的课程号和学分。
SELECT Cno,
Ccredit
FROM Course
WHERE Cname LIKE 'DB\_Design' ESCAPE '\';
[例3.35] 查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。
SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%i_ _' ESCAPE ' \ ';
无
[例3.36] 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
SELECT Sno , Cno
FROM SC
WHERE Grade IS NULL;
无
[例3.37] 查所有有成绩的学生学号和课程号。
SELECT Sno , Cno
FROM SC
WHERE Grade IS NOT NULL ;
[例3.38] 查询计算机系年龄在20岁以下的学生
姓名。
SELECT Sname
FROM Student
WHERE Sdept = 'CS'
AND Sage < 20;
[例3.39] 查询信息系(IS)、数学系(MA)和计算机科 学系(CS)学生的姓名和性别。
SELECT Sname,
Ssex
FROM Student
WHERE Sdept IN ('IS', 'MA', 'CS');
SELECT Sname, Ssex
FROM Student
WHERE Sdept = 'IS'
OR Sdept = 'MA'
OR Sdept = 'CS';
[例3.40] 查询选修了0204号课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECT Sno,
Grade
FROM SC
WHERE Cno = '0204'
ORDER BY Grade DESC;
[例3.41] 查询学生总人数。
SELECT COUNT(*)
FROM Student;
[例3.42] 查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno)
FROM SC;
[例3.43] 计算0204号课程的学生平均成绩。
SELECT AVG(Grade)
FROM SC
WHERE Cno = '0204';
[例3.44] 查询选修0204号课程的学生最高分数。
SELECT MAX(Grade)
FROM SC
WHERE Cno = '0204' ;
[例3.45]查询学生200215126选修课程的总学分数。
SELECT SUM(Ccredit)
FROM SC,
Course
WHERE Sno = '200215126'
AND SC.Cno = Course.Cno;
[练习1] 求学号为200215127学生的总分和平均分。
SELECT SUM(Grade) AS TotalScore,
AVG(Grade) AS AveScore
FROM SC
WHERE (SNo = '200215127');
[练习2] 求选修0202号课程的最高分、最低分及之间相差的分数。
SELECT MAX(Grade) AS MaxScore,
MIN(Grade) AS MinScore,
MAX(Grade) - MIN(Grade) AS Diff
FROM SC
WHERE (CNo = '0202');
[练习3] 求学校中共有多少个系。
SELECT COUNT(DISTINCT Sdept) AS DeptNum
FROM Student
[例3.46] 求各个课程号及相应的选课人数。
SELECT Cno,
COUNT(Sno)
FROM SC
GROUP BY Cno;
[例3.47] 查询选修了2门以上课程的学生学号。
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) > 2;
[例3.48] 查询平均成绩大小等于90分的学生学号和平均成绩。
SELECT Sno,
AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade) >= 90