SQL实验 连接查询和嵌套查询

一、实验目的

1.掌握Management Studio的使用。

2.掌握SQL中连接查询和嵌套查询的使用。

二、实验内容及要求(请同学们尝试每道题使用连接和嵌套两种方式来进行查询,如果可以的话)

1.找出所有任教“数据库”的教师的姓名。

--找出所有任教“数据库”的教师的姓名。--连接SELECT DISTINCT Teac_name ,Course_namefrom Teacher,Course,CourseTeacherWHERE Course.Course_name = '数据库原理'and Course.Course_id=CourseTeacher.Course_idand CourseTeacher.Teac_id= Teacher.Teac_id--嵌套SELECT DISTINCT Teac_name FROM TeacherWHERE Teac_id IN (SELECT Teac_idfrom CourseTeacherWHERE Course_id IN(SELECT Course_idfrom CourseWHERE Course_name='数据库原理'))

找出学号为“980101011”的学生选修的课程号和课程名。 

--找出学号为“980101011”的学生选修的课程号和课程名。 --由于所提供数据并无学号为“980101011”,因此本题选用“140102006”作为查询对象--连接SELECT Stu_name,Course.Course_id,Course.Course_namefrom Course,CourseTeacher,StudentWHERE Stu_id='140102006'and Student.Class_id=CourseTeacher.Class_idand CourseTeacher.Course_id=Course.Course_id--嵌套SELECT Course_id,Course_name from CourseWHERE Course_id IN(SELECT Course_idfrom CourseTeacherWHERE Class_id IN(SELECT Class_idfrom StudentWHERE Stu_id='140102006'))

3.“涂杰杰”所选修的全部课程号及成绩。(注意:school中可能有同名,即可能有多名学生叫“涂杰杰”。) 

-- “涂杰杰”所选修的全部课程号及成绩。(注意:school中可能有同名,即可能有多名学生叫“涂杰杰”。)--连接SELECT DISTINCT Stu_name,Course_id,Gradefrom Student,StudentGradeWHERE Stu_name='涂杰杰'and Student.Stu_id=StudentGrade.Stu_id--嵌套SELECT Course_id,Grade from StudentGradeWHERE Stu_id IN (SELECT Stu_idfrom StudentWHERE Stu_name='涂杰杰')

4. 找出“苏贤兴”同学所学课程的名称和成绩。 

--找出“苏贤兴”同学所学课程的名称和成绩。--连接SELECT Stu_name,Course_name,Gradefrom StudentGrade,Course,StudentWHERE Stu_name='苏贤兴'and Student.Stu_id=StudentGrade.Stu_idand StudentGrade.Course_id=Course.Course_id--嵌套SELECT Course_name,Grade from StudentGradejoin Course on Course.Course_id = StudentGrade.Course_idWHERE Stu_id IN(SELECT Stu_idfrom StudentWHERE Stu_name='苏贤兴')

5.显示所有课程的选修情况(最终结果列包含课程号,课程名,选修人数)。(外连接)

--显示所有课程的选修情况(最终结果列包含课程号,课程名,选修人数)。--外连接SELECT Course.Course_id,Course_name,count(StudentGrade.Stu_id) as 选修人数from Course join StudentGrade on Course.Course_id=StudentGrade.Course_idGroup by Course.Course_id,Course_name--嵌套--解析 用join操作符将 Course 表和 StudentGrade 表进行连接,关联条件为它们之间的 Course_Id 列。--同样使用了子查询的方式来获取 StudentGrade 表中的 Course_id 和 Stu_id 列,因此在 JOIN 子句中使用了一个括号内嵌套的 SELECT 语句,并命名为 StudentGrade。--根据 Course 表的 Course_id 列和 Course_name 列同时进行 GROUP BY 分组操作SELECT Course.Course_id,Course_name,count(StudentGrade.Stu_id) as 选修人数from Course join(SELECT Course_id,Stu_id from StudentGrade)as StudentGrade on Course.Course_id=StudentGrade.Course_idGroup by Course.Course_id,Course_name

