数据库原理及应用 您所在的位置:网站首页 键盘操作的基本指法有哪些图片 数据库原理及应用

数据库原理及应用

2024-05-09 10:19| 来源: 网络整理| 查看: 265

实验二  数据库的基本查询和高级查询

一、实验目的: 掌握SQL程序设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询。掌握SQL嵌套查询和集合查询等各种高级查询的设计方法等,加深SQL语言的嵌套查询语句的理解,熟练掌握数据查询中的分组、统计、计算和集合的操作方法。  二、实验要求: 针对实验一设计的“学生课程”数据库设计各种单表查询SQL语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。理解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。正确分析用户查询要求,设计各种嵌套查询和集合查询。SQL程序设计规范包含SQL关键字大写、表名、属性名、存储过程名等标示符大小写混合、SQL程序书写缩进排列等编程规范。  三、实验重点和难点: 实验重点:

1)分组统计查询、单表自身连接查询、多表连接查询、嵌套查询。

实验难点: 区分元组过滤条件和分组过滤条件;确定连接属性,正确设计连接条件。相关子查询、多层EXIST嵌套查询。  四、实验内容:(P87-P113)  (一)简单查询操作

该实验包括投影、选择条件表达,数据排序,使用临时表等。

具体完成以下题目,将它们转换为SQL语句表示,在学生课程数据库中实现其数据查询操作。

例:(1)查询描述:查询所有学生的姓名与学号

       SQL语句:select sno,sname from student

       查询结果:截图或文本

题目:

1.求数学系学生的学号和姓名。

select Sno,Sname

    from student

where Sdept='MA';

2.求选修了课程的学生学号。

select distinct Sno

from sc;(可将重复的合并成一行)

或者

select Sno

from sc;

 

3.求选修课程号为‘1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。

select Sno,Grade

    from sc

    where Cno='1'

order by Grade desc,Sno;

4.求选修课程号为‘1’且成绩在80~90之间的学生学号和成绩,并将成绩乘以0.8输出。

select Sno,Grade*0.8

    from sc

where Cno='1'and Grade between 80 and 90;

5.求数学系或计算机系姓“张”的学生的信息。

select *

    from student

where Sdept in('MA','CS') and Sname like '张%';

查询计算机科学系;

      

select *

    from student

where Sdept in('MA','IS') and Sname like '张%';

查询信息系;

6.求缺少了成绩的学生的学号和课程号。 

select Sno,Cno

    from sc

where grade is null;

 

(二)连接查询操作。

该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

题目:

1.查询每个学生的情况以及他所选修的课程。

select student.*,Cname

    from student,sc,course

    where student.Sno=sc.Sno

and sc.Cno=course.Cno;

 

2.求学生的学号、姓名、选修的课程及成绩。

select student.Sno,Sname,Cname,Grade

    from student,sc,course

    where student.Sno=sc.Sno

and sc.Cno=course.Cno;

3.求选修课程号为‘1’且成绩在90以上的学生学号、姓名和成绩。

select student.Sno,Sname,Grade

    from student,sc

    where student.Sno=sc.Sno

and sc.Cno='1' and sc.Grade>90;

 4.查询每一门课程的间接先行课(即先行课的先行课)。

select first.Cno,second.Cpno

    from course first,course second

where first.Cpno=second.Cno;

 

 (三)嵌套查询操作:

该实验包括在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。具体完成以下各题。将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。

题目:

1.求选修了高等数学的学号和姓名。

select Sno,Sname

    from student

    where Sno in

           (select Sno

           from sc

           where Cno in

                  (select Cno

                  from course

                  where Cname='数学'

)

           );

或者

select student.Sno,Sname

    from student,sc,course

    where student.Sno=sc.Sno

    and sc.Cno=course.Cno

    and Cname='数学';

2.求‘2’课程的成绩高于刘晨的学生学号和成绩。

select Sno,Grade

     from sc

     where Grade>

          (select Grade

        from sc

        where Sno=

                 (select Sno

                  from student

                  where Sname='刘晨')

        and Cno='2'

        )

     and Cno='2';

 

3.求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)。

select *

     from student

     where Sage=确认结果是否正确)

 5.查询计算机科学系的学生及年龄不大于19岁的学生。

select *

     from student

     where Sdept='CS'

     union

     select *

     from student

     where Sage



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有