SQL综合查询-学校教务管理系统数据库

一、一个完整的数据查询语句的格式

SELECT 【ALL|DISTINCT】<目标列表达式>【,<目标列表达式2>,...】

FROM <表名或视图名1>【,<表名或视图名2>,...】

【WHERE <元组选择条件表达式>】

【GROUP BY <属性列名>【HAVING <组选择条件表达式>】】

【ORDER BY <目标列名1>【ASC|DESC】【,<目标列名2>【ASC|DESC】,...】】

二、创建一个数据库实例-学校教务管理系统数据库

create database JWGL;

1、学生表 STUDENT(学号SNO,姓名SNAME,性别GENDER,所在班级号CNO)

create table student(
sNo char(12) primary key,
sName char(6),
gender char(2),
cNo char(3),
check(gender in('男','女'))
);

2、班级表CLASS(班级号CNO,所在院系DEPARTMENT,所属专业SPECIALITY,班长学号MONITOR)

create table class(
  cNo char(3) primary key,
  department char(18),
  speciality char(16),
  monitor char(12)
)

3、课程表LESSION(课程号LNO,课程名LNAME,教材名BOOK,学分CREDIT)

create table lession(
   lNo char(3) primary key,
   lName char(16),
   book char(16),
   CREDIT int
);

4、教师表TEACHER(教师编号TID,姓名TNAME,所在院系DEPARTMENT)

create table teacher(
  tId char(5) primary key,
  tName char(6),
  department char(16)
);

5、班级选课表ELECTION(班级号CNO,课程号LNO,教师编号TID,上课年度SYEAR,上课学期SEMESTER)

create table election(
cNo char(3),
lNo char(3),
tId char(5),
sYear int,
semester char(6),
primary key(cNo,lNo)
);

6、学生成绩表GRADE(学生学号SNO,课程号LNO,分数SCORE)

create table grade(
 sNo char(12),
 lNo char(3),
 score int,
 primary key(sNo,lNo)
);

注意:表CREDIN,SCORE,YEAR属性为INT类型,其余为CHAR类型

三、查询所有班长的学号,姓名,所在班级号和所学专业

select sNo,sName,student.cNo,speciality
from student,class
where student.sNo=class.Monitor

四、查询2024年度讲授过两门或两门以上课程的教师编号和所授的课程号

方法一:

select distinct e1.tid,e1.lNo
from election as e1,election as e2
where e1.sYear=2024 and e1.tId=e2.tId
and (e1.lNo<>e2.lNo or e1.cNo<>e2.cNo) and e2.sYear=2024

方法二:

select distinct tId,lNo
from election
where sYear=2024 and tId in(
select tId
from election
where sYear=2024
group by tId having count(*)>=2
);

五、统计“数计学院”所有教师的教师编号,教师姓名,2024年度教授的总课程数和总学分数,按总学分数从低到高排列

select teacher.tId,teacher.tName,总课程数=count(election.lNo),总学分数=sum(credit)
from teacher,election,lession
where teacher.tId=election.tId and election.lNo=lession.lNo
and sYear=2024
group by teacher.tId,teacher.tName
order by 4;

六、查询选修了“复合材料”但没有选修“计算机网络”的班级号,所属专业和该班学生人数。

select class.cNo 班级号,speciality 专业,count(sNo) 人数
from class,student
where student.cNo=class.cNo and
   class.cNo in(
   select election.cNo
   from election,lession
   where election.lNo=lession.lNo and lName='复合材料'
   )
   and class.cNo not in(
   select election.cNo
   from election,lession
   where election.lNo=lession.lNo and lName='计算机网络'
   )
group by class.cNo,speciality

七、创建一个视图v1,给出所有“数计学院”学生的学号,姓名,性别,所在班级号和选修“计算机网络”课程的分数(在此题中不需要显示属于数计学院但未选修计算机网络这门课程的学生)

方法一:

create view v1
  as select student.sNo,sName,gender,cNo,score
     from student,lession,grade
     where student.sNo=grade.sNo and grade.lNo=lession.lNo and lName='计算机网络'
	 and student.cNo in(
	 select cNo
	 from class
	 where department='数计学院'
	 )

方法二:

create view v2
 as select student.sNo,sName,gender,class.cNo,score
    from student,grade,class,lession
	where student.sNo=grade.sNo and
	      student.cNo=class.cNo and
		  department='数计学院' and
		  grade.lNo=lession.lNo and
		  lName='计算机网络'

八、查询“数计学院”学生中“计算机网络”课程分数最高的学生学号,姓名和所得分数

select sNo,sName,score
from v1
where score=(
select max(score)
from v1
)

九、查询出不学“计算机网络”课程的专业名称