6.检索选修课程号为“0109”或“0111”的学生学号、姓名和所在班级编号。 

--检索选修课程号为“0109”或“0111”的学生学号、姓名和所在班级编号。--由于提供的材料缺少“0109”和“0111”,因此本体选取“0101”和“0102”作为条件--连接SELECT Student.Stu_id,Stu_name,Class_idfrom Student join StudentGrade on Student.Stu_id=StudentGrade.Stu_idWHERE Course_id='0101' or Course_id='0102'--嵌套SELECT Stu_id,Stu_name,Class_id from StudentWHERE Stu_id IN (SELECT Stu_idfrom StudentGradeWHERE Course_id='0101' or Course_id='0102')

7.检索既选修课程“数据结构”又选修了“C语言”的学生学号。

--检索既选修课程“数据结构”又选修了“C语言”的学生学号。--由于材料未提供“C语言”,因此将其替换为“数据库原理”--内部查询使用 OR 运算符查找出符合条件的课程编号,并使用聚合函数 COUNT 和 HAVING 子句确保每个学生都选修了这两门课--连接SELECT Stu_idfrom StudentGrade join Course on StudentGrade.Course_id=Course.Course_idWHERE Course_name='数据库原理' or Course_name='数据结构'GROUP By Stu_idHAVING COUNT(*) = 2--嵌套SELECT Stu_id from StudentGradeWHERE Course_id IN (SELECT Course_idfrom CourseWHERE Course_name='数据库原理' or Course_name='数据结构')GROUP By Stu_idHAVING COUNT(*) = 2

8.检索选修了课程“数据结构”和“C语言”两门课程并且“数据结构”分数高于“C语言”的学生学号和姓名。

--检索选修了课程“数据结构”和“C语言”两门课程并且“数据结构”分数高于“C语言”的学生学号和姓名。--由于材料未提供“C语言”,因此将其替换为“数据库原理”--该查询语句使用了 JOIN 操作符将 Student 表和 StudentGrade 表进行连接,其中又对 StudentGrade 表使用了两次JOIN操作符。第一次是将 StudentGrade 表自联接为一个别名为 DSID (代表数据结构),关联条件是 StudentGrade 表中的 Stu_id 列与 Student 表中的 Stu_id 列相等。第二次是再次将 StudentGrade 表自联接为一个别名为 CLID(代表数据库原理),关联条件是 StudentGrade 表中的 Stu_id 列与 Student 表中的 Stu_id 列相等并且 DSID 表中的 Course_id 列不等于 CLID 表中的 Course_id 列。--接着,在 JOIN 子句中分别使用了两个括号内嵌套的 SELECT 语句,并命名为 DS 和 CL,以获取对应课程名称的 Course 记录,同时关联各自的 Course_id 列。--最后,在 WHERE 子句中设置了筛选条件,即要求 DSID 表中的 Grade 列大于 CLID 表中的 Grade 列。SELECT Student.Stu_id,Student.Stu_namefrom Studentjoin StudentGrade as DSIDon DSID.Stu_id = Student.Stu_idjoin StudentGrade as CLIDon CLID.Stu_id = Student.Stu_id and DSID.Course_id <> CLID.Course_idjoin Course as DSon DSID.Course_id = DS.Course_id and DS.Course_name = '数据结构'join Course as CLon CLID.Course_id = CL.Course_id and CL.Course_name = '数据库原理'where DSID.Grade > CLID.Grade

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

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

相关文章

知识图谱应用---智慧医疗

文章目录 智慧医疗典型应用 智慧医疗 智慧医疗是利用先进的物联网与移动通信技术、大数据及人工智能等新一代IT技术&#xff0c;实现医疗信息系统与医疗过程的智能化辅助与自动化处理&#xff0c;实现医疗业务流程的数字化运作&#xff0c;实现患者与医务人员、医疗机构、医疗设…

