数据库实验4:数据库的简单查询和连接查询实验
一、实验目的
使学生掌握 SQL Server 查询分析器的使用方法,加深对 SQL 和 Transact-SQL 语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
二、实验内容
本实验的主要内容是:
1)、 简单查询操作
该实验包括投影、选择条件表达,数据排序,使用临时表等。
2)、 连接查询操作
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
三、实验方法
1)、 将查询需求用 Transact-SQL 语言表示。
2)、 在 SQL Server 查询分析器的输入区中输入 Transact-SQL 查询语句。
3)、 设置查询分析器结果区为 Standard Execute( 标准执行 ) 或 Execute to Grid 方式。
4)、 发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。
5)、 查询分析器及使用方法。查询分析器是在开发数据库应用系统时使用最多的工具。查询分析器的主要作用是编辑 Transact-SQL ,将其发送到服务器,并将执行结果及分析显示出来 ( 或进行存储 ) 。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。
查询分析器的界面如图 3-16 所示。在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是 SQL 代码区域,用于输入 SQL 的查询语句; 右下方为结果区,用于显示查询结果和分析 结果。对于 TSQL 语句的其执行结果,在结 果区中可以有 4 种不同的输出形式:标准执 行将结果直接显示的结果区;网格执行将结 果以表格形式显示的结果区;计划执行显示 执行计划;索引分析为在结果区中显示查询的索引情况。上述输出形式,可以通过菜单或按钮选择。
图 3-16 SQL Server 2000 查询分析器
四、实验步骤
1 .基本操作实验
(1)、 简单查询实验
1)、 Transact-SQL 语句表示下列操作,在学生选课库中实现其数据查询操作:
●求计算机系学生的学号和姓名。
select 学号,姓名
from 学生
where 所在系='计算机'
●求选修了课程的学生学号。
select distinct 选课.学号,姓名
from 学生,选课
where 选课.学号=学生.学号
●求选修 101 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
select 学号,成绩
from 选课
where 课程号='101'
order by 成绩 desc, 学号 asc;
求选修课程 101 且成绩在 80 ~ 90 分之间的学生学号和成绩,并将成绩乘以系数 0.8 输出。
select 学号,成绩*0.8 '成绩'
from 选课
where 课程号='101' and 成绩>80 and 成绩<90;
求数学系或计算机系姓张的学生的信息。
select *
from 学生
where 姓名 like '张%';
●求缺少了成绩的学生的学号和课程号。
select 学号,课程号
from 选课
where 成绩 is NULL;
(2)、 连接查询实验
用 Transact-SQL 语句表示,并在学生选课库中实现下列数据连接查询操作。
●查询每个学生的情况以及他 ( 她 ) 所选修的课程。
求学生的学号、姓名、选修的课程名及成绩。
●求选修 101 课程且成绩为 90 分以上的学生学号、姓名及成绩。
●查询每一门课的间接先行课 ( 即先行课的先行课 ) 。
2 .提高操作实验
1)、 按表 3-1 的格式,建立职工部门库和职工、部门表,并向表中输入数据。
2)、 Transact-SQL 语句表示职工和部门之间的内连接、左外部连接和右外部连接,在职工部门库中实现其数据内连接和各种外查询操作。
表 3-1 职工和部门表数据
职工表
职工号 姓名 性别 年龄 所在部门
1010 李勇 男 20 11
1011 刘晨 女 19
1012 王敏 女 22 12
1014 张立 男 21 13
部门表
部门号 部门名称 电话
11 生产科 566
12 计划科 578
13 一车间 467
14 科研所
左连接查询
右连接查询
五、实验中的问题和提高。
掌握 SQL Server 查询分析器的使用方法,加深对 SQL 和 Transact-SQL 语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
六、注意事项
1)、 查询结果的几种处理方式。
2)、 内连接、左外部连接和右外部连接的含义及表达方法。
3)、 输入 SQL 语句时应注意,语句中均使用西文操作符号。
七、思考题
1)、 如何提高数据查询和连接速度。
1.合理使用索引2.避免或简化排序3.消除对大型表行数据的顺序存取4.避免相关子查询5.避免困难的正规表达式6.使用临时表加速查询7.用排序来取代非顺序存取
2)、 对于常用的查询形式或查询结果,怎样处理好 ?
可以建立视图方便查询、根据查询结果建立索引、 建立相应的存储过程。