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 andclass.cNo in(select election.cNofrom election,lessionwhere election.lNo=lession.lNo and lName='复合材料')and class.cNo not in(select election.cNofrom election,lessionwhere election.lNo=lession.lNo and lName='计算机网络')
group by class.cNo,speciality

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

方法一:

create view v1as select student.sNo,sName,gender,cNo,scorefrom student,lession,gradewhere student.sNo=grade.sNo and grade.lNo=lession.lNo and lName='计算机网络'and student.cNo in(select cNofrom classwhere department='数计学院')

方法二:

create view v2as select student.sNo,sName,gender,class.cNo,scorefrom student,grade,class,lessionwhere student.sNo=grade.sNo andstudent.cNo=class.cNo anddepartment='数计学院' andgrade.lNo=lession.lNo andlName='计算机网络'

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

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来对语句进行查询分析并优化执行,用户只需按语句格式正确表达操作需求即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用streamlit开发大模型API调用对话网页应用

利用streamlit开发大模型API调用对话网页应用 介绍 Streamlit是一个用于构建数据应用的开源框架&#xff0c;其简单易用的界面使得数据科学家和开发人员能够快速创建交互式应用。而OpenAI API则提供了强大的语言模型&#xff0c;可以生成自然语言响应。将这两者结合起来&…

redis-基础篇(2)

黑马redis-基础篇笔记 3. redis的java客户端-Jedis 在Redis官网中提供了各种语言的客户端&#xff0c;地址&#xff1a;https://redis.io/docs/clients/ 标记为❤的就是推荐使用的java客户端&#xff0c;包括&#xff1a; Jedis和Lettuce&#xff1a;这两个主要是提供了Redi…

# 消息中间件 RocketMQ 高级功能和源码分析(十)

消息中间件 RocketMQ 高级功能和源码分析&#xff08;十&#xff09; 一、消息中间件 RocketMQ 源码分析&#xff1a; 消息消费概述 1、集群模式和广播模式 消息消费以组的模式开展&#xff0c;一个消费组内可以包含多个消费者&#xff0c;每一个消费者组可订阅多个主题&…

PointCloudLib 点云边缘点提取 C++版本

0.实现效果 1.算法原理 PCL(Point Cloud Library)中获取点云边界的算法主要基于点云数据的几何特征和法向量信息。以下是对该算法的详细解释,按照清晰的格式进行归纳: 算法概述 PCL中的点云边界提取算法主要用于从3D点云数据中识别并提取出位于物体边界上的点。这些边界…

邀请函 | 人大金仓邀您相聚第十三届中国国际国防电子展览会

盛夏六月 备受瞩目的 第十三届中国国际国防电子展览会 将于6月26日至28日 在北京国家会议中心盛大举办 作为数据库领域国家队 人大金仓 将携系列行业解决方案 和创新实践成果亮相 期待您莅临指导 ↓↓↓↓↓↓ CIDEX 2024 中国国际国防电子展览会&#xff08;简称CIDEX&#xf…

前端核心框架Vue指令详解

目录 ▐ 关于Vue指令的介绍 ▐ v-text与v-html ▐ v-on ▐ v-model ▐ v-show与v-if ▐ v-bind ▐ v-for ▐ 前言&#xff1a;在学习Vue框架过程中&#xff0c;大家一定要多参考官方API &#xff01; Vue2官方网址https://v2.cn.vuejs.org/v2/guide/ ▐ 关于Vue指令的…

multiprocessing多进程计算及与rabbitmq消息通讯实践

1. 需求与设计 我所设计的计算服务旨在满足多个客户对复杂计算任务的需求。由于这些计算任务通常耗时较长且资源消耗较大&#xff0c;为了优化客户体验并减少等待时间&#xff0c;我采取了并行计算的策略来显著提升计算效率。 为实现这一目标&#xff0c;我计划利用Python的m…

基于Java实训中心管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

碳化硅陶瓷膜的生产工艺和应用

一、生产工艺 碳化硅陶瓷膜的生产工艺多样&#xff0c;其中浸渍提拉法和喷涂法为两大主流技术。 浸渍提拉法 浸渍提拉法是一种广泛应用的制备方法。其过程主要包括&#xff1a;先将陶瓷颗粒或者聚合物前体分散在水或有机溶剂中&#xff0c;形成均质稳定的制膜液。随后&#xff…