ChatGPT制作一个简单的客服机器人

包含功能&#xff1a; MVP&#xff08;最简可行产品&#xff09;版本的客服机器人应该聚焦于核心功能&#xff0c;以快速上线和测试用户反馈为目标。以下是一个简化的版本&#xff1a; 自动问答&#xff08;FAQ&#xff09;功能&#xff1a; 支持回答常见问题&#xff0c;例如…

转让北京书画院自己名下随时配合变更

北京地区现在已经停批了书画院、科技院、研究院等等只要是带院、中心、所等等都是挺不能新设立也不能核名。要是想经营这类的企业可以选择收购&#xff0c;目前市面上有书画院、教育科技院、教育研究院、中医研究院、信息技术研究院、医学研究院等等因为停批的一个原因导致转让…

基于MetaGPT构建LLM 订阅 Agent

前言 在上一篇文章中&#xff0c;我们学习了如何利用MetaGPT框架构建单智能体和多智能体&#xff0c;并通过一个技术文档撰写Agent和课后作业较为完整的理解一个Agent的需求分析和开发流程&#xff1b;但是技术要和应用结合才能得到更广泛的推广&#xff1b;在本文中&#xff0…

ClickHouse内幕(1)数据存储与过滤机制

本文主要讲述ClickHouse中的数据存储结构&#xff0c;包括文件组织结构和索引结构&#xff0c;以及建立在其基础上的数据过滤机制&#xff0c;从Part裁剪到Mark裁剪&#xff0c;最后到基于SIMD的行过滤机制。 数据过滤机制实质上是构建在数据存储格式之上的算法&#xff0c;所…

ShowDoc item_id 未授权SQL注入漏洞复现

0x01 产品简介 ShowDoc 是一个开源的在线文档协作平台,它支持Markdown、图片等多种格式,方便团队成员共同编辑和分享文档。企业常见使用场景是使用其进行接口文档、内部知识库管理。 0x02 漏洞概述 2024年6月,ShowDoc官方发布新版本修复了一个SQL注入漏洞。鉴于该漏洞无前…

msvcr120.dll是干嘛的?出现找不到msvcr120.dll丢失怎样解决

msvcr120.dll是Microsoft Visual C 2012 Redistributable的核心文件&#xff0c;它是Microsoft Corporation开发的C/C运行时库文件之一。这个文件通常与应用程序一起安装&#xff0c;为应用程序提供许多基本的运行时功能&#xff0c;包括内存管理、异常处理、输入/输出操作等。…

<网络安全>《88 国内主要企业网络安全公司概览(四)》

9 杭州迪普科技股份有限公司&#xff08;简称联软科技&#xff09; 信息内容LOGO成立日期创始于2008年总部浙江省杭州市滨江区月明路595号迪普科技18楼背景民营企业是否上市300768注册资本64,382.9039万主要产品网络安全数据安全交换机简介安全大数据处理引擎与AI智能分析引擎…

微软云计算[2]之微软云关系数据库SQL Azure

微软云关系数据库SQL Azure SQL Azure概述SQL Azure关键技术SQL Azure数据库SQL Azure报表服务SQL Azure数据同步 SQL Azure和SQL Server对比 SQL Azure概述 SQL Azure是微软的云中关系型数据库。 SQL Azure数据库简化了多数据库的供应和部署。 SQL Azure还为用户提供内置的高…

OneCommander使用与安装手册

OneCommander使用与安装手册 一、引言 OneCommander是一款专为Windows 10和Windows 11用户设计的现代化文件管理器&#xff0c;它提供了直观、高效的文件浏览和管理体验。本手册将指导您完成OneCommander的安装过程&#xff0c;并介绍其主要功能和操作方法。 二、安装前准备…

