SQL数据查询语言_sql数据查询语言
SQL数据查询语言由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“sql数据查询语言”。
宁波工程学院
数据库理论与技术课程实验报告
学院: 电子与信息工程学院 专业:计算机科学与技术 年级: 计科10-2 实验时间: 2012年4月15日
组长: 何亚玲 学号: 10401010201 指导教师签字: 成绩:
实验
三、SQL-数据查询语言
一、实验目的和要求
1、实验目的:深入理解连接查询和嵌套查询的语句格式、执行过程,掌握它们的使用方法;理解数据更新语言INSERT、UPDATE、DELETE语句的格式和作用,掌握它们的使用方法和应用范围;理解视图的概念,掌握其定义方法和应用方法。
2、实验要求:在每次实验前,学生必须根据实验指导书设计出实验方案(程序和实验步骤);在实验过程中要求独立进行程序调试和排错,学会使用在线帮助来解决实验中遇到的问题,同时运用理论的知识来分析问题和解决问题,记录下实验过程和结果。上机结束后写出实验报告,并对实验过程进行分析和总结。
二、实验内容与步骤
1、在SQL SERVER 2005上附加数据库jxgl和ReadBook。
2、在jxgl中完成下列查询
(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩(2)查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名(3)查询和“刘涛”在一个班级的学生的信息 思考:该查询可用几种方法实现?
(4)查询选修了‘计算机基础’课的学生的学号、姓名(分别用连接查询和嵌套查询的方法实现)
(5)查询没有选修课程的学生的信息
(6)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现)
(7)查询每个学生超过该门课程平均成绩的课程号(8)查询至少选修了“0311102”学生所选全部课程的学生的学号(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号(10)同时显示students中学生以及teachers中教师的姓名、性别
3、在jxgl中完成下列数据更新
(1)向course表添加一个新的元组。
(2)将“0301102”学生所选的“0000002”课程的成绩改为100分,绩点改为2(3)删除(1)中在course表中添加的记录
(4)统计每门课程的平均成绩并将统计结果存入到jxgl数据库中
思考:如何将students表中班级名 “03计算应用1”改为“03计算机应用1”(可调用函数完成)
4、查询教师的编号、姓名、上课的课程号、课程名称及班级。将该查询定义为一个视图。
5、在第4题定义的视图中完成下列查询
(1)查询“姚明”所上课程和班级。(2)统计每一位教师上课的数量
6、利用数据库ReadBook完成下列查询及视图设计。(在SQL SERVER2005上附加数据库ReadBook)
(1)设计一个查询,要求用连接和嵌套两种方式完成。(2)设计一个查询,要求用外连接的方式完成。
(3)设计一个查询,要求用带exists或not exists相关子查询完成(4)设计一个集合查询
(5)设计一个带复合条件连接的查询
(6)设计一个视图,并在该视图中完成添加、修改、删除数据的操作。
(7)设计一个视图,并在该视图完成两个统计:a.每位读者以及他的借书数量,按借书数量作降序排列 b.每本书以及被借出的次数,按借出次数作降序排列。
注意在实验报告中说明查询的目的和对应的语句。
三、实验过程及数据记录
1、在SQL SERVER 2005上附加数据库jxgl和ReadBook。
2、在jxgl中完成下列查询
(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩
select Students.sno,sname,SC.cno,cname,grade from Students,SC,Course where Students.sno=SC.sno and SC.cno=Course.cno
(2)查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名 select cno,cname from
Course
(3)查询和“刘涛”在一个班级的学生的信息 select * from
students where cla=(select cla from
students where sname='刘涛')
思考:该查询可用几种方法实现?
(4)查询选修了‘计算机基础’课的学生的学号、姓名(分别用连接查询和嵌套查询的方法实现)连接查询:
select Students.sno,sname from students,SC,Course where cname='计算机基础'and Students.sno=SC.sno and SC.cno=Course.cno嵌套查询:
select s1.sno,sname from
students s1,SC s2,Course s3 where cname='计算机基础'and s1.sno=s2.sno and s2.cno=s3.cno 执行结果同上
(5)查询没有选修课程的学生的信息
select * from
Students where sno not in(select sno from sc)
(5)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现)
1:select sname,mgrade from students where
mgrade>(select max(mgrade)
from students where cla='03计算应用')
2:select sname,mgrade from students where
mgrade>all(select mgrade from students where cla='03计算应用1')
(6)查询每个学生超过该门课程平均成绩的课程号
select
cno from sc sc1 ,students where
grade>(select avg(grade)from sc sc2
where sc2.cno=sc1.cno)
(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号 where sc2.cno=sc1.cno)
select
s1.sno from
course c1,course c2,sc sc1,sc sc2,students s1,students s2 where
c1.cname='计算机基础'
and
c2.cname='C语言基础' and c1.cno=sc1.cno
and
sc1.sno=s1.sno and c2.cno=sc2.cno and
sc2.sno=s2.sno and
s1.sno=s2.sno(10)同时显示students中学生以及teachers中教师的姓名、性别 因为教师并没有标明性别,所以不显示select sname,ex from students select tname from teachers3、在jxgl中完成下列数据更新
(1)向course表添加一个新的元组。增加的元组为学习的学期cterm: use jxgl_1 alter table course add cterm char(1)
(2)将“0301102”学生所选的“0000002”课程的成绩改为100分,绩点改为2 update sc set grade='100',point='2' where sno='0301102'
and cno='0000002'(3)删除(1)中在course表中添加的记录 use jxgl_1 alter table course drop column
cterm(4)统计每门课程的平均成绩并将统计结果存入到jxgl数据库中
select cno,avg(grade)as avg_grade from SC group by cno
思考:如何将students表中班级名 “03计算应用1”改为“03计算机应用1”(可调用函数完成)update
students set cla='03计算机应用' where cla='03计算应用'
4、查询教师的编号、姓名、上课的课程号、课程名称及班级。将该查询定义为一个视图。
create
view teacher_information(tno,tname,cno,cname,cla)as select teachers.tno,tname,TC.cno,cname,cla from Course,TC,Teachers where Course.cno=TC.cno and TC.tno=Teachers.tno5、在第4题定义的视图中完成下列查询
(1)查询“姚明”所上课程和班级。select cname,cla from teacher_information where
tname='姚明'
(2)统计每一位教师上课的数量 select tname,count(cno)the_all from teachers_view group by tno,tname6、利用数据库ReadBook完成下列查询及视图设计。(在SQL SERVER2005上附加数据库ReadBook)
(1)设计一个查询,要求用连接和嵌套两种方式完成。连接:
select
rname,bookname from
books,L_R,readers where books.bookid=L_R.bookid and
L_R.rno=readers.rno 嵌套:
select rname,bookname from books b1,L_R lr1 ,readers r1 where b1.bookid=lr1.bookid and
lr1.rno=r1.rno(2)设计一个查询,要求用外连接的方式完成。select claid,rno from books right outer join L_R on
books.bookid=L_R.bookid
(3)设计一个查询,要求用带exists或not exists相关子查询完成 select distinct bookname from books where exists(select bookid from
L_R where
books.bookid=L_R.bookid and rno='04201')(4)设计一个集合查询
select * from readers where rsex='男' union
select * from readers where spet='网络'(5)设计一个带复合条件连接的查询
select rname,bookname from books,L_R,readers where books.bookid=L_R.bookid and L_R.rno=readers.rno(6)设计一个视图,并在该视图中完成添加、修改、删除数据的操作。create
view books_information(bookid,claid,bookname)as select bookid,claid,bookname from books
select * from books_information
insert into books_information(bookid,claid,bookname)values('sn911','yy','计算机维修')
update books_information set claid='yy' where bookid='sn9001'
delete from
books_information where claid='sn9007'
(7)设计一个视图,并在该视图完成两个统计:a.每位读者以及他的借书数量,按借书数量作降序排列 b.每本书以及被借出的次数,按借出次数作降序排列。create view lr(rno,rname,bookid)6 as select readers.rno,rname,bookid from readers,L_R where readers.rno=L_R.rno
select rno,rname,count(bookid)as 借书数量 from lr group by rno,rname order by 借书数量desc
select bookid,count(bookid)as 借书次数 from lr group by bookid order by 借书次数desc drop view lr
注:图很多,不一一附上
四、实验结果分析
这次实验的内容是熟悉连接查询和嵌套查询的语句格式、执行过程,并掌握它们的使用方法;理解数据更新语言INSERT、UPDATE、DELETE语句的格式和作用,掌握它们的使用方法和应用范围;理解视图的概念,掌握其定义方法和应用方法。
按照课本的指导,导入数据库,才可以进行相关查询。编写程序时会出现很多错误,很多分析时还正确,却不能执行,自己不断独立纠错改正,才可以实现查询结果。
实验三 SQL语言——数据查询操作一、实验时间二、实验地点:317室三、实验条件与环境1. 通用PC机2. PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台3. P......
《SQL查询语言》教学设计一、教学目标分析认知目标学习SQL查询语言的使用方法。掌握SQL语言当中的SELECT语句能力目标培养学生应用查询语句查询数据的应用能力情感目标体验S......
sql语句多表连接查询在程序开发过程中,不仅可以对单一数据表进行查询,还可以进行多表查询,用户通过多表查询从多个表中提取出需要的数据。多表查询可以分为内连接查询、外连接......
SQL查询语句第一次:查询(显示)、条件、排序、空记录第二次:通配符、生成表、文件(记事本)、数组、临时表,数学函数、分组、嵌套查询第三次:插入记录、删除记录、更新记录 第四次:超连......
第二章create database db_sqlserver2--创建db_sqlserver2数据库on(name= db_sqlserver2_data,--文件的逻辑名称filename='e:\mydata\db_sqlserver2_data.mdf',--数据库......