Jenkins macos 下 failed to create dmg 操作不被允许hdiutil: create failed - 操作不被允许?

解决方案&#xff1a; 打开设置&#xff0c;选择“隐私与安全”&#xff0c;选择“完全磁盘访问权限”&#xff0c;点击“”&#xff0c;选择jenkins的路径并添加。 同理&#xff0c;添加java的访问权限。

Python14 面向对象编程

1.什么是面向对象编程OOP Python的面向对象编程&#xff08;Object-Oriented Programming&#xff0c;简称OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来设计应用程序和计算机程序。这些对象由数据和能够操作这些数据的方法组成。面向对象编程的主要目标是提高软…

Webpack4从入门到精通以及和webpack5对比_webpack现在用的是哪个版本

3.1 打包样式资源css-loader、style-loader… {// 匹配哪些文件test: /\.less$/,// 使用哪些loader进行处理use: [// use数组中loader执行顺序&#xff1a;从右到左&#xff0c;从下到上&#xff0c;依次执行(先执行css-loader)// style-loader&#xff1a;创建style标签&#…

【C++】一个极简但完整的C++程序

一、一个极简但完整的C程序 我们编写程序是为了解决问题和任务的。 1、任务&#xff1a; 某个书店将每本售出的图书的书名和出版社&#xff0c;输入到一个文件中&#xff0c;这些信息以书售出的时间顺序输入&#xff0c;每两周店主会手工计算每本书的销售量、以及每个出版社的…

Vue74-路由传参2

一、$route中的params参数 二、在配置路由的index.js文件中&#xff0c;声明传参 占位符用的什么名字&#xff0c;params里面的key就是什么。 三、<router-link>标签中传参 3-1、to字符串写法 3-2、to的对象写法 注意&#xff1a;若是用params携带参数&#xff0c;不…

mysql的安装以及分享navicat for MySQL

前言 根据网上分享的安装方法以及自己遇到的问题解决方法 一、mysql是什么&#xff1f; mysql 是一个开放源码的小型关联式数据库管理系统 二、安装过程 1.下载安装包 下载地址&#xff1a;MySQL :: Download MySQL Community Server 跳过直接下载&#xff0c;解压即可 …

DPDK的Cache预取和Cache一致性

1.什么是Cache预取 众所周知&#xff0c;CPU访问Cache中的数据是比访问内存中的数据是要快的&#xff0c;而因为程序都有时间局部性和空间局部性&#xff0c;时间局部性简单来说就是某一条或几条指令在一段时间内会被CPU多次执行&#xff1b;空间局部性简单来说就是某一段数据块…

五十五、openlayers官网示例Loading Spinner解析——给地图添加loading效果,瓦片图层加载时等待效果

官网demo地址&#xff1a; Loading Spinner 这篇介绍了一个非常简单的loading效果 利用地图的loadstart和loadend事件&#xff0c;动态的添加和删除class名。 map.on("loadstart", function () {map.getTargetElement().classList.add("spinner");});map…

Vue72-路由传参1

一、需求 点击哪个消息&#xff0c;就展示哪个消息的详情 这是一个三级路由&#xff01; 给路由组件&#xff1a;detail.vue传递消息数据。 二、代码步骤 2-1、编写路由组件 从$route.query属性里面获取传参 2-2、编写路由规则 2-3、编写路由标签&#xff0c;传参 1、to的字…

Ncorr使用过程的问题解答

问题系列 文章目录 问题系列前言一、如何更改单位&#xff1f;情景&#xff1a;DIC Analysis 二、拉格兰日和欧拉绘图的区别直观 三、控制图像中的显示条上下界限问题展示&#xff1a;解决方案&#xff1a; 更新动态 前言 主要用于记录使用过程中出现的相关问题。 一、如何更改…

数据结构:为什么说链表是顺序表的升级版(c语言实现)

前言&#xff1a; 我们在之前的几篇文章中详细的讲解了顺序表的特点&#xff0c;增删改查操作和动态顺序表的优点&#xff0c;并使用顺序表的底层结构实现了通讯录项目&#xff0c;似乎顺序表是一个非常完美的数据结构&#xff0c;它可以实现按照需求实现增删查改&#xff0c;对…