实验二 数据查询(带答案)

发布时间:2017-05-04 11:06:51

实验二 数据查询(4学时)

实验目的:

(1) 掌握SQL语言的数据查询语句

实验内容:

(1) 将学生成绩数据库(XSCJ)导入SQL SERVER 2008,并做如下查询。

(注:数据文件和日志文件从服务器上下载直接导入))

1) 查询选修了课程的学生的学号;

2) 查询全体学生的姓名和出生年份,并将列别名改为XMCSNF;

3) 查询年龄在1820(包括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) 查询全体学生的姓名和出生年份,并将列别名改为XMCSNF;

SELECT Sname XM,2017-Sage CSNF FROM Student

*/

/*

--3) 查询年龄在1820(包括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)

*/

实验二 数据查询(带答案)

相关推荐