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

news2025/1/20 11:01:03

一、实验目的

1.掌握Management Studio的使用。

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

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

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

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

--连接

SELECT DISTINCT Teac_name ,Course_name

from Teacher,Course,CourseTeacher

WHERE Course.Course_name = '数据库原理'

and Course.Course_id=CourseTeacher.Course_id

and CourseTeacher.Teac_id= Teacher.Teac_id

--嵌套

SELECT DISTINCT Teac_name FROM Teacher

WHERE Teac_id IN (SELECT Teac_id

from CourseTeacher

WHERE Course_id IN

(SELECT Course_id

from Course

WHERE Course_name='数据库原理'

)

)

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

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

--由于所提供数据并无学号为“980101011”,因此本题选用“140102006”作为查询对象

--连接

SELECT Stu_name,Course.Course_id,Course.Course_name

from Course,CourseTeacher,Student

WHERE Stu_id='140102006'

and Student.Class_id=CourseTeacher.Class_id

and CourseTeacher.Course_id=Course.Course_id

--嵌套

SELECT Course_id,Course_name from Course

WHERE Course_id IN(SELECT Course_id

from CourseTeacher

WHERE Class_id IN

(SELECT Class_id

from Student

WHERE Stu_id='140102006'

)

)

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

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

--连接

SELECT DISTINCT Stu_name,Course_id,Grade

from Student,StudentGrade

WHERE Stu_name='涂杰杰'

and Student.Stu_id=StudentGrade.Stu_id

--嵌套

SELECT Course_id,Grade from StudentGrade

WHERE Stu_id IN (SELECT Stu_id

from Student

WHERE Stu_name='涂杰杰')

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

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

--连接

SELECT Stu_name,Course_name,Grade

from StudentGrade,Course,Student

WHERE Stu_name='苏贤兴'

and Student.Stu_id=StudentGrade.Stu_id

and StudentGrade.Course_id=Course.Course_id

--嵌套

SELECT Course_name,Grade from StudentGrade

join Course on Course.Course_id = StudentGrade.Course_id

WHERE Stu_id IN(SELECT Stu_id

from Student

WHERE Stu_name='苏贤兴')

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

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

--外连接

SELECT Course.Course_id,Course_name,count(StudentGrade.Stu_id) as 选修人数

from Course join StudentGrade on Course.Course_id=StudentGrade.Course_id

Group 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_id

Group by Course.Course_id,Course_name

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

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

--由于提供的材料缺少“0109”和“0111”,因此本体选取“0101”和“0102”作为条件

--连接

SELECT Student.Stu_id,Stu_name,Class_id

from Student join StudentGrade on Student.Stu_id=StudentGrade.Stu_id

WHERE Course_id='0101' or Course_id='0102'

--嵌套

SELECT Stu_id,Stu_name,Class_id from Student

WHERE Stu_id IN (SELECT Stu_id

from StudentGrade

WHERE Course_id='0101' or Course_id='0102')

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

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

--由于材料未提供“C语言”,因此将其替换为“数据库原理”

--内部查询使用 OR 运算符查找出符合条件的课程编号,并使用聚合函数 COUNT 和 HAVING 子句确保每个学生都选修了这两门课

--连接

SELECT Stu_id

from StudentGrade join Course on StudentGrade.Course_id=Course.Course_id

WHERE Course_name='数据库原理' or Course_name='数据结构'

GROUP By Stu_id

HAVING COUNT(*) = 2

--嵌套

SELECT Stu_id from StudentGrade

WHERE Course_id IN (SELECT Course_id

from Course

WHERE Course_name='数据库原理' or Course_name='数据结构'

)

GROUP By Stu_id

HAVING 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_name

from Student

join StudentGrade as DSID

on DSID.Stu_id = Student.Stu_id

join StudentGrade as CLID

on CLID.Stu_id = Student.Stu_id and DSID.Course_id <> CLID.Course_id

join Course as DS

on DSID.Course_id = DS.Course_id and DS.Course_name = '数据结构'

