当前位置: 首页 > news >正文

​数据库原理及应用上机(实验四 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连接查询)

✨作者&#xff1a;命运之光 ✨专栏&#xff1a;数据库原理及应用上机实验 目录 ✨一、实验目的和要求 ✨二、实验内容及步骤 ✨三&#xff0e;实验结果 ✨四、实验总结 &#x1f353;&#x1f353;前言&#xff1a; 数据库原理及应用上机实验报告的一个简单整理后期还会不…...

linux上使用系统安装和Docker安装mysql的两种方式

一、安装到linux 1、安装mysql-server 1、在安装之前查看下系统是否已经安装了mysql ls /usr/share2、安装mysql-server sudo apt-get install mysql-server3、再次查看&#xff0c;发现多了个mysql ls /usr/share | grep mysql //在ls打印结果中搜索mysql关键字4、登陆 在…...

解决Mac下载官网JDK速度过慢的问题

换了新电脑&#xff0c;用mac完去官网下载jdk&#xff0c;发现速度过于慢&#xff0c;要等非常久&#xff0c;为了解决这个问题&#xff0c;提供一个方法&#xff1a;将mac的网络换成手机热点&#xff0c;接着再去官网下载jdk1.8&#xff0c;速度快的飞起。 jdk1.8下载的链接&a…...

笔记本wifi与台式机、内网服务器共网、共享wifi详细教程

内容包括两个部分&#xff1a; 笔记本、台式机共网&#xff0c;笔记本连接WiFi&#xff0c;台式机通过网线连接笔记本电脑&#xff1b;笔记本、服务器共网&#xff0c;笔记本连接WiFi&#xff0c;服务器通过网线连接笔记本电脑。 1&#xff09;稍微简单易操作&#xff0c;2&am…...

纵观人类发展史,我发现了一个秘密!

文 / 高扬&#xff08;微信公众号&#xff1a;量子论&#xff09; 纵观人类的历史&#xff0c;就是工具化日益增强的历史。通过创新工具、解放生产力&#xff0c;人类从茹毛饮血到现在设计模型驾驭人工智能&#xff0c;一路从刀耕火种走到信息时代。 远古时期&#xff0c;人们偶…...

HDFS的数据流

1.HDFS写数据流程 &#xff08;1&#xff09;客户端通过Distributed FileSystem模块向NameNode请求上传文件&#xff0c;NameNode检查目标文件是否已存在&#xff0c;父目录是否存在。 &#xff08;2&#xff09;NameNode返回是否可以上传。 &#xff08;3&#xff09;客户端…...

[230531] 托福听力真题|TPO67配套词汇|10:23-11:23

目录 Con1 Lec1(ecology) Lec2(psychology) Con2 Lec3(art history) 重点复习巩固lecture 两篇Con都为简单等级 Con1 emergency n 紧急情况&#xff1b;突发情况 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 标题&#xff1a;通过开放式词汇部分分割变得更密集 作者&#xff1a;Peize Sun, Shoufa Chen, Chenchen Zhu, Fanyi Xiao, Pi…...

【SpringBoot】SpringBoot 纯后端项目如何自定义异常页面(Whitelabel Error Page)

文章目录 背景安排方案步骤 验证 背景 一个短链服务&#xff0c;业务将长链接给我&#xff0c;我转换成短地址&#xff0c;用户访问短地址时&#xff0c;我再做redirect&#xff1b;没有前端&#xff0c;纯后端项目短链会有过期时间&#xff0c;过期后将返回错误信息某一天一个…...

Netty核心技术三--NIO编程

1. JAVA NIO基本介绍 Java NIO 全称 java non-blocking IO&#xff0c;是指 JDK 提供的新API。从 JDK1.4 开始&#xff0c;Java 提供了一系列改进的输入/输出的新特性&#xff0c;被统称为 NIO(即 New IO)&#xff0c;是同步非阻塞的 NIO 相关类都被放在 java.nio 包及子包下&…...

机器人的运动范围:DFS

