第一篇:实验5 数据库的嵌套查询实验
实验五
数据库的嵌套查询实验
1、实验目的
本实验的目的是使学生进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的嵌套查询语句的理解
2、实验时数
2学时
3、实验内容
本实验的主要内容是:在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
具体完成以下例题。将它们用SQL语句表示,在学生数据库中实现其数据嵌套查询操作。
1、查询选修了高等数学的学生学号和姓名 select Sno,Sname from Student where Sno in(select Sno from SC,Course where SC.Cno=Course.Cno and Cname='数学')
2、查询1号课程的成绩高于刘晨的1号课程成绩的学生学号和成绩 select SC.Sno,Grade from SC,Student where Cno='1' and SC.Sno=Student.Sno and Grade>all(select Grade from SC,Student where SC.Sno=Student.Sno and Sname='刘晨')
3、查询其他系中比cs系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)select * from Student where Sdept!='cs' and Sage 4、查询其他系中比cs系所有学生年龄都小的学生 select * from Student where Sdept!='cs' and Sage 5、查询选修了2号课程的学生姓名 select Sname from Student where Sno in(select Student.Sno from SC,Student where SC.Sno=Student.Sno and Cno='2') 6、查询没有选修2号课程的学生姓名 elect Sname from Student where exists(select SC.Sno from SC,Student where Cno!='2' group by SC.Sno) 7、查询选修了全部课程的学生姓名 Select * from SC where Cno=all(select Cno from Course) 8、求至少选修了学号为“00215122”的学生所选修全部课程的学生学号和姓名 select Sno,Sname from Student where Sno in(select Student.Sno from Student,SC where Student.Sno=SC.Sno and Cno=any(select Cno from SC where Sno='00215122')) 4、实验方法 将查询需求用SQL语言表示:在SQL Server查询分析器的输入区中输入SQL查询语句:设置查询分析器的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 5、实验心得体会 本次实验还是进行查询操作,只是在第四次试验的基础上加入了嵌套,嵌套查询是在我们以后进行软件开发涉及数据库常用的查询操作,通过实验有助于我们对嵌套查询的理解,对我们熟练的使用SQL查询语句进行查询操作有很大帮助。 实验三 数据库查询实验 (3)数据库的组合查询和统计查询实验 课时安排:2课时 一、实验目的和要求 使学生熟练掌握SQL Server查询分析器的使用方法.加深对SQL和Transact-SQL语言的查询语句的理解。熟练掌握数据查询中的分组、统计、计算和组合的操作方法。 二、实验内容 分组查询实验该实验包括分组条件表达、选择组条件的表达方法。使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 组合查询实验。计算和分组计算查询的实验。 三、实验方法 将查询需求用 Transact-SQL语言表示;在 SQL Server查询分析器的输入区中输入Transact-SQL查询语句:设置查询分析器的结果区为Standard Execute(标准执行)或Executeto Grid(网格执行)方式.发布执行命令 并在结果区中查看查询结果;如果结果不正确要进行修改.直到正确为止。 四、实验步骤 基本操作实验 在图书借阅库中实现其查询操作。 (1)查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍。 (2)求机械工业出版社出版的各类图书的平均定价,用GROUPBY表示。 (3)列出计算机类图书的书号、名称及价格.最后求出册数和总价格。 (4)列出计算机类图书的书号、名称及价格 并求出各出版社这类书的总价格.最后求出全部册数和总价格。 (5)查询计算机类和机械工业出版社出版的图书。 提高操作实验 将自设计的数据库应用项目中的分组、统计、计算和组合查询用Transact-SQL语句表示.并通过SQL Server 查询分析器实现其查询操作。 五、实验报告要求 分别用SQL和Transact-SQLL写出实验操作的查询语句 对两种语言进行比较。 实验步骤和实验结果。实验中的问题和提高。 六、注意事项 子句WHERE<条件>表示元组筛选条件,子句HAVING <条件>表示组选择条件。组合查询的子句间不能有语句结束符。子句HAVING<条件>必须和GROUP BY <分组字段>子句配合使用。 七、思考题 组合查询语句是否可以用其他语句代替,有什么不同? 使用 GROUP BY <分组条件>子句后,语句中的统计函数的运行结果有什么不同? 实验三:数据库的嵌套查询实验 实验目的 : 加深对嵌套查询语句的理解。 实验内容: 使用 IN、比较符、ANY 或 ALL 和 EXISTS 操作符进行嵌套查询操作。 实验步骤: 一.使用带 N IN 谓词的子查询 1.查询与’刘晨’在同一个系学习的学生的信息: 比较 select * from student where sdept in (select sdept from student where sname=“刘晨”)与: select * from student where sdept = (select sdept from student where sname=“刘晨”)的异同 比较: select * from student where sdept = (select sdept from student where sname=“刘晨”)and sname <> ‘刘晨’ 与: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname=“刘晨”的异同 2.查询选修了课程名为’信息系统’ 的学生的学号和姓名: 比较 select sno, sname from student where sno in(select sno from sc where cno in (select cno from course where cname=“信息系统”))与: select sno, sname from student where sno in (select sno from sc, course where sc.cno=course.cno and cname=“信息系统”) 3.查询选修了课程’1’和课程’2’的学生的学号: select sno from student where sno in(select sno from sc where cno=“1”)and sno in(select sno from sc where cno=“2”) 比较: 查询选修了课程’1’或课程’2’的学生的 sno: select sno from sc where cno=“1” or cno=“2” 比较连接查询: select A.sno from sc A, sc B where A.sno=B.sno and A.cno=“1” and B.cno=“2” 二.使用带比较运算的子查询 4.查询比’刘晨’年龄小的所有学生的信息: select * from student where sage< (select sage from student where sname=“刘晨”) 三.使用带 Any, All 谓词的子查询 5.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage (select sage from student where sdept=“IS”)and sdept<>“IS” 6.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄: select sname, sage from student where sage 7.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄: select sno,sname,sage from student where sage<>all(select sage from student where sdept=“CS”) 四.使用带 s Exists 谓词的子查询和相关子查询 8.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄: select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage and A.sno<>B.sno) 9.查询所有选修了 1 号课程的学生姓名: select sname from student where exists(select * from sc where sno=student.sno and cno=“1”) 10.查询没有选修了 1 号课程的学生姓名: select sname from student where not exists(select * from sc where sno=student.sno and cno=“1”) 11.查询选修了全部课程的学生姓名: SQL Server 中: select sname from student where not exists(select * from course where not exists(select * from sc where sno=student.sno and cno=course.cno)) 11.查询至少选修了学生 95002 选修的全部课程的学生的学号: SQL Server 中: select distinct sno from sc A where not exists (select * from sc B where sno=“95002”and not exists(select * from sc C where sno=A.sno and cno=B.cno)) 12.求没有人选修的课程号 cno 和 cnamecname: select cno,cname from course C where not exists(select * from sc where sc.cno=C.cno) 13*.查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号 cno的课程 SQL Server 中: select sno,cno from student,course where not exists(select * from sc where cno=course.cno and sno=student.sno) 14*.查询每个学生的课程成绩最高的成绩信息(sno,cno,grade): select * from sc A where grade=(select max(grade)from sc where sno=A.sno) 思考: 如何查询所有学生都选修了的课程的课程号 cno? select cno from sc group by cno having count(*)=(select count(*)from student) 广东工业大学实验报告 自动化学院 学院 网络工程 专业 班 学号 3111001381 姓名 何宇航 成绩评定_______ 教师签名 黄永慧 实验 题目 数据查询和连接查询 课程名称 数据库原理及应用实验 一.实验目的 使学生熟练掌握简单表的数据查询、数据连接查询以及数据排序的操作方法,并加深对Transact-SQL语言的查询语句的理解。 二.实验软件环境 SQL Server 2000 三.实验内容 (一)实验要求: 使用SQL Server 2000查询分析器,并用SELECT语句及WHERE查询条件进行简单查询及连接查询实验,其次使用ORDER BY排序子句实现输出结果的排序。主要内容包括: 1)简单查询操作 包括投影、选择条件、数据排序等。 2)连接查询操作 包括等值连接、自然连接、外连接、内连接、左连接和右连接等。(二)要求完成以下查询要求: 1)将计算机类的书存入永久计算机图书表。 2)将借书日期在05年以前的借阅记录存入临时超期借阅表。3)查询发生了借阅关系的借书证号,并按借书证号降序排列。4)查询“清华大学出版社”出版的图书情况。 5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序。6)查询“程军”老师所借阅的书籍的书名。 7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。 四.实验的结果及分析 1)将计算机类的书存入永久计算机图书表 CREATE TABLE Computer_Book(bno char(8)NOT NULL PRIMARY KEY,category varchar(10),title varchar(40)NOT NULL,press varchar(30)NOT NULL,book_year Int NOT NULL,author varchar(20),price decimal(7,2)NOT NULL,book_total Int NOT NULL) INSERT INTO Computer_Book SELECT *FROM Book WHERE category='计算机' 广东工业大学实验报告 自动化学院 学院 网络工程 专业 班 学号 3111001381 姓名 何宇航 成绩评定_______ 教师签名 黄永慧 实验 题目 数据查询和连接查询 课程名称 数据库原理及应用实验 2)将借书日期在05年以前的借阅记录存入临时超期借阅表。CREATE TABLE Overdue_Borrow(cno char(7)NOT NULL FOREIGN KEY(CNO)REFERENCES Card(cno),bno char(8)NOT NULL FOREIGN KEY(BNO)REFERENCES Book(bno),borrow_date smalldaetime NOT NULL DEFAULT GETDATE(),CONSTRAINT CBB_PRIM PRIMARY KEY(cno,bno,borrow_date))INSERTINTO Overdue_Borrow SELECT *Borrow WHERE YEAR(borrow_date)<2005 3)查询发生了借阅关系的借书证号,并按借书证号降序排列。SELECT DISTINCT cno FROM Borrow ORDER BY cno DESC 4)查询“清华大学出版社”出版的图书情况。SELECT *FROM Book WHERE press='清华大学出版社' 5)查询目前被借出去的书籍的书号、借书证号以及借出日期,并按借出日期排序。SELECT bno,cno,borrow_date FROM Borrow WHERE return_date IS NULL ORDER BY borrow_date 6)查询“程军”老师所借阅的书籍的书名。SELECT title FROM Book,Card,Borrow WHERE(Card.cno=Borrow.cno)and(Borrow.bno=Book.bno)and(name='程军') 7)查询借书者的编号、姓名、单位、所借书号、书名和借阅日期,并按读者编号排序。SELECT Borrow.cno,name,department,Borrow.bno,title,borrow_date FROM Borrow,Card,Book WHERE(Card.cno=Borrow.cno)and(Borrow.bno=Book.bno)ORDER Borrow.cno 五.实验心得体会 通过本实验基本学会如何进行简单表的数据查询、数据联接查询以及数据排序,并加深对SQL和Transact-SQL语言的查询语句的理解,这比光看书跟容易理解,能够跟好的掌握书本上的知识。 实验1.1 使用SQL Server工具(Microsoft SQL Server Management Studio Express)管理数据库 实验内容: (1)使用SSMS(SQL Server Management Studio)加入实验数据库。(2)使用SSMS可视化建立、修改和删除数据库、表。(3)使用SSMS对数据库进行备份和恢复。 (4)使用SSMS对表进行查询、插入、修改、删除。实验步骤: (1)加入School数据库。(2)建立Test数据库。 (3)在数据库中建立人员表PERSON(P#,Pname,Page)。更改表设置P#为主键,增加属性Ptype(类型是CHAR,长度是10)。 (4)用SSMS的查询功能(新建查询)对PERSON表进行查询、插入、修改、删除等操作:首先插入两条记录;修改第二条记录;删除第二条记录。(5)备份Test数据库。(6)删除表PERSON。(7)恢复Test数据库。(8)删除Test数据库。第二篇:3数据库查询实验
第三篇:年整理数据库嵌套查询实验报告
第四篇:数据库实验5报告
第五篇:数据库实验