以下SQL语句均在SQL2008环境下执行
(1) 按照《数据库系统概论》(第五版)P79页的学生课程数据库及数据实现以下查询:
-
- 查询数学系(‘MA’)年龄不到21岁的所有女生的姓名和出生年份。
具体代码:
--查询数学系(‘MA’)年龄不到岁的所有女生的姓名和出生年份
SELECT Sname, YEAR(GETDATE())-Sage BIRTHDAY
FROM STUDENT
WHERE Sage<=21 AND Sdept='MA'
-
- 查询已被学生所选课的课号。
具体代码:
--查询已被学生所选课的课号
SELECT DISTINCT Cno
FROM SC
-
- 查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名。
具体代码:
--查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名
SELECT Sno 学号, Cno 课程号
FROM SC
WHERE Grade is NOT NULL
-
- 查询选修了’2’号课程的成绩在80~90分(包括80和90分)之间的学生的学号和成绩。
具体代码:
--查询选修了’2’号课程的成绩在~90分(包括和分)之间的学生的学号和成绩
SELECT Sno, Grade
FROM SC
WHERE Cno=2 AND GRADE>=80 AND GRADE<=90
-
- 查询姓名中包含‘晨’这个汉字的学生信息。
具体代码:
--查询姓名中包含‘晨’这个汉字的学生信息
SELECT *
FROM STUDENT
WHERE Sname LIKE '%晨%'
-
- 查询姓名以‘立’字结尾,包含二个汉字的学生信息。
具体代码:
--查询姓名以‘立’字结尾,包含二个汉字的学生信息
SELECT *
FROM STUDENT
WHERE Sname LIKE '_立'
-
- 根据student表,统计每一年龄组的男生人数,只显示那些男生人数超过10人的年龄组。
具体代码:
--根据student表,统计每一年龄组的男生人数,只显示那些男生人数超过10人的年龄组
SELECT Sage, COUNT(Sage) 年龄组个数
FROM STUDENT
WHERE Ssex='男'
GROUP BY Sage
HAVING COUNT(Sage)>10
-
- 根据SC表,检索学生学号和平均成绩。
具体代码:
--根据SC表,检索学生学号和平均成绩
SELECT Sno, AVG(GRADE) 平均成绩
FROM SC
GROUP BY Sno
(2) 按照《数据库系统概论》P70-71页中的SPJ数据库及数据实现以下查询:
- 查询地点在‘天津’、‘上海’的供应商代码和供应商名字。
具体代码:
--查询地点在‘天津’、‘上海’的供应商代码和供应商名字
SELECT SNO, SNAME
FROM S
WHERE CITY='天津' OR CITY='上海'
- 查询各个供应商所供应的零件的总数,要求对查询结果降序显示
具体代码:
--查询各个供应商所供应的零件的总数,要求对查询结果降序显示
SELECT SNO, SUM(QTY) 零件总数
FROM SPJ
GROUP BY SNO
ORDER BY SUM(QTY) DESC