select speciality
from class
except
select speciality
from class,lession,election
where election.lNo=lession.lNo and lName='计算机网络'
and election.cNo=class.cNo;

错误示例:

select speciality
from class,lession,election
where election.lNo=lession.lNo and lName<>'计算机网络'
and election.cNo=class.cNo;

错误原因:该SELECT语句将不仅仅学“计算机网络”这门课程的专业名称也进行了输出

十、小结

1、SELECT语句实现的查询功能是SQL语言的核心和重点。

2、SQL语言可满足用户对数据库的不同查询需求

3、SQL语言是高度非过程化的语言。

4、用SQL语言表达的对数据库的操作,最终由DBMS来对语句进行查询分析并优化执行,用户只需按语句格式正确表达操作需求即可

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教务管理系统SQL数据库) 摘要 :课题目标是设计并实现一个B/S体系结构的教务信息管理系统。结合实践,理解网页开 发技术和数据库的基本知识,学习相关开发工具和应用软件,熟悉系统设计的过程,熟 练掌握网络数据库编程方法。 本系统用JSP技术来编写本系统,数据库SQL SERVER 2000来连接系统。本论文主要涉及软件,数据库与网络技术等。涵盖知识面广,可有效地 提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培 养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后 进一步学习与工作奠定了良好的基础. 关键词:教务信息管理系统数据库;JSP 目 录 1 引言 1 2 系统分析 2 2。1 功能需求分析 2 2。2 本系统采用的关键技术 3 2。2。1 JSP技术 3 2.2.2 JavaBean技术 4 2。2。3 JDBC技术 5 2。3 可行性分析 6 2。4 系统运行环境 7 3 系统总体设计 8 3.1 总体功能 8 3。2 处理流程设计 9 3。2.1 系统操作流程 9 3。2.2 数据增加流程 10 3。2。3 数据修改流程 10 3。3.4 数据删除流程 11 4 系统详细设计 13 4。1 后台数据库设计 13 4。1。1 SQL SERVER 介绍 13 4.1。2 数据库表结构 14 4。3 系统模块设计 16 4。3.1 用户登陆 16 4。3。2 学生信息管理 16 4.3。2 教师信息管理 18 5 系统调试与测试 20 5。1 程序调试 20 5.2 程序的测试 20 5。2.1 测试的重要性及目的 20 5.2。2 测试的步骤 22 5.2.3 测试的主要内容 22 6 结论 24 6。1 系统评价 24 6.2 安全性问题 24 致谢 26 参考文献 27 功能需求分析 经过调研,基于B/S的教务信息管理系统的要求描述如下: 针对基于B/S的教务信息管理系统用户群情况,我们决定将本系统分为三个部分:学生用 户部分,教师用户部分和超级管理员用户部分.考虑到数据信息的隐私性问题,我们也对 各个用户的功能设置做了调整。例如成绩属于个人隐私,学生用户只允许查看自己的成绩 ,无权查看其他用户的成绩等。总体来说,学生用户只具有查看权限,而教师用户具有 比学生用户高的管理权限,但只局限于成绩部分。超级管理员用户具有最高权限,可以 修改查看学生用户教师用户乃至超级管理员用户的全部信息。 用户进入登陆页面会通过登陆框中用户所输入的信息判断用户是学生用户,教师用户,超 级管理员用户或者非法用户.并通过判断进入相对应的页面。 在学生用户界面中,用户只拥有最基本的查看权限,不具备任何的修改权限.用户可以查 看学生的基本信息,自己的各种课程信息,显示自己各门功课的成绩。 在教师用户界面中,教师对部分信息具有修改权限。例如录入学生成绩。 在超级管理员用户界面中,用户拥有最高权限。可以添加修改包括学生,教师和管理员 在内的任何信息。更新数据的过程中,所有的数据都尽最大可能的作到数据的级联。在 添加学生基本信息的同时做到对相关信息的级联添加.所有的添加操作之前都要确定数据 库中是否存在相同的记录,以确保数据的唯一性,把数据库被破坏的可能性降到最低。 所有的添加功能都在添加的同时把数据更新到数据库,并马上在界面上显示出结果以能 够让用户及时的知道更新的内容。超级管理员对所有的数据都具有添加,删除,修改,查看 等基本功能。在所有的删除操作之前,系统都级联的删除其他表中的相关信息。 以下是部分界面图,如图片不清,请直接点击图片,如需要看更详细的资料,请直接联系 客服! 图1(双击并最大化图片,可看清晰 图片) 图2(双击并最大化图片,可看清 晰图片) 图3(双击并最大化图片,可看清晰 图片) ----------------------- 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第1页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第2页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第3页。 教务管理系统(SQL数据库)-1401191959246956全文共4页,当前为第4页。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值