Problem: 剑指 Offer 13. 机器人的运动范围 文章目录 思路解题方法复杂度Code 思路 首先定义好地图&#xff0c;上下左右四个方向也就是{{1,0},{0,1},{-1,0},{0,-1}}&#xff0c;然后我们另外定义一个方法来判断题目要求的下标位数和是否大于k&#xff0c; boolean check(int x…...

Rshiny编写ui中具有web依赖项的控件{该问题的具体阐述请看引言}

Rshiny编写ui中具有web依赖项的控件{该问题的具体阐述请看引言} 引言conditionalPanel函数update*函数系列总结引言 问题说明:在汇报的过程中我们想添加具有web依赖项的控件,比如ui中有两个控件:第一个控件标签为m,其取值为:1、2;第二个控件标签为m0,m0的取值依赖于m,即…...

1700页,卷S人的 软件测试《八股文》PDF手册,涨薪跳槽拿高薪就靠它了

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;又得准备面试了&#xff0c;不知道从何下手&#xff01; 不论是跳槽涨薪&#xff0c;还是学习提升&#xff01;先给自己定一个小目标&#xff0c;然后再朝着目标去努力就完事儿了&#xff01; 为了帮大家节约时间&a…...

bundle的常用命令

Bundle 是 Ruby 的一个包管理器&#xff0c;用于管理 Ruby 应用程序所需的依赖项。下面是一些常用的 Bundle 命令&#xff1a; 以下是常用的 Bundle 命令&#xff1a; 1. bundle install&#xff1a;安装所有在 Gemfile 中列出的 gem 包及其依赖项。 2. bundle update&#x…...

一、数据字典介绍

文章目录 一、数据字典介绍1、页面效果2、表设计3、数据分析4、根据页面效果分析数据接口 一、数据字典介绍 何为数据字典&#xff1f;数据字典就是管理系统常用的分类数据或者一些固定数据&#xff0c;例如&#xff1a;省市区三级联动数据、民族数据、行业数据、学历数据等&a…...

常见的SQL优化

索引优化&#xff1a;通过创建合适的索引来加快查询速度。查询优化&#xff1a;使用合适的查询语句和查询条件&#xff0c;避免全表扫描。比如&#xff1a; 避免使用SELECT *避免使用子查询避免使用OR操作符避免使用LIKE操作符使用LIMIT限制结果集大小优化查询语句的顺序 数据库…...

Sonic新生态Sonic IDE体验

背景 Sonic:免费开源的云真机测试平台&#xff0c;用心打造更好的使用体验。 之前在做APP的日常测试和UI自动化的时候,一直在使用Sonic 没有切换到平台上进行自动化测试的原因是由于现有脚本框架已经成熟,并且有很多自定义的拓展,所以Sonic的更多是一个设备管理员的角色 在Soni…...

[VRTK4.0]安装VRTKv4Tilia软件包导入程序

学习目标&#xff1a; 演示如何从Unitv资源商店安装VRTKv4Tilia包导入器,以轻松访问VRTKv4Tilia包&#xff0c;这些包为构建XR体验提供了各种有用的功能. 简述&#xff1a; 推荐使用2022.2.11F1以上版本来进行VRTK使用&#xff0c;我们可以从Unity资产商店导入Tilia包管理器&am…...

SpringBoot开发实用篇2---与数据层技术有关的替换和整合

四、数据层解决方案 1.SQL 现有数据层解决方案技术选型&#xff1a;DruidMyBatis-plusMySQL 数据源&#xff1a;DruidDataSource 持久化技术&#xff1a;MyBatis-plus/MyBatis 数据库&#xff1a;MySql 内置数据源&#xff1a; SpringBoot提供了3种内嵌的数据源对象供开发者选…...

科普ChatGPT

ChatGPT是什么? ChatGPT是一款基于人工智能技术的聊天机器人&#xff0c;可以进行自然语言的交互。它是由OpenAI公司开发的&#xff0c;其名称中的GPT是“Generative Pre-trained Transformer”的缩写&#xff0c;即基于预训练的转换器。ChatGPT使用预训练的神经网络模型来理…...