join Course as CL

on CLID.Course_id = CL.Course_id and CL.Course_name = '数据库原理'

where DSID.Grade > CLID.Grade

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

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

相关文章

云计算如何助力金融科技企业实现高效运营

一、引言 随着信息技术的飞速发展,云计算作为一种新兴的计算模式,正在逐渐改变着传统金融行业的运营模式。金融科技企业作为金融行业的重要组成部分,面临着日益增长的业务需求和技术挑战。在这一背景下,云计算凭借其弹性扩展、高可用性、低成本等优势,成为金融科技企业实…

7、架构-架构的安全性

即使只限定在“软件架构设计”这个语境下&#xff0c;系统安全仍然是一 个很大的话题。我们谈论的计算机系统安全&#xff0c;不仅仅是指“防御系统 被黑客攻击”这样狭隘的安全&#xff0c;还至少应包括&#xff08;不限于&#xff09;以下这些问 题的具体解决方案。 认证&am…

【Linux多线程】LWP和pthread_t

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

深度网络学习笔记(一)——self-attention机制介绍和计算步骤

self-attention机制介绍及其计算步骤 前言一、介绍和意义二、 计算细节2.1 计算Attention Score2.2 计算value2.3 计算关联结果b2.4 统一计算 三、总结 前言 Transformer是一种非常常见且强大的深度学习网络架构&#xff0c;尤其擅长处理输出为可变长度向量序列的任务&#xf…

杂项——STM32ZET6要注意的一些问题——高级定时器问题和PB3,PB4引脚问题

ZET6可能会用到定时器&#xff0c;高级定时器要输出PWM要加上这样一行代码&#xff0c;否则无法正常输出PWM波 TIM_CtrlPWMOutputs(TIM8, ENABLE); // 主输出使能&#xff0c;当使用的是通用定时器时&#xff0c;这句不需要 ZET6中PB3,PB4引脚默认功能是JTDO和NJTRST,如果想将…

python基础篇(2):字符串扩展知识点

1 字符串的三种定义方式 字符串在Python中有多种定义形式&#xff1a; &#xff08;1&#xff09;单引号定义法 name 博主帅绝上下五千年 print(name) print(type(name)) 效果如下&#xff1a; &#xff08;2&#xff09;双引号定义法 name "博主帅绝上下五千年&qu…

代课老师可以评职称吗?

代课老师可以评职称吗&#xff1f;这个问题颇具争议。代课老师由于其工作性质的特殊性&#xff0c;往往处于职称评审的边缘地带 代课老师&#xff0c;承担着临时或短期的教学任务&#xff0c;填补因各种原因造成的教师空缺。他们的工作性质决定了他们与正式教师在职责和角色上存…

【uni-app】开发问题汇总

文章目录 1、APP获取dom2、添加页面&#xff0c;参考其他页面&#xff0c;国际化就是对应页面的导航的国际化"navigationBarTitleText": "%m.i.ForgetPaymentPassword.bartitle%",3、setStatusBarStyle这个导航栏设置方法不要了&#xff0c;导航栏现在都用…

66、API攻防——接口安全阿里云KEYPostmanDVWS

文章目录 一、工具使用——Postman自动化测试二、安全问题——Dvws泄露&鉴权&XXE三、安全问题——阿里KEY信息泄露利用 dvws-node 一、工具使用——Postman自动化测试 二、安全问题——Dvws泄露&鉴权&XXE 路径中出现/api/&#xff0c;一般都是接口。 请求包是…

Cesium项目报错An error occurred while rendering. Rendering has stopped.

一般就是本地打开会报错&#xff0c;改成用本地服务器打开 全局安装一个live-server sudo cnpm i live-server -g然后新增一个package.json文件 npm init -y然后在package.json的scripts中增加一个命令 "server": "live-server ./ --port8181 --hostlocalhos…

香橙派 AIpro 的系统评测

