实验三 查询
实验3.2 连接查询
一、 实验目的
使学生熟练掌握SQL Server查询分析器的使用方法,加深对SQL 和 Transact-SQL语言查询语句的理解。熟练掌握数据连接查询中的主要操作方法。
二、 实验内容
1、自身连接、等值连接、自然连接、求笛卡儿积、一般内连接等。
2、外连接、左连接、右连接、全外连接等。
三、 实验步骤
1、基本操作实验
在查询分析器中,练习自身连接、等值连接、自然连接、求笛卡儿积、一般内连接等的查询。请完成以下习题:
(1) 请使用等值连接列出Northwind数据库中的产品表(Products)和供应商表(Suppliers)中每种商品对应的供货商信息(包括Productid,Productname Supplierid,Companyname,contactname,address,)。
(2)使用等值连接列出Pubs数据库中表authors和publishers表中位于同一城市的作者和出版社。
(3)使用非等值连接列出Pubs数据库中表sales和titles表中一次定购量(qty)大于图书当年销量(ytd_sales)5%的书店标识(stor_id)、图书标识(title_id)、一次定购量及年销量的5%。
(4)(选做)使用自身连接列出pubs数据库中表stores中所有位于同一州(state)的书店名称(stor_name)及其地址(stor_address)。
(5)查询来自城市(city)为“London”的客户所订的订单信息(customerid,companyname, orderid,city, 考虑将customers和orders表进行连接)。
(6)(选做)查询Pubs数据库中,来自“CA”州的作家所著图书信息。(作者姓名,所著图书编号、名称titles.title_id,title,au_fname,au_lname,可参考将authors,titles,titleauthor表进行连接)
(7)(选做)使用自身连接列出pubs数据库合著图书的标识(title_id)及其合著者姓名(au_fname, au_lname)。(需使用表titleauthor和authors)
2、提高操作实验
练习外连接、左连接、右连接、全外连接等的查询。
(1)使用外连接(左连接、右连接、完全外连接),列出Pubs数据库中表authors和publishers中的所有作者(au_lname)和出版社(pub_name),及他们所在的城市。
四、 实验小结
第二篇:数据库原理及应用实验报告 3
实验成绩
《数据库系统原理及应用》
实验报告
三
专业班级: 计科(卓)1101
学 号: 201116910233
姓 名: 范晓曈
指导教师: 苏小玲
20##年 10 月 25 日
实验三名称: T-SQL简单数据库查询
一、实验内容及要求
1.在实验二创建的数据库的基础上做查询,请在数据表中添加合适的记录以便能够验证查询结果
2.单表查询
(1)查询C001课程的最高分和最低分
(2)统计每个系的学生人数
(3)查询还没有考试的课程的课程号
3.连接查询
(1)统计每门课程的选课人数和考试最高分
(2)统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
(3)查询选修C002课程的学生的姓名和所在系
(4)查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果
(5)查询选课门数最多的前两位学生,列出他们的学号和选课门数
二、实验目的
熟练掌握变量的定义、赋值与使用;
熟练掌握常用基本运算符。
熟练掌握流程控制语句,尤其是条件语句和循环语句。
三、实验步骤及运行结果
1.插入数据
学生信息:
insert into Student
values ('201116910233','范晓曈','女','计科')
insert into Student
values ('201116910228','王铭','女','计科')
insert into Student
values ('201116910231','李贞','女','电信')
insert into Student
values ('201116910232','师楠','女','电信')
insert into Student
values ('201116910222','谢剑章','男','计科')
insert into Student
values ('201116910224','陈阳阳','男','计科')
老师信息:
insert into teacher
values('001','苏小玲','0001','3230')
insert into teacher
values('002','王晓松','0002','4333')
insert into teacher
values('003','郑丽萍','0003','4234')
课程信息:
insert into course
values('C001','0001','001','数据库','3~15')
insert into course
values('C002','0002','002','计算机网络','1~13')
insert into course
values('C003','0003','003','计算机系统结构','1~14')
insert into course
values('C004','0004','004','软件工程','1~11')
insert into course
values('C005','0005','005','C++','1~10')
选课信息:
insert into sc
values('201116910233','C001','2013.8.31','90','90')
insert into sc
values('201116910228','C001','2013.9.1','92','92')
insert into sc
values('201116910224','C001','2013.8.30','94','93')
insert into sc
values('201116910222','C001','2013.8.31','95','94')
insert into sc
values('201116910231','C001','2013.8.29',null,null)
insert into sc
values('201116910222','C002','2013.8.31','95','00')
insert into sc
values('201116910224','C002','2013.8.30','90','80')
insert into sc
values('201116910228','C002','2013.8.31','92','84')
insert into sc
values('201116910233','C002','2013.8.30','92','79')
insert into sc
values('201116910233','C003','2013.8.30','92','85')
insert into sc
values('201116910228','C003','2013.9.1','92','90')
insert into sc
values('201116910224','C003','2013.9.2','92','92')
insert into sc
values('201116910222','C003','2013.8.31','93','92')
insert into sc
values('201116910231','C004','2013.8.30',null,null)
insert into sc
values ('201116910231','C005','2013.8.31',null,null)
用户信息:
insert into admin
values('谢剑章','10222')
insert into admin
values('陈阳阳','10224')
insert into admin
values('王铭','10228')
insert into admin
values('范晓曈','10233')
insert into admin
values('李贞','10231')
insert into admin
values('师楠','10232')
系表信息:
insert into dept
values('1691','数据库','0001','办公楼')
insert into dept
values('1692','计算机','0002','5办公楼')
insert into dept
values('1693','计科','0003','6办公楼')
insert into dept
values('1694','软件','0004','6办公楼')
2.单表查询
(1)查询C001课程的实践成绩的最高分和最低分
select MAX(sscore) 最高分,MIN(sscore) 最低分
from sc where Cno = 'C001'
(2)查询C001课程的考试成绩的最高分和最低分
select MAX(kscore) 最高分,MIN(kscore) 最低分
from sc where Cno = 'C001'
(3)统计每个系的学生人数
select Sdept as 系名 ,COUNT(*) 人数
from student
group by Sdept order by Sdept
(4)查询还没有考试的课程的课程号
select cno as 课程号 from sc
where sscore is null
3.连接查询
(1)统计每门课程的选课人数和考试成绩最高分
select cno as 课程号,COUNT (sno) as 选课人数,MAX (sscore) as 最高分
from sc group by cno
(2)统计每门课程的选课人数和实践成绩最高分
select cno as 课程号,COUNT (sno) as 选课人数,MAX (kscore) as 最高分
from sc group by cno
(2)统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果
select sno as 学号, count(*) as 选课门数,sum(sscore) as 考试总成绩
from sc
group by sno
order by count(*)
(3)统计每个学生的选课门数和实践总成绩,并按选课门数升序显示结果
select sno as 学号, count(*) as 选课门数,sum(kscore) as 实践总成绩
from sc
group by sno
order by count(*)
(4)查询选修C002课程的学生的姓名和所在系
select sname as 姓名,Sdept as 所在系
from student s join sc on s.Sno=sc.sno
where cno='C002'
(5)查询考试成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果
select sname as 姓名,cno as 课程号,sscore as 考试成绩
from student s join sc on s.sno=sc.sno
where sscore >80
order by sscore desc
(6)查询考试成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果
select sname as 姓名,cno as 课程号,kscore as 实践成绩
from student s join sc on s.sno=sc.sno
where kscore >80
order by kscore desc
(7)查询选课门数最多的前两位学生,列出他们的学号和选课门数
select top 2 sno as 学号,COUNT (cno) as 选课门数
from sc
group by sno order by COUNT (cno) desc
四、实验体会或实验中遇到的问题
通过这次数据库的设计,使我加深了对数据库知道的进一步了解,为了做好这次课程设计,我又学习了跟题目相关的数据库知识和VB编程语言,。
除此之外,还有上网查询一些相关的资料,和一些实际问题实现的例子,通过理解别人实现的过程,学习实现的一些基本思路。在这个过程中,我对整个连接数据库程序的过程有了一个更立体的认识和了解。
在这次的设计中,让我进一步认识了数据库的设计过程以及设计各阶段所做的工作和要注意的细节部分,对于数据库的功能也有了更加深的了解。