高精度光照检测

光线检测仪&#xff0c;kotlin开发&#xff0c;调用手机感光模块检测室内外光照强度&#xff0c;用途多多&#xff0c;我主要用途孩子写作业检测光照保护视力。 食用方法∶打开即测&#xff0c;速度快&#xff0c;无广告&#xff0c;手机平视即可&#xff0c;无须直视光线。 买…...

Unity/Unreal开发者必看:用手机和陀螺仪实验,5分钟搞懂万向节死锁(附避坑指南)

Unity/Unreal开发者实战指南&#xff1a;用手机陀螺仪5分钟破解万向节死锁当你调试第一人称视角时&#xff0c;角色突然卡在墙面无法转动&#xff1b;当无人机模型在俯冲90度时失控乱转——这些很可能都是万向节死锁(Gimbal Lock)在作祟。作为实时3D开发中最恼人的数学陷阱之一…...

因果推断与机器学习融合:量化分析社会运动中镇压与抗议的动态关系

1. 项目概述&#xff1a;当数据科学遇见社会运动如果你研究过社会运动&#xff0c;尤其是那些看似突然爆发、席卷全国的抗议浪潮&#xff0c;你可能会被一个核心问题困扰&#xff1a;国家机器的镇压&#xff0c;究竟是浇灭火焰的冷水&#xff0c;还是火上浇油的催化剂&#xff…...

yuzu模拟器完整指南:在电脑上畅玩Switch游戏的终极解决方案

yuzu模拟器完整指南&#xff1a;在电脑上畅玩Switch游戏的终极解决方案 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想在电脑上体验任天堂Switch游戏的魅力吗&#xff1f;yuzu模拟器正是你寻找的完美答案。作为…...

终极免费音乐解锁工具:打破平台枷锁,让音乐重获自由

终极免费音乐解锁工具&#xff1a;打破平台枷锁&#xff0c;让音乐重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地…...

告别坐标点击!用Poco精准定位UI控件,让你的Airtest安卓自动化脚本更稳定

告别坐标点击&#xff01;用Poco精准定位UI控件&#xff0c;让你的Airtest安卓自动化脚本更稳定每次UI微调就导致脚本大面积失效&#xff1f;分辨率变化让精心编写的自动化测试瞬间崩溃&#xff1f;作为从坐标点击转型到控件识别的实践者&#xff0c;我深刻理解这种挫败感。三年…...

MeloTTS实战指南:解决多语言TTS部署中的核心挑战

MeloTTS实战指南&#xff1a;解决多语言TTS部署中的核心挑战 【免费下载链接】MeloTTS High-quality multi-lingual text-to-speech library by MyShell.ai. Support English, Spanish, French, Chinese, Japanese and Korean. 项目地址: https://gitcode.com/GitHub_Trendin…...

Java网络编程基础分享

在学习 Java 的过程中&#xff0c;网络编程是非常重要的一环。无论是后端开发、分布式系统、即时通讯、文件传输&#xff0c;还是游戏服务、物联网设备&#xff0c;都离不开网络通信一、计算机网络基础1.1 什么是计算机网络把不同地理位置、具有独立功能的计算机&#xff0c;通…...

昇腾NPU模型服务化——从离线模型到高可用推理服务

模型训练完只是第一步。真正产生业务价值的是把模型部署成724小时在线服务——毫秒级延迟、支持动态Batching、能扛住流量洪峰&#xff0c;且具备高可用性。 这篇将手把手教你基于昇腾NPU构建生产级模型推理服务&#xff0c;涵盖框架选型、服务化架构、动态Batching优化、热加载…...

计算机视觉的实战项目:从0到1搭建属于自己的图像识别系统

作为软件测试从业者&#xff0c;我们每天都在和各类功能验证、兼容性测试、自动化测试框架打交道&#xff0c;对AI领域的实战项目往往觉得“门槛高”“和日常工作不沾边”。但随着AI技术在互联网产品中的落地越来越深入&#xff0c;图像识别功能已经成为很多APP、智能硬件的核心…...