数据库实验四:SQL数据查询
一、实验目的与要求:
1.实验目的
熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。 实验内容 :
在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化: 1、 一般简单查询
(1) 不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。 (2) 查询某个表中的所有记录。 (3) 使用单个条件的简单查询。
(4) 使用多个条件(AND关系)的查询。 (5) 使用多个条件(OR关系)的查询。
(6) 使用多个条件(混合AND和OR关系)的查询。 (7) 使用带NOT运算的查询。 (8) 使用BETWEEN···AND···的查询。 (9) 使用NOT···BETWEEN···AND···的查询。 (10) 使用LIKE运算符的字符串匹配查询。 (11) 使用LIKE运算符的模板匹配查询。 (12) 查询空值和非空值的查询 (13) 结果要求排序的查询
(14) 查询结果按多列排序,并分别要求升序和降序的查询。 (15) 使用TOP显示前若干记录的查询。
(16) 使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并
显示。
2、连接查询
(17) 两个关系的连接查询。
(18) 带其他查询条件的两个关系的连接查询。 (19) 多个关系(三个以上)的连接查询。 (20) 两个关系的广义笛卡尔积运算结果。
(21) 根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接
的结果。
(22) 查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和
课程性质等4个字段。
(23) 查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和
课程性质等4个字段,要求结果中列出所有教师信息(即包括不是任何课程责任教师的教师信息)。
(24) 查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和
课程性质等4个字段,要求结果中能够反映目前没有确定责任教师的课程信息。
(25) 查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和
课程性质等4个字段,要求结果中既能够反映目前不是责任教师的教师信息,又能反映目前没有确定责任教师的课程信息。 提示:(22)~(25)分别用内连接、左连接、右连接完成,分析它们的效果。 3、嵌套查询(注意使用ANY、ALL和EXISTS) (26) 使用IN运算的简单嵌套查询。 (27) 使用NOT IN运算的简单嵌套查询。
(28) 使用关系运算(如等于)的简单嵌套查询。 (29) 使用ANY或SOME的简单嵌套查询。 (30) 使用ALL的简单嵌套查询。 (31) 查询院系名称含“计算机”、职称为教授、所负责教程为必修课的教
师姓名、职称、课程名称和课程学时等信息(分别用嵌套查询和连接查询完成,分析各自的效率)。
(32) 设计两个内外层互相关的嵌套查询。 (33) 使用EXISTS的嵌套查询。 (34) 使用NOT EXISTS的嵌套查询。 4、汇总和分组查询
(35) 使用COUNT统计数目的查询。 (36) 使用SUM计算合计的查询。
(37) 一次完成求和、计数、计算平均值的查询。
(38) 查询所有课程的成绩都大于60分的学生的平均分最高的学生信息。 (39) 查询数据库课程的成绩大于70分的、所有课程平均分最高的学生信
息。
(40) 查询每个学生的平均成绩。
(41) 查询每个学生的所有成绩的最高成绩、最低成绩、平均成绩和所考
课程的门数。
(42) 查询至少有10门必修课程考试成绩的每个学生的平均成绩。 (43) 设计2个使用COMPUTE···BY和COMPUTE的查询。 (44) 设计1个使用COMPUTE的查询。 (45) 设计1个使用COMPUTE···BY的查询。
二、实验内容
1、实验原理
SQL SELECT查询语句的一般格式是:
SELECT [ALL | DISTINCT] < 表达式>[, <表达式>…] FROM <表名>[,<表名>…] [WHERE <逻辑表达式>]
[GROUP BY <列名>[, <列名>…][HAVING<谓词>]]
[ORDER BY <列名> [ASC | DESC], [ <列名> [ASC | DESC]] …]
2、实验步骤与结果
(1)调出SQL Server2005软件的用户界面,进入SQL Server Management Studio。
(2)输入自己编好的程序。 (3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。 实验过程及相关程序: 1、一般简单查询
(1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。 select distinct 学号 from 选课
select 学号 from 选课
(2)查询某个表中的所有记录 查询教师表中的所有记录
(3)使用单个条件的简单查询 查询成绩大于50的学生的学号 select 学号 from 选课 where 成绩>50
(4)使用多个条件(AND关系)的查询 select 工资 from 教师
where 工资>200 and 工资<500
(5)使用多个条件(OR关系)的查询
select 工资 from 教师
where 工资<200 or 工资>500
(6)使用多个条件(混合AND和OR关系)的查询 select * from 学生
where (院系='2' and 生源='淮南') or (院系='6' and 生源='淮北')