实验:数据库综合查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六:数据库综合查询

一、实验目的

1.掌握SELECT语句的基本语法和查询条件表示方法;

2.掌握查询条件种类和表示方法;

3.掌握连接查询的表示及使用;

4.掌握嵌套查询的表示及使用;

5.了解集合查询的表示及使用。

二、实验环境

已安装SQL Server 2005 企业版的计算机(13台);

具有局域网环境,有固定IP;

三、实验学时

2学时

四、实验要求

1.了解SELECT语句的基本语法格式和执行方法;

2.了解连接查询的表示及使用;

3.了解嵌套查询的表示及使用;

4.了解集合查询的表示及使用;

5.完成实验报告;

五、实验内容及步骤

以数据库原理实验5数据为基础,请使用T-SQL 语句实现进行以下操作:1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;

USE student

SELECT'课程号'=Cno,'课程名'=Cname,'先行课号'=Cpno,'学分'=Ccredit

FROM course

WHERE

SUBSTRING(Cname,1,3)='DB_'AND

SUBSTRING(RIGHT(RTRIM(Cname),3),1,1)='s'

2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;USE student

SELECT'姓名'=student.Sname,'学号'=student.Sno,'课程号'=o,'课程名'=ame

FROM student,course,sc

student.Sno=sc.Sno AND

o=o AND

SUBSTRING(LTRIM(student.Sname),2,1)='阳'

3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修

课程号及成绩;

USE student

SELECT

'学号'=student.Sno,

'姓名'=student.Sname,

'所在院系'=student.Sdept,

'课程号'=o,

'成绩'=sc.Grade

FROM student,course,sc

WHERE

student.Sno=sc.Sno AND

o=o AND

(ame='数学'OR ame='大学英语')

4.查询缺少成绩的所有学生的详细情况;

USE student

SELECT student.*

FROM student,sc

student.Sno=sc.Sno AND

sc.Grade IS NULL

5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;

USE student

SELECT*

FROM student

WHERE

Sname!='张力'AND

Sage!=(SELECT Sage FROM student WHERE Sname='张力')

6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成

绩;

USE student

DECLARE @ZL_AVG INT

SET @ZL_AVG=(

SELECT AVG(sc.Grade)

FROM sc,student

WHERE sc.Sno=student.Sno AND student.Sname='张力'

GROUP BY sc.Sno,student.Sno)

SELECT DISTINCT

'姓名'=student.Sname,

'平均成绩'=AVG(sc.Grade)

FROM student,sc

WHERE sc.Sno=student.Sno

GROUP BY sc.Sno,student.Sno,student.Sname

HAVING AVG(sc.Grade)>@ZL_AVG

7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。

其中已修学分为考试已经及格的课程学分之和;

USE student

SELECT DISTINCT

'学号'=student.Sno,

'姓名'=student.Sname,

'所在院系'=student.Sdept,

'已修学分'=SUM(CASE WHEN sc.Grade>=60 THEN redit*1 ELSE0 END) FROM student,sc,course

WHERE sc.Sno=student.Sno AND o=o

GROUP BY student.Sno,student.Sname,student.Sdept

8.列出只选修一门课程的学生的学号、姓名、院系及成绩;

USE student

SELECT

'姓名'=student.Sname,

'院系'=student.Sdept,

'成绩'=sc.Grade

FROM student,sc

WHERE student.Sno=sc.Sno AND

student.Sno=ANY(SELECT Sno FROM sc GROUP BY Sno HAVING COUNT(Cno)=1)

9.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;USE student

SELECT

'学号'=student.Sno,

'姓名'=student.Sname,

'课程号'=o

FROM student,sc

WHERE student.Sno=sc.Sno AND

student.Sname!='张力'AND

o=ANY(SELECT o FROM sc,student WHERE sc.Sno=student.Sno AND student.Sname='张力')

10.只选修“数据库”和“数据结构”两门课程的学生的基本信息;

USE student

SELECT

'学号'=student.Sno,

'姓名'=student.Sname,

相关文档
最新文档