三 数据查询(2)

1、实验目的

理解SQL成熟设计基本规范,熟练运用SQL语言实现数据基本查询,包括单表查询、分组统计查询和连接查询。

2、实验内容及要求

针对数据库设计各种单表查询SQL语句、分组统计查询语句;设计单个表针对自身的连接查询,设计多个表的连接查询。理解和掌握SQL查询语句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

3、实验步骤

利用创建的Student、Course和SC表。用SQL语句完成下面的操作,并调试通过。CREATE TABLE Student(

   Sno char(7) PRIMARY KEY,

   Sname char(10) NOT NULL,

   Ssex char(2),

   Sage tinyint,

   Sdept char(20),

)

CREATE TABLE Course(

   Cno char(6) NOT NULL,

   Cname char(20) NOT NULL,

   Credit tinyint,

   Semester tinyint,

   PRIMARY KEY(Cno)

)

CREATE TABLE SC(

   Sno char(7) NOT NULL,

   Cno char(6) NOT NULL,

   Grade smallint,

   PRIMARY KEY(Sno,Cno),

   FOREIGN KEY(Sno) REFERENCES Student(Sno),

   FOREIGN KEY(Cno) REFERENCES Course(Cno)

)

三 数据查询(2)_第1张图片

三 数据查询(2)_第2张图片

三 数据查询(2)_第3张图片

  1. 统计每个系的学生人数。

SElECT Sdept ,count(sno) as '学生人数' from STUDENT GROUP BY Sdept

三 数据查询(2)_第4张图片

  1. 统计每门课程的选课人数和考试最高分。

SElECT count(sno) as '选课人数' , MAX(grade) as '最高分' from SC GROUP BY cno;

三 数据查询(2)_第5张图片

  1. 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

SELECT student.sno '学号',student.sname '姓名',count(sc.sno) '课程数量',sum(grade) '总成绩'

FROM Sc

JOIN Student ON Student.sno = SC.sno

GROUP BY Sc.Sno, Student.Sname, Student.Sno

ORDER BY count(cno)

三 数据查询(2)_第6张图片

  1. 查询学分是4的课程的课程号和课程名。

SELECT cno as '学号', Cname as '课程名'  from course WHERE credit = 4

  1. 查询总成绩超过200分的学生,要求列出学号、总成绩。

select sno '学号',sum(grade) '总成绩' from sc

GROUP BY  sno

Having sum(grade)>200;

  1. 查询成绩80分以上的学生的学号、课程号和成绩,并按成绩降序排列结果。

SELECT Student.sname '学号', Sc.cno '课程号',Sc.grade '成绩,

from Student , Sc

WHERE Student.sno = Sc.sno and grade>80

ORDER BY grade desc

三 数据查询(2)_第7张图片

4、实验小结

通过本次实验,我充分实践数据库的各种单表查询SQL语句、分组统计查询语句;以及自身的连接查询,多表连接查询。熟练掌握SQL查询语句的特点和作用,按照SQL程序设计规范,创建STUDENT,COURSE,SC三个表,并且自己插入相关的测试数据。完全地根据需求通过SQL查询出对应结果,同时通过dbug和查询资料解决了一些棘手的问题。本次实验让我在平时感到模糊的知识又复习了一遍,并且亲手实践,按照不同的需求,修改不同的数据来测试结果。数据库是现代信息技术中必不可少的一环,本次实验通过创建数据表和修改数据表的操作,又比上次实验增加了排序,最大最小问题,让我了解到了数据库的原理和应用,进一步提高了我的实际操作能力。

你可能感兴趣的:(数据库原理应用实验,数据库,sql)