0. 前言 你好&#xff0c;我是悦创。 今天受邀测评 Orange Pi AIpro开发板&#xff0c;我将准备用这个测试简单的代码来看看这块开发版的性能体验。 分别从&#xff1a;Sysbench、Stress-ng、PyPerformance、RPi.GPIO Benchmark、Geekbench 等方面来测试和分析结果。 下面就…

第15章 面向服务架构设计理论实践

服务是一个由服务提供者提供的&#xff0c;用于满足使用者请求的业务单元。服务的提供者和使用者都是软件代理为了各自的利益而产生的角色。 在面向服务的体系结构(Service-Oriented Architecture,SOA)中&#xff0c;服务的概念有了延伸&#xff0c;泛指系统对外提供的功能集。…

纷享销客BI智能分析平台技术架构介绍

纷享销客BI智能分析平台致力于降低用户上手门槛&#xff0c;无缝继承纷享销客PaaS平台的对象关系模型和权限体系&#xff0c;让使用纷享CRM的营销人员、销售人员、服务人员等各类角色人员都能够将分析场景与业务场景相融合&#xff0c;将数据思维融合到自己的日常工作、团队工作…

【笔记】半车垂向振动模型

模型如下 半车振动模型,被动悬架 力学推导 代码 %书第135页 clc clear close all %% 1.车辆参数 ms=690; Isy=1222; mwf=40.5; mwr=45.4; Ksf=17000; Ksr=22000; Csf=1500; Csr= 1500; Kwf= 192000; Kwr= 192000; a= 1.25; b= 1.51; L=a+b; %% 2.状态方程 A=[0 0 0…

今日科普:了解、预防、控制高血压

高血压&#xff0c;常被称为“隐形的健康威胁”&#xff0c;许多患者可能在毫无预警的情况下发病&#xff0c;且患病率逐年攀升&#xff0c;同时患者群体逐渐年轻化&#xff0c;高血压虽然难以根治&#xff0c;但并不可怕&#xff0c;真正可怕的是血压长期居高不下&#xff0c;…

【一百零一】【算法分析与设计】差分,1109. 航班预订统计,P4231 三步必杀,P5026 Lycanthropy

1109. 航班预订统计 这里有 n 个航班&#xff0c;它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings &#xff0c;表中第 i 条预订记录 bookings[i] [first(i), last(i), seats(i)] 意味着在从 first(i) 到 last(i) &#xff08;包含 first(i) 和 last(i) &#xff09;…

【ArcGISPro SDK】构建多面体要素

结果展示 每个面构建顺序 代码 using ArcGIS.Core.CIM; using ArcGIS.Core.Data; using ArcGIS.Core.Geometry; using ArcGIS.Desktop.Catalog; using ArcGIS.Desktop.Core; using ArcGIS.Desktop.Editing; using ArcGIS.Desktop.Extensions; using ArcGIS.Desktop.Framework;…

JVM学习-内存泄漏

内存泄漏的理解和分类 可达性分析算法来判断对象是否是不再使用的对象&#xff0c;本质都是判断一上对象是否还被引用&#xff0c;对于这种情况下&#xff0c;由于代码的实现不同就会出现很多内存泄漏问题(让JVM误以为此对象还在引用&#xff0c;无法回收&#xff0c;造成内存泄…

写一个盲盒模拟器

最近想写一个小程序&#xff0c;随便写一个玩吧&#xff0c;先想了下功能&#xff1a; 1.有很多盲盒&#xff0c;可以选择模拟开启 2.自定义盲盒&#xff0c;我们可以自定义制作盲盒自己玩 3.用户界面&#xff0c;记录盲盒历史&#xff0c;可以给坏越提意见 所用技术栈&…

数据库 mysql 的彻底卸载

MySQL卸载步骤如下&#xff1a; &#xff08;1&#xff09;按 winr 快捷键&#xff0c;在弹出的窗口输入 services.msc&#xff0c;打开服务列表。 &#xff08;2&#xff09;在服务列表中&#xff0c; 找到 mysql 开头的所有服务&#xff0c; 右键停止&#xff0c;终止对应的…