数据库作业

目录

[例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] 查询选修了课程的学生学号。

  1. 如果没有指定DISTINCT关键词,则缺省为 ALL
SELECT Sno 
FROM SC;

SELECT ALL Sno 
FROM SC ;

  1. 指定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

posted @ 2021-04-19 13:24  POI~20181223  阅读(215)  评论(0编辑  收藏  举报