下载安装Grafana 监控mysql和Linux主机

下载地址:https://grafana.com/grafana/download [rootlocalhost ~]# wget https://dl.grafana.com/oss/release/grafana-7.2.0- 1.x86_64.rpm 安装 [rootlocalhost ~]# yum install grafana-7.2.0-1.x86_64.rpm -y启动服务 [rootlocalhost ~]# systemctl enable --now grafa…

海外仓系统费用分析:小型海外仓,家庭海外仓怎么权衡性价比

小型海外仓、家庭海外仓作为海外仓行业重要的组成部分&#xff0c;以其特有的灵活性&#xff0c;高性价比等优点受到了很多跨境卖家的青睐。 不过对于小型海外仓&#xff0c;家庭仓本身来说&#xff0c;市场机遇固然重要&#xff0c;如何提升自己的业务水平&#xff0c;提升效…

配置Kubernetes资源管理Secret与ConfigMap

前言 Kubernetes 中的 Secret&#xff08;提供加密模式&#xff09;和 ConfigMap&#xff08;提供配置&#xff09;是关键的资源&#xff0c;用于安全地存储和管理敏感信息和配置数据。它们在应用程序开发和部署过程中扮演着重要的角色。本文将介绍如何有效地配置和管理这些资…

【Linux多线程】LWP和pthread_t

文章目录 LWPclone系统调用查看线程LWP理解LWP与TID pthread_id LWP LWP是Linux中线程的具体实现形式&#xff0c;在linux中&#xff0c;进程和线程本质上都是相同的&#xff0c;都是通过task_struct结构体来表示的。LWP是内核级线程&#xff0c;TID是其唯一标识符&#xff0c…

什么是PaaS平台?

随着信息化发展&#xff0c;数字技术与经济社会各个领域的融合逐渐深入&#xff0c;行业需求不断升级&#xff0c;逐渐呈现多样化、复杂性的态势。传统软件开发模式&#xff0c;耗时耗力&#xff0c;已经难以应对企业新形势下的业务需求。面对挑战&#xff0c;PaaS平台以其天然…

工厂车间运用生产管理看板系统的多重优势

在当今竞争激烈的制造业领域&#xff0c;工厂车间不断寻求创新和优化的方法来提高生产效率、质量和管理水平。生产管理看板系统的运用成为了许多工厂的明智选择&#xff0c;它带来了多重显著优势。 一、生产管理看板系统极大地提升了生产过程的可视化程度。 通过生产管理看板系…

nginx代理vue项目路由跳转刷新

常规代理 在我们日常开发中&#xff0c;前端部署到服务器&#xff0c;需要用到nginx部署&#xff0c;简单代理如下&#xff1a; #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid…

怎么把mov格式的视频转换mp4?四种方法教会你mov转MP4!

怎么把mov格式的视频转换mp4&#xff1f;在这个数字化时代&#xff0c;视频已经跻身为生活的核心元素&#xff0c;然而&#xff0c;制作和分享视频时选择合适的格式变得至关重要&#xff0c;在庞大的视频格式库中&#xff0c;我们熟知的包括mov和MP4&#xff0c;它们各有特色&a…

金融科技引领跨境支付新潮流:智慧、速度与安全的完美融合

一、引言 在全球经济日益紧密相连的今天,跨境支付作为连接各国贸易和金融活动的桥梁,正迎来金融科技带来的深刻变革。金融科技以其独特的智慧化、高效化和安全化特性,正逐步渗透到跨境支付的各个环节,为跨境支付领域带来前所未有的创新和发展。本文将探讨金融科技如何引领跨…

mysql高级刷题-01-求中位数

题目&#xff1a; 解题代码 select sum(num) / count(num) as median from (select num,row_number() over (order by num desc,id desc ) as desc_math,row_number() over (order by num ,id ) as asc_mathfrom number) as t1 where asc_math in (desc_math, desc…