实验二 数据查询(带答案)
发布时间:2017-05-04 11:06:51
发布时间:2017-05-04 11:06:51
实验二 数据查询(4学时)
实验目的:
(1) 掌握SQL语言的数据查询语句
实验内容:
(1) 将学生成绩数据库(XSCJ)导入SQL SERVER 2008,并做如下查询。
(注:数据文件和日志文件从服务器上下载直接导入))
1) 查询选修了课程的学生的学号;
2) 查询全体学生的姓名和出生年份,并将列别名改为XM和CSNF;
3) 查询年龄在18到20(包括18岁和20岁)之间学生的学号、姓名和系。
4) 查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
5) 用LIKE查询课程名为DB_S程的课程号和学分。
6) 查所有有成绩的学生学号和课程号。
7) 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄升序排列
8) 查询选修了课程的学生人数。
9) 计算1号课程的学生平均成绩。
10) 查询有3人以上(含3人)同学选修课程的课程号。
11) 查询1号课程的间接先修课。
12) 查询每个学生的学号、姓名、选修的课程名及成绩。
13) 找出每个学生等于他选修课程平均成绩的课程号。
(2)将以下数据录入上次实验建立的BSXT数据库,并完成以下查询。
Student(学生表)
学号 | 姓名 | 性别 | 班级 | 联系电话 | 分组 | 密码 |
0706034101 | 王鹏 | 男 | 07060341 | 135******** | 1 | 123456 |
0706034102 | 王飞飞 | 女 | 07060342 | 135******** | 1 | 123456 |
0706034103 | 李夏 | 女 | 07060342 | 135******** | 2 | 123456 |
0706034104 | 李小东 | 男 | 07060341 | 135******** | 2 | 123456 |
0706034105 | 代园园 | 女 | 07060341 | 135******** | 1 | 123456 |
0706034106 | 庞聪 | 男 | 07060341 | 135******** | 1 | 123456 |
0706034107 | 侯超 | 男 | 07060342 | 135******** | 2 | 123456 |
Teacher(教师表)
教师号 | 姓名 | 性别 | 系别 | 学历 | 职称 | 教师 身份 | 联系 电话 | 邮箱地址 | 分组 | 密码 |
T01 | 朱龙 | 男 | 计算机科学与技术系 | 博士 | 教授 | 0 | 138******** | zhongl@126.com | 1 | 123456 |
T02 | 杨坚 | 男 | 网络工程系 | 博士 | 副教授 | 1 | 138******** | yangj@163.com | 2 | 123456 |
T03 | 李霞 | 女 | 计算机科学与技术系 | 硕士 | 讲师 | 1 | 138******** | lix@163.com | 1 | 123456 |
Topic(选题情况表)
编号 | 设计题目 | 题目 状态 | 设计任务 和要求 | 备注 | 出题教 师号 | 选题学 生学号 |
H01 | 实验室预约系统的设计与实现 | 已选 | T01 | 0706034101 | ||
H02 | 个人博客系统的设计与实现 | 已选 | T01 | 0706034102 | ||
H03 | 基于XML的电子病例管理系统 | 已选 | T02 | 0706034103 | ||
H04 | 聊天工具的设计与实现 | 已选 | T02 | 0706034104 | ||
H05 | FTP搜索引擎设计与实现 | 已选 | T03 | 0706034105 | ||
1) 查询全体学生的学号和姓名和电话。
2) 查询全体学生的基本情况。
3) 查询带了毕业生的老师的教师号。
4) 查询教师“朱龙”基本情况。
5) 查询所有姓“王”同学的基本情况。
6) 统计每种学历老师的人数。
7) 查询1组老师所带毕业生的基本情况(包括学号,姓名,教师号,教师姓名,毕业设计题目)(注:1组老师只能带1组的学生)
8) 查询所有学生的选题情况(包括没有选题的学生),包括学号,姓名,题目名称,教师名称。(注:要求老师的组号和学生的组号相一致.)
/*
--1) 查询选修了课程的学生的学号;
SELECT DISTINCT Sno FROM SC
*/
/*
--2) 查询全体学生的姓名和出生年份,并将列别名改为XM和CSNF;
SELECT Sname XM,2017-Sage CSNF FROM Student
*/
/*
--3) 查询年龄在18到20(包括18岁和20岁)之间学生的学号、姓名和系。
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sage BETWEEN 18 AND 20
*/
/*
--4) 查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ('IS','MA','CS')
*/
/*
--5)用LIKE查询课程名为DB_S程的课程号和学分。
SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB_S'
*/
/*
--6)查所有有成绩的学生学号和课程号。
SELECT Sno,Cno
FROM SC
*/
/*
--7)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄升序排列
SELECT *
FROM Student
ORDER BY Sdept,Sage
*/
/*
--8)查询选修了课程的学生人数。
SELECT COUNT(DISTINCT Sno)
FROM SC
*/
/*
--9)计算1号课程的学生平均成绩。
SELECT AVG(Grade)
FROM SC
WHERE Cno='1'
*/
/*
--10)查询有3人以上(含3人)同学选修课程的课程号。
SELECT Cno
FROM SC
GROUP BY Cno
HAVing COUNT(*)>=3
*/
/*
--11)查询1号课程的间接先修课。
SELECT SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cno='1' AND FIRST.Cpno=SECOND.Cno
*/
/*
--12)查询每个学生的学号、姓名、选修的课程名及成绩。
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno
*/
/*
--13)找出每个学生等于他选修课程平均成绩的课程号。
SELECT Sno,Cno
FROM SC x
WHERE Grade=(SELECT AVG(Grade)
FROM SC y
WHERE x.Sno=y.Sno)
*/
--------------------------------------------------------
/*
--1)查询全体学生的学号和姓名和电话。
SELECT Sno,Sname,Stel
FROM Student
*/
/*
--2)查询全体学生的基本情况。
SELECT *
FROM Student
*/
/*
--3)查询带了毕业生的老师的教师号。
SELECT DISTINCT Tno
FROM Topic
*/
/*
--4)查询教师“朱龙”基本情况。
SELECT *
FROM Teacher
WHERE Tname='朱龙'
*/
/*
--5)查询所有姓“王”同学的基本情况。
SELECT *
FROM Student
WHERE Sname LIKE '王%'
*/
/*
--6)统计每种学历老师的人数。
SELECT Tdegree,COUNT(*)
FROM Teacher
GROUP BY Tdegree
*/
/*
--7)查询1组老师所带毕业生的基本情况(包括学号,姓名,教师号,教师姓名,毕业设计题目)(注:1组老师只能带1组的学生)
SELECT Student.Sno,Sname,Teacher.Tno,Tname,Hname
FROM Student LEFT OUTER JOIN TOPIC ON(Student.Sno=Topic.Sno),Teacher
WHERE Teacher.Tgroup='1' AND Student.Sgroup=Teacher.Tgroup AND Teacher.Tno=Topic.Tno
*/
/*
8)查询所有学生的选题情况(包括没有选题的学生),包括学号,姓名,题目名称,教师名称。(注:要求老师的组号和学生的组号相一致.)
SELECT Student.Sno,Sname,Hname,Tname
FROM Student LEFT OUTER JOIN (SELECT Hname,Tname,Sno
FROM Topic,Teacher
WHERE Topic.Tno=Teacher.Tno) TEMP ON (Student.Sno=TEMP.Sno)
*/