数据库原理及应用上机(实验四 SQL连接查询)
✨作者:命运之光
✨专栏:数据库原理及应用上机实验

目录
✨一、实验目的和要求
✨二、实验内容及步骤
✨三.实验结果
✨四、实验总结
🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不断完善🍓🍓
✨一、实验目的和要求
1.掌握SQL Server查询分析器的使用方法,加深对SQL查询语句的理解。
2.熟练掌握查询语句的一般格式。
3.熟练掌握数据查询中的排序、分组、统计、计算和集合的操作方法。
4.熟练掌握连接、嵌套和集合查询的使用。
✨二、实验内容及步骤
(一)连接查询
1 不同表之间的连接查询
【例49】 查询每个学生及其选修课程的情况。
本查询实际上是涉及Student与SC两个表的连接操作。这两个表之间的联系是通过公共属性Sno实现的,因此,其操作命令为:

SELECT Student.*, SC.*
FROM Student, SC
WHERE Student.Sno = SC.Sno;
说明:若在以上等值连接中把目标列中重复的属性列去掉则为自然连接,其命令为
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade
FROM Student, SC
WHERE Student.Sno= SC.Sno;
2 自身连接
【例52】 查`询每一门课的间接先修课(即先修课的先修课)。
在Course表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。这就需要要将Course表与其自身连接。为方便连接运算,这里为Course表取两个别名分别为A,B。则完成该查询的SQL语句为:

SELECT A.Cno, A.Cname, B.Cpno
FROM Course A, Course B
WHERE A.Cpno =B.Cno;
3 复合条件连接
【例54】 查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。
本查询涉及到三个表的连接操作,完成该查询的SQL语句如下:

SELECT Student.Sno, Sname, Cname, GradeFROM Student, SC, CourseWHERE Student.Sno= SC.Sno AND SC.Cno=Course.Cno;
(二)嵌套查询
1 带谓词IN的嵌套查询
【例55】查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。
该查询可构造嵌套查询实现,其SQL语句如下:
说明:本例中的查询也可以用自身连接来完成,其SQL语句如下:

SELECT A.Sno , A.Sname , A.Sdept
FROM Student A , Student B
WHERE A.Sdept=B.Sdept AND B.Sname=’李伟’;
【例55-2】 查询选修了编号为“2”的课程的学生姓名(Sname)和所在系(Sdept)。

SELECT Sname, Sdept
FROM Student
WHERE Sno IN(SELECT SnoFROM SCWHERE Cno='2');
【例56选做】 查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。
本查询涉及学号、姓名和课程名(Cname)三个属性。学号和姓名存放在Student表中,课程名的存放在Course表中,但Student与Course两个表之间没有公共属性,必须通过SC表建立它们之间的联系。所以本查询实际上涉及三个关系的连接操作。
SELECT Sno, Sname /* ③最后在Studen关系中 */
FROM Student /* 取出Sno和Sname */
WHERE Sno IN(SELECT Sno /*② 然后在SC关系中找出 */FROM SC /*选修了3号课程的学生学号*/WHERE Cno IN (SELECT Cno /*① 首先在Course关系中 */FROM Course /*找出“数据结构”的课程号*/WHERE Cname = '数据结构')); /*结果为5号 */
说明:本查询同样可以用连接查询实现:
SELECT S.Sno, Sname
FROM Student S, SC R, Course C
WHERE S.Sno=R.Sno AND R.Cno=C.Cno AND C.Cname='数据结构';
2 带有比较运算符的嵌套查询
【例】 将例55改为带有比较运算符的嵌套查询。由于一个学生只可能在一个系学习,因此子查询的结果是一个值,因此可以用=代替IN,其SQL语句如下:

SELECT Sno , Sname, Sdept
FROM Student
WHERE Sdept =(SELECT SdeptFROM StudentWHERE Sname=’李伟’);
3 带谓词ANY或ALL的嵌套查询
【例59】 查询非计算机系(CS)的不超过信息系所有学生的年龄的学生姓名(Sname)和年龄(Sage)。其查询命令为

SELECT Sname, Sage,Sdept
FROM Student
WHERE Sdept <>'计算机系'
AND Sage<=ALL (SELECT SageFROM StudentWHERE Sdept= '信息系');
--说明:本查询也可以用集函数来实现。其SQL语句如下:
SELECT Sname, Sage
FROM Student
WHERE Sdept<>'计算机系'
AND Sage<= (SELECT MIN(Sage)FROM StudentWHERE Sdept='信息系');
4 带谓词EXISTS的嵌套查询
【例60】 查询所有选修了编号为“1”课程的学生姓名(Sname)和所在系(Sdept)。
本查询的SQL语句是:

SELECT Sname, Sdept
FROM Student
WHERE EXISTS(SELECT *FROM SCWHERE Sno=Student.Sno AND Cno='1');
【例62选做】 查询选修了所有课程的学生姓名(Sname)和所在系。
由于没有全称量词,可将题目的意思转换成等价的用存在量词的形式:查询这样的学生,没有一门课程是他不选修的。其SQL语句为:
SELECT Sname, Sdept
FROM Student
WHERE NOT EXISTS(SELECT *FROM CourseWHERE NOT EXISTS(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno));
(四)集合查询
【例】 查询计算机系(CS)的学生或年龄不大于20岁的学生信息。

SELECT *
FROM Student
WHERE Sdept='CS'
UNION
SELECT *
FROM Student
WHERE Sage<=20;
✨三.实验结果
(一)连接查询
1 不同表之间的连接查询
查询每个学生及其选修课程的情况。

2 自身连接
查询每一门课的间接先修课(即先修课的先修课)。

3 复合条件连接
查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。

(二)嵌套查询
1 带谓词IN的嵌套查询
查询与“李伟”在同一个系学习的学生学号(Sno)、姓名(Sname)和系名(Sdept)。

查询选修了编号为“2”的课程的学生姓名(Sname)和所在系(Sdept)。

查询选修了课程名为“数据结构”的学生学号(Sno)和姓名(Sname)。
本查询涉及学号、姓名和课程名(Cname)三个属性。学号和姓名存放在Student表中,课程名的存放在Course表中,但Student与Course两个表之间没有公共属性,必须通过SC表建立它们之间的联系。所以本查询实际上涉及三个关系的连接操作。

2 带有比较运算符的嵌套查询
将例55改为带有比较运算符的嵌套查询。由于一个学生只可能在一个系学习,

3 带谓词ANY或ALL的嵌套查询
查询非计算机系(CS)的不超过信息系所有学生的年龄的学生姓名(Sname)和年龄(Sage)。

4 带谓词EXISTS的嵌套查询
查询所有选修了编号为“1”课程的学生姓名(Sname)和所在系(Sdept)。

查询选修了所有课程的学生姓名(Sname)和所在系。
由于没有全称量词,可将题目的意思转换成等价的用存在量词的形式:查询这样的学生,没有一门课程是他不选修的。

(四)集合查询
查询计算机系(CS)的学生或年龄不大于20岁的学生信息。

✨四、实验总结
本次实验主要学习了 SQL 连接查询的使用方法,掌握了使用 SQL 查询语句对多个表格进行关联查询的技能。在实验过程中,我们深入了解了 SQL 连接查询的类型(内连接、左连接、右连接和全连接),并学会了如何使用连接查询来处理多个表格之间的关系。
通过本次实验的学习,我深刻认识到关系型数据库在实际应用中的重要性。在数据处理过程中,经常需要同时查询多个表格,并在其中建立关联关系,从而获取更丰富、更准确的数据信息。通过本次实验的学习,我不仅掌握了连接查询的基本语法和使用方法,还学会了如何根据具体情况选择不同类型的连接查询,并如何优化连接查询语句以提高查询效率。
在实验过程中,我遇到了一些问题,如语法错误、表格字段名不匹配等等。通过反复尝试和查找相关资料,我最终解决了这些问题,并对 SQL 连接查询的使用有了更深入的理解和掌握。
总之,本次实验对我的学习和成长非常有益。通过实践操作,我深入了解了 SQL 连接查询的使用方法,提高了对关系型数据库的理解和掌握,为今后的工作和学习打下了坚实的基础。
相关文章:
数据库原理及应用上机(实验四 SQL连接查询)
✨作者:命运之光 ✨专栏:数据库原理及应用上机实验 目录 ✨一、实验目的和要求 ✨二、实验内容及步骤 ✨三.实验结果 ✨四、实验总结 🍓🍓前言: 数据库原理及应用上机实验报告的一个简单整理后期还会不…...
linux上使用系统安装和Docker安装mysql的两种方式
一、安装到linux 1、安装mysql-server 1、在安装之前查看下系统是否已经安装了mysql ls /usr/share2、安装mysql-server sudo apt-get install mysql-server3、再次查看,发现多了个mysql ls /usr/share | grep mysql //在ls打印结果中搜索mysql关键字4、登陆 在…...
解决Mac下载官网JDK速度过慢的问题
换了新电脑,用mac完去官网下载jdk,发现速度过于慢,要等非常久,为了解决这个问题,提供一个方法:将mac的网络换成手机热点,接着再去官网下载jdk1.8,速度快的飞起。 jdk1.8下载的链接&a…...
笔记本wifi与台式机、内网服务器共网、共享wifi详细教程
内容包括两个部分: 笔记本、台式机共网,笔记本连接WiFi,台式机通过网线连接笔记本电脑;笔记本、服务器共网,笔记本连接WiFi,服务器通过网线连接笔记本电脑。 1)稍微简单易操作,2&am…...
纵观人类发展史,我发现了一个秘密!
文 / 高扬(微信公众号:量子论) 纵观人类的历史,就是工具化日益增强的历史。通过创新工具、解放生产力,人类从茹毛饮血到现在设计模型驾驭人工智能,一路从刀耕火种走到信息时代。 远古时期,人们偶…...
HDFS的数据流
1.HDFS写数据流程 (1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。 (2)NameNode返回是否可以上传。 (3)客户端…...
[230531] 托福听力真题|TPO67配套词汇|10:23-11:23
目录 Con1 Lec1(ecology) Lec2(psychology) Con2 Lec3(art history) 重点复习巩固lecture 两篇Con都为简单等级 Con1 emergency n 紧急情况;突发情况 deal with 处理 dormitory n 宿舍 facility n 设备 supervisor n 监督…...
每日学术速递5.21
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Going Denser with Open-Vocabulary Part Segmenta 标题:通过开放式词汇部分分割变得更密集 作者:Peize Sun, Shoufa Chen, Chenchen Zhu, Fanyi Xiao, Pi…...
【SpringBoot】SpringBoot 纯后端项目如何自定义异常页面(Whitelabel Error Page)
文章目录 背景安排方案步骤 验证 背景 一个短链服务,业务将长链接给我,我转换成短地址,用户访问短地址时,我再做redirect;没有前端,纯后端项目短链会有过期时间,过期后将返回错误信息某一天一个…...
Netty核心技术三--NIO编程
1. JAVA NIO基本介绍 Java NIO 全称 java non-blocking IO,是指 JDK 提供的新API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的 NIO 相关类都被放在 java.nio 包及子包下&…...
机器人的运动范围:DFS
Problem: 剑指 Offer 13. 机器人的运动范围 文章目录 思路解题方法复杂度Code 思路 首先定义好地图,上下左右四个方向也就是{{1,0},{0,1},{-1,0},{0,-1}},然后我们另外定义一个方法来判断题目要求的下标位数和是否大于k, boolean check(int x…...
Rshiny编写ui中具有web依赖项的控件{该问题的具体阐述请看引言}
Rshiny编写ui中具有web依赖项的控件{该问题的具体阐述请看引言} 引言conditionalPanel函数update*函数系列总结引言 问题说明:在汇报的过程中我们想添加具有web依赖项的控件,比如ui中有两个控件:第一个控件标签为m,其取值为:1、2;第二个控件标签为m0,m0的取值依赖于m,即…...
1700页,卷S人的 软件测试《八股文》PDF手册,涨薪跳槽拿高薪就靠它了
大家好,最近有不少小伙伴在后台留言,又得准备面试了,不知道从何下手! 不论是跳槽涨薪,还是学习提升!先给自己定一个小目标,然后再朝着目标去努力就完事儿了! 为了帮大家节约时间&a…...
bundle的常用命令
Bundle 是 Ruby 的一个包管理器,用于管理 Ruby 应用程序所需的依赖项。下面是一些常用的 Bundle 命令: 以下是常用的 Bundle 命令: 1. bundle install:安装所有在 Gemfile 中列出的 gem 包及其依赖项。 2. bundle update&#x…...
一、数据字典介绍
文章目录 一、数据字典介绍1、页面效果2、表设计3、数据分析4、根据页面效果分析数据接口 一、数据字典介绍 何为数据字典?数据字典就是管理系统常用的分类数据或者一些固定数据,例如:省市区三级联动数据、民族数据、行业数据、学历数据等&a…...
常见的SQL优化
索引优化:通过创建合适的索引来加快查询速度。查询优化:使用合适的查询语句和查询条件,避免全表扫描。比如: 避免使用SELECT *避免使用子查询避免使用OR操作符避免使用LIKE操作符使用LIMIT限制结果集大小优化查询语句的顺序 数据库…...
Sonic新生态Sonic IDE体验
背景 Sonic:免费开源的云真机测试平台,用心打造更好的使用体验。 之前在做APP的日常测试和UI自动化的时候,一直在使用Sonic 没有切换到平台上进行自动化测试的原因是由于现有脚本框架已经成熟,并且有很多自定义的拓展,所以Sonic的更多是一个设备管理员的角色 在Soni…...
[VRTK4.0]安装VRTKv4Tilia软件包导入程序
学习目标: 演示如何从Unitv资源商店安装VRTKv4Tilia包导入器,以轻松访问VRTKv4Tilia包,这些包为构建XR体验提供了各种有用的功能. 简述: 推荐使用2022.2.11F1以上版本来进行VRTK使用,我们可以从Unity资产商店导入Tilia包管理器&am…...
SpringBoot开发实用篇2---与数据层技术有关的替换和整合
四、数据层解决方案 1.SQL 现有数据层解决方案技术选型:DruidMyBatis-plusMySQL 数据源:DruidDataSource 持久化技术:MyBatis-plus/MyBatis 数据库:MySql 内置数据源: SpringBoot提供了3种内嵌的数据源对象供开发者选…...
科普ChatGPT
ChatGPT是什么? ChatGPT是一款基于人工智能技术的聊天机器人,可以进行自然语言的交互。它是由OpenAI公司开发的,其名称中的GPT是“Generative Pre-trained Transformer”的缩写,即基于预训练的转换器。ChatGPT使用预训练的神经网络模型来理…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
