实验三:数据查询

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

实验三:数据查询实验

(一)实验目的

了解在企业管理器或查询分析器中执行数据查询的方法;掌握SQL Server Query Analyzer中简单查询、连接查询、嵌套查询操作方法。(二)实验器材

Windows 2007平台 + SQL Server 2008系统。

(三)实验内容

(1)查询Student表中所有学生的学号、姓名和性别。

SELECT Sno, Sname, Ssex

FROM Student

(2)可以用“*”来选取数据表的全部列,查询Student表中所有学生的基本情况。

SELECT *

FROM Student

(3)在查询结果中增加计算列,还可修改数据列的显示名称。

查询Student表中所有学生的学号、姓名、性别和出生年份。

SELECT Sno 学号, Sname 姓名, Ssex 性别, Year(GetDate()) - Sage 出生年份

FROM Student

(4)使用WHERE子句,可以选择满足条件的部分记录,查询成绩在85~90分之间的学生情况。

SELECT Sno, Cno, Grade

FROM SC

WHERE Grade >= 85 AND Grade <= 90

(5)使用DISTINCT关键字,可以消除重复记录

查询有成绩的学生的学号。

SELECT DISTINCT Sno

FROM SC

(6)使用IN关键字,选择不连续条件的记录

查询学生成绩为80或85的学生的学号。

SELECT *

FROM SC

WHERE Grade IN (80, 85)

(7)使用谓词LIKE和通配符“%”或“_”,实现模糊查询

查询姓“张”的学生的基本情况。

SELECT *

FROM Student

WHERE Sname LIKE '张%'

注意:“%”代表0个或多个字符,“_”代表一个字符,这里一个汉字只占一个字符位置,这与系统的设置有关。

(8)使用ORDER BY子句,对查询结果进行排序

查询所有学生的C002号课的成绩,并按成绩由高向低排序。

SELECT *

FROM SC

WHERE Cno =‘C002’

ORDER BY Grade DESC

(9)使用TOP关键字,选择查询结果的前几条记录

例如:查询2号课成绩最高的学生记录。

SELECT TOP 1 *

FROM SC

WHERE Cno =‘C002'

ORDER BY Grade DESC

注意:如果2号课成绩存在并列最高,则使用下面的SQL语句。

SELECT TOP 1 WITH TIES *

FROM SC

WHERE Cno = 'C002'

ORDER BY Grade DESC

(10)用WHERE子句指定连接条件

查询所有有C002号课程成绩的学生的学号、姓名和成绩。

SELECT Student.Sno, Sname, Grade

FROM Student, SC

WHERE Student.Sno = SC.Sno AND Cno = 'C002'

(11)将查询结果存储到表中

将总分在200分以上的学生的情况(学号、姓名、性别、总成绩)存储到数据表GradeList中,假设数据表GradeList不存在。

SELECT A.Sno, Sname, Ssex, SUM(Grade) AS sumGrade

INTO GradeList

FROM Student A, SC

WHERE A.Sno = SC.Sno

GROUP BY A.Sno, Sname, Ssex

HAVING (SUM(SC.Grade) >= 200)

该语句执行成功后,在企业管理器中可以看到已经创建的数据表GradeList,并将查询结果是存储在该表中了。

(12)将查询结果保存到变量中

查询学号为200215121的学生c001号课的成绩,将其保存到变量Grade中。

DECLARE @Grade INT --定义变量

SELECT @Grade = Grade --给变量赋值

FROM SC

WHERE Sno = '200215121'

PRINT @Grade --显示变量的值

注意:要将查询结果保存到变量中,只能将查询结果集中第一条记录的值赋给变量。

(13)查询选修了C002号课程的学生姓名。(例5-31)

(14)查询学号为20121323001的学生姓名、院系、课程号及成绩。(例5-32)

(15)查询被选修了的课程的课程号、课程名、该课程的学生选修人数及课程平均分。(例5-34)

(16)为SE学院的所有学生创建一个学生信息视图。

(17)为讲授“数据结构”课程的教师创建一个DS_Teacher视图,

包括课程编号、课程名称和教师姓名。

(18)删除DS_Teacher视图。

3、分析设计部分

在学生选课库中实现下列数据查询操作,并写出相应的SQL脚本。

(1)求选修C003号课程的学生学号和成绩,结果按成绩降序排列,如成绩同按学号升序排列

(2)求选修课程C002成绩在80-90之间的学生学号和成绩,并将成绩乘以0.8输出

(3)求数学或计算机系姓’张’的学生的信息

(4)求缺少了成绩的学生的学号和课程号

(5)查询各门课程及相应的选课人数。

(6)查询总成绩在200分以上的学生的学号、总成绩和平均成绩

(7)在FROM子句中用INNER JOIN连接符指定连接条件查询所有有C002号课程成绩的学生的学号、姓名和成绩。

(8)查询学生中年龄相同的学生情况(使用自连接查询)。

(9)查询所有学生的总成绩(包括没有成绩的学生)、学号和姓名(外部连接查询)。

(10)查询某课程成绩在90分以上的学生的学号和姓名(使用谓词IN 连接子查询)。

(11)查询有课程成绩的学生的学号和姓名(使用谓词EXISTS连接子查询)。

+

相关文档
最新文档