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
相关文章:

SQL实验 连接查询和嵌套查询
一、实验目的 1.掌握Management Studio的使用。 2.掌握SQL中连接查询和嵌套查询的使用。 二、实验内容及要求(请同学们尝试每道题使用连接和嵌套两种方式来进行查询,如果可以的话) 1.找出所有任教“数据…...
【JAVA WEB实用技巧与优化方案】Maven自动化构建与Maven 打包技巧
文章目录 一、MavenMaven生命周期介绍maven生命周期命令解析二、如何编写maven打包脚本maven 配置详解setting.xml主要配置元素setting.xml 详细配置使用maven 打包springboot项目maven 引入使用package命令来打包idea打包三、使用shell脚本自动发布四、使用maven不同环境配置加…...

详细分析Mysql中的SQL_MODE基本知识(附Demo讲解)
目录 前言1. 基本知识2. Demo讲解2.1 ONLY_FULL_GROUP_BY2.2 STRICT_TRANS_TABLES2.3 NO_ZERO_IN_DATE2.4 NO_ENGINE_SUBSTITUTION2.5 ANSI_QUOTES 前言 了解Mysql内部的机制有助于辅助开发以及形成整体的架构思维 对于基本的命令行以及优化推荐阅读: 数据库中增…...

vue3+uniapp
1.页面滚动 2.图片懒加载 3.安全区域 4.返回顶部,刷新页面 5.grid布局 place-self: center; 6.模糊效果 7.缩放 8.微信小程序联系客服 9.拨打电话 10.穿透 11.盒子宽度 12.一般文字以及盒子阴影 13.选中文字 14.顶部安全距离 15.onLoad周期函数在setup语法糖执行后…...

组织病理学结合人工智能之后,如何实际应用于临床?|顶刊精析·24-06-06
小罗碎碎念 今天这篇文章选自21年5月发表的nature medicine,标题名为——Deep learning in histopathology: the path to the clinic,这篇文章也是我规划的病理组学文献精析的第三篇,如果你能坚持把七篇都看完,相信你脑海中一定会…...

VCAST创建单元测试工程
1. 设置工作路径 选择工作目录,后面创建的 UT工程 将会生成到这个目录。 2. 新建工程 然后填写 工程名称,选择 编译器,以及设置 基础路径。注意 Base Directory 必须要为代码工程的根目录,否则后面配置环境会失败。 这样工程就创建好了。 把基础路径设置为相对路径。 …...

数据结构之归并排序算法【图文详解】
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE …...

设计模式基础
什么是设计模式 设计模式是一种在软件设计过程中反复出现的问题和相应解决方案的描述。它是一种被广泛接受的经验总结,可以帮助开发人员解决常见的设计问题并提高代码的重用性、可维护性和可扩展性。 设计模式可以分为三类: 创建型模式(Crea…...

Glide支持通过url加载本地图标
序言 glide可以在load的时候传入一个资源id来加载本地图标,但是在开发过程中。还得区分数据类型来分别处理。这样的使用成本比较大。希望通过自定义ModelLoader实现通过自定义的url来加载Drawab。降低使用成本 实现 一共四个类 类名作用GlideIcon通过自定义url的…...

网络安全形势与WAF技术分享
我一个朋友的网站,5月份时候被攻击了,然后他找我帮忙看看,我看他的网站、网上查资料,不看不知道,一看吓一跳,最近几年这网络安全形势真是不容乐观,在网上查了一下资料,1、中国信息通…...

【实战JVM】-实战篇-06-GC调优
文章目录 1 GC调优概述1.1 调优指标1.1.1 吞吐量1.1.2 延迟1.1.3 内存使用量 2 GC调优方法2.1 发现问题2.1.1 jstat工具2.1.2 visualvm插件2.1.3 PrometheusGrafana2.1.4 GC Viewer2.1.5 GCeasy 2.2 常见GC模式2.2.1 正常情况2.2.2 缓存对象过多2.2.3 内存泄漏2.2.4 持续FullGC…...

深入解析智慧互联网医院系统源码:医院小程序开发的架构到实现
本篇文章,小编将深入解析智慧互联网医院系统的源码,重点探讨医院小程序开发的架构和实现,旨在为相关开发人员提供指导和参考。 一、架构设计 智慧互联网医院系统的架构设计是整个开发过程的核心,直接影响到系统的性能、扩展性和维…...

获取 Bean 对象更加简单的方式
获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊。 对象装配(对象注⼊)即DI 实现依赖注入的方式有 3 种: 1. 属性注⼊ 2. 构造⽅法注⼊ 3. Setter 注⼊ 属性注入 属性注⼊是使⽤ Auto…...
ChatGPT基本原理
技术背景与基础: 深度学习:ChatGPT建立在深度学习技术之上,通过复杂的神经网络结构模拟人类的语言处理过程。深度学习使得ChatGPT能够处理海量的文本数据,并从中提取出复杂的语言模式和规律。GPT架构:ChatGPT基于GPT&a…...

几种更新 npm 项目依赖的实用方法
几种更新 npm 项目依赖的实用方法 引言1. 使用 npm update 命令2. 使用 npm-check-updates 工具3. 使用 npm outdated 命令4. 直接手动更新 package.json 文件5. 直接安装最新版本6. 使用自动化工具结语 引言 在软件开发的过程中,我们知道依赖管理是其中一个至关重…...

Python爬虫之简单学习BeautifulSoup库,学习获取的对象常用方法,实战豆瓣Top250
BeautifulSoup是一个非常流行的Python库,广泛应用于网络爬虫开发中,用于解析HTML和XML文档,以便于从中提取所需数据。它是进行网页内容抓取和数据挖掘的强大工具。 功能特性 易于使用: 提供简洁的API,使得即使是对网页结构不熟悉…...

前端怎么debugger排查线上问题
前端怎么debugger排查线上问题 1.问题背景2.问题详细说明3.处理方案a.开发环境怎么找,步骤一样的:b.生产环境怎么找,步骤一样的:还有一种情况就是你的子盒子是使用csshover父盒子出来的, 4.demo地址: 1.问题…...

LabVIEW源程序安全性保护综合方案
LabVIEW源程序安全性保护综合方案 一、硬件加密保护方案 选择和安装硬件设备 选择加密狗和TPM设备:选择Sentinel HASP加密狗和支持TPM(可信平台模块)的计算机主板。 安装驱动和开发工具:安装Sentinel HASP加密狗的驱动程序和开发…...
JS包装类:循环中为什么建议用变量存储str.length进行循环判断?
前言 在Javascript通常我们在遍历一个字符串的时候通常使用的方式是 var str "abcdefg"; for(let i0;i<str.length;i){}但在最近的学习中,有人建议我最好应该是下面这样执行。 var str "abcdefg"; for(let i0,len str.length;i<len;i)…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...