贵州大学实验报告
学院:电子科学与信息技术
专业:
班级:061
姓名
实验时间
实验项目名
称
学号
指导教师
戴单
实验组
成绩
数据库的简单查询和连接查询
实
掌握 SQL Server 查询分析器的使用方法,加深对 SQL 语言的查询语句的理解。熟练掌
验
握简单表的数据查询、数据排序和数据连接查询的操作方法。进一步掌握涉及一个以上
目
数据表的查询。多表之间的连接包括等值连接、自然连接、非等值连接、自身连接、外
的
连接、复合条件连接。
实
本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。开始实验前,必须进
验
行预习,写出实现所有查询要求的 SQL 语句。实验过程中,先集中由老师进行具体要求
要
和注意事项的讲解,然后各自独立在机器上完成实验。实验过程中出现问题,在实验指
求
导老师帮助下解决。
1、将查询需求用 SQL 语言表示。
实
验
原
理
2、在 SQL Server 查询分析器的输入区中输入 SQL 查询语句。
3、设置查询分析器结果区为 Standard Execute(标准执行)或 Execute to Grid
方式。
4、发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。
5、查询分析器及使用方法
查询分析器是在开发数据库应用系统时使用最多的工具。查询分析器的主要作用是
编辑 SQL 语句,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。
查询分析功能主要通过测试查询成本,判断该查询是否需要增加索引以提高查询速
度,并可以实现自动建立索引的功能。
在查询分析器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上
方是 SQL 代码区域,用于输入 SQL 的查询语句;右下方为结果区,用于显示查询结
果和分析结果。对于 SQL 语句的执行结果,在结果区中可以有 4 中不同的输出形式;
标准执行将结果直接显示在结果区;网格执行将结果以表格形式显示在结果区;计
实
验
仪
器
实
验
步
骤
划执行显示执行计划;索引分析为在结果区中显示查询的索引情况。上述输出形式,
可以通过菜单或按钮选择。
硬件条件:个人计算机。
软件条件:Windows XP; MS SQL Server 2000 或 2005。
1、基本操作实验
(1)简单查询实验
1)用 SQl 语句表示下列操作,在学生选课库中实现其数据查询操作。
①求数学系学生的学号和姓名。
②求选修了课程的学生学号。
③求选修 C1 课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成
绩相同则按学号升序排列。
④求选修课程 C1 且成绩在 80~90 分之间的学生学号和成绩,并将成绩乘以系数 0.8
输出。
⑤求数学系或计算机系姓张的学生的信息。
⑥求缺少了成绩的学生的学号和课程号。
2)在图书读者库中实现其查询操作:将计算机类的书存入永久的计算机图书表中,
将借书日期在 2000 年以前的借阅记录存入临时的超期借阅表。
(2)连接查询实验
用 SQL 语句表示,并在学生选课库中实现下列数据连接查询操作:
①查询每个学生的情况以及他所选修的课程。
②求学生的学号、姓名、选修的课程名及成绩。
③求选修 C1 课程且成绩为 90 分以上的学生学号、姓名及成绩。
④查询每一门课的间接先行课(即先行课的先行课)。
2、提高操作实验
(1)按如下表的格式,建立职工部门库和职工表、部门表,并向表中输入数据。
表(ZG)
职 工 号
姓名(xm)
性别(xb)
年龄(nl)
所 在 部 门
(zgh)
1010
1011
1012
1014
李勇
刘晨
王敏
张立
男
女
女
男
20
19
22
21
(bmh)
11
12
13
部门表(BM)
部门号(bmh)
部门名称(bmmc)
电话(dh)
11
12
13
14
生产科
计划科
一车间
科研所
566
578
467
(2)用 SQL 语句表示职工和部门之间的内连接、左外部连接和右外部连接,在职
工部门库中实现其数据内连接和各种外查询操作。
1、简单查询操作
该实验包括投影、选择条件表达式、数据排序、使用临时表等。
2、连接查询操作
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左
连接、右连接和自连接等。
1、基本操作实验
1 求数学系学生的学号和姓名
select Sno,Sname
from Student
where Sdept='MA';
实
验
内
容
实
验
数
据
2 求选修了课程的学生学号
use Student
select distinct Sno
from SC;
③求选修 C1 课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相
同则按学号升序排列。
select Sno,grade
from SC
where c#='c1'
order by grade desc ,Sno;
④求选修课程 C1 且成绩在 80~90 分之间的学生学号和成绩,并将成绩乘以系数 0.8 输
出。
select Sno,grade*0.8
from SC
where c#='c1' and grade between 80 and 90;
5 求数学系或计算机系姓张的学生的信息。
select *
from Student
where Sdept in ('MA','CS')and Sname like '张%';
6 求缺少了成绩的学生的学号和课程号。
select Sno,c#
from SC
where grade is null;
2)在图书读者库中实现其查询操作:将计算机类的书存入永久的计算机图书表中,将
借书日期在 2000 年以前的借阅记录存入临时的超期借阅表。
use lib
create table BM
(bmh char(10) not null,
bmmc char(30) not null,
dh char(11),
primary key(bmh),);
构建职工表:
use lib
create table ZG
(zgh char(10) not null,
xm char(30) not null,
xb char(2) not null,
nl smallint ,
bmh char(10) not null,
primary key (zgh),
foreign key(bmh)references BM(bmh),
check (xb in('男','女')));
(2)向BM表中插入数据
use lib
insert into BM
(bmh,bmmc,dh)
select 11,'生产科',566
union select 12,'计划科',578
union select 13,'一车间',467
union select 14,'科研所',null;
(3)向ZG表中插入数据:
use lib
insert into ZG
(zgh,xm,xb,nl,bmh)
select 1010,'李勇','nan',20,11
union select 1011,'刘晨','女',19,null
union select 1012,'王敏','女',22,12
union select 1014,'张立','男',21,13;
(4)内连接:
select *
from ZG inner join BM
on ZG.bmh=Bm.bmh;
(5)左外连接:
select *
from ZG left join BM
on ZG.bmh=Bm.bmh;
(6)右外连接:
select *
from ZG right join BM
on ZG.bmh=BM.bmh;
(7)自身内连接:
select *
from ZG A inner join ZG B
on A.bmh=B.bmh;
(8)自身左外连接:
select *
from ZG A left join ZG B
on A.bmh=B.bmh;
(9)自身右外连接:
select *
from ZG A right join ZG B
on A.bmh=B.bmh;
数据库查询过程中,连接非常重要。连接是 SQL 查询语句的重点和难点,在查询过程中
涉及到两张及以上的表格查询学要使用连接查询或者求笛卡儿积,这其中包括等值连
接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
不过在实验中,经常不知道是左连接还是右连接,内连接还是外连接经常会出现问题。
这需要我们不断熟悉 SQL 语句,多联系,多用 SQL 语句(特别是连接查询语句)在电脑
上实验,只有这样才能不断了解和熟悉数据库查询语句,这样才能不断发现问题,改正
问题。
实
验
总
结
指
导
教
师