MySQL练习题

有三个表,表S(学生表),C(课程表),SSC(学生选课表)

  •         S(SNO,SNAME)代表(学号,姓名)
  •         C(CNO,CNAME,CTEACHER)代表(课号,课名,老师)
  •         SSC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)

问题:

  •         1.找出没有选过’‘黎明’'老师的所有学生姓名
  •         2.列出2门以上(含2门)不及格学生姓名及平均成绩
  •         3.既学过1号课程又学过2号课程的所有的学生姓名
CREATE TABLE SSC
(SNO VARCHAR(200),CNO VARCHAR(200),SCGRADE VARCHAR(200)
);
CREATE TABLE S
(SNO VARCHAR(200 ),SNAME VARCHAR(200)
);
CREATE TABLE C
(CNO VARCHAR(200),CNAME VARCHAR(200),CTEACHER VARCHAR(200)
);
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '1', '语文', '张'); 
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '2', '政治', '王'); 
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '3', '英语', '李'); 
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '4', '数学', '赵'); 
INSERT INTO C ( CNO, CNAME, CTEACHER ) VALUES ( '5', '物理', '黎明'); 
commit;
INSERT INTO S ( SNO, SNAME ) VALUES ( '1', '学生 1'); 
INSERT INTO S ( SNO, SNAME ) VALUES ( '2', '学生 2'); 
INSERT INTO S ( SNO, SNAME ) VALUES ( '3', '学生 3'); 
INSERT INTO S ( SNO, SNAME ) VALUES ( '4', '学生 4'); 
commit;
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '1', '1', '40'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '1', '2', '30'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '1', '3', '20'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '1', '4', '80'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '1', '5', '60'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '2', '1', '60'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '2', '2', '60'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '2', '3', '60'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '2', '4', '60'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '2', '5', '40'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '3', '1', '60'); 
INSERT INTO SSC ( SNO, CNO, SCGRADE ) VALUES ( '3', '3', '80'); 
commit;

 问题1.找出没有选过’‘黎明’'老师的所有学生姓名:

        步骤①、先找出黎明老师的所有课号:

                select c.cno from c where c.cteacher = '黎明';

        步骤②、找出选过①中课号的所有学号:(易错点:不能找没选过1中课号的所有学号) 

    select ssc.sno from ssc where ssc.cno in (select c.cno from c where c.cteacher = '黎明'); 

         步骤③、在S表中排除②中的学号:

        select s.sname

        from s

        where s.sno not in

   (select ssc.sno from ssc where ssc.cno in (select c.cno from c where c.cteacher = '黎明'));

正确结果:



 问题1.找出没有选过’‘黎明’'老师的所有学生姓名易错点

正确思路是: 应该先找出选过’‘黎明’'老师的所有学生学号,然后最终再排除这些学号

我的错误思路:这四种思路全部错误,尤其是第三、四种,在开发中一般是不能用多表联查的

    ①:先从C表中找出不是黎明老师的课号,然后再通过获得的课号从SSC表中找出对应的学号

select c.cno from c where c.cteacher !='黎明';

select ssc.sno from ssc where ssc.cno in (select c.cno from c where c.cteacher !='黎明');

 例如黎明老师课号为5,其余课号为1、2、3、4

在SSC表中的以下三条记录:

        SNO  CNO SCGRADE

        李四     5

        李四     1   (会被选中)

        李四     2   (会被选中)

        明明李四选了黎明老师课号,但是还是被选中了


    ②:先从C表中找出黎明老师的所有课号,再从SSC表中排除掉选了这些课号的学号:

       #错误sql:

           select ssc.sno from ssc

           where ssc.cno not in

                 (select c.cno from c where c.cteacher = '黎明');

    ③、④:三张表进行连接:S表和SSC表通过学号连接,SSC表和C表通过课号连接,过滤条件为老师不是黎明

#错误sql:
SELECT S.SNAME
FROM S
WHERE S.SNO IN (SELECT SSC.SNOFROM SSCJOIN C ON SSC.CNO = C.CNOWHERE C.CTEACHER != '黎明'
);#这个也是错误的:SELECT S.SNAME-> FROM S-> JOIN SSC ON S.SNO = SSC.SNO-> JOIN C ON SSC.CNO = C.CNO-> WHERE C.CTEACHER != '黎明';#实在想要连表查询,只能这样写才正确:SELECT S.SNAME
FROM S
WHERE S.SNO NOT IN (SELECT SSC.SNOFROM SSCJOIN C ON SSC.CNO = C.CNOWHERE C.CTEACHER = '黎明'
);

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

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

相关文章

[MySQL]数据库原理8——喵喵期末不挂科

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

NVM的安装与配置

目录 一、简介二、下载2.1、windows环境下载地址2.2、安装 三、配置3.1、查看可安装版本3.2、安装版本3.3、使用和切换版本3.4、模块配置 四、其他4.1、全局安装pnpm4.2、常用nvm命令 一、简介 NVM,全称为Node Version Manager,是一个流行的命令行工具&a…

k8s控制器(五)_____DaemonSet

DaemonSet控制器 DaemonSet控制器是Kubernetes中的一种控制器,用于确保集群中的每个节点都运行一个Pod的副本。它通常用于在整个集群中部署一些系统级别的服务: 在每一个node节点运行一个存储服务,例如gluster,ceph。在每一个no…

模型预测控制MPC(2)—— 无约束线性MPC

前文:模型预测控制MPC(1)—— 基础概念参考:模型预测控制(2022春)本文从偏控制的角度介绍无约束线性MPC方法, x , u , J x,u,J x,u,J 分别代表状态、动作和代价函数 文章目录 1. 问题定义1.1 多…

P2P通信基本原理

在数字世界的脉络中,点对点(P2P)技术如同一条悄无声息的河流,流经信息的每个角落,连接着世界各地的计算机和设备。这种去中心化的网络模型,不仅打破了传统的客户端-服务器架构的界限,还赋予了数…

DC-5渗透测试复现

DC-5渗透测试复现 目的: 获取最高权限以及5个flag 过程: 信息打点-文件包含漏洞-弹shell- scren-4.0.5提权 环境: 攻击机:kali(192.168.85.136) 靶机:DC_3(192.168.85.134) 复现: 一.信息收集 nma…

DC-2渗透测试复现

DC-2渗透测试复现 目的: 获取最高权限以及5个flag 过程: 信息打点-ssh连接-git提权 环境: 攻击机:kali(192.168.85.136) 靶机:DC_2(192.168.85.132) 复现: 一.信息收集 nmap -sP 192.168.85.0/24 …

element问题总结之el-table使用fixed固定列后滚动条滑动到底部或者最右侧的时候错位问题

el-table使用fixed固定列后滚动条滑动到底部或者最右侧的时候错位 效果图前言解决方案纵向滑动滚动条滑动到底部的错位解决横向滚动条滑动到最右侧的错位解决 效果图 前言 在使用el-table固定行的时候移动滚动条会发现移动到底部或者移动到最右侧的时候会出现表头和内容错位或…

头歌-机器学习 第9次实验 随机森林

第1关:Bagging 任务描述 本关任务:补充 python 代码,完成 BaggingClassifier 类中的 fit 和 predict 函数。请不要修改 Begin-End 段之外的代码。 相关知识 为了完成本关任务,你需要掌握: 什么是 Bagging&#xf…

Day37:LeedCode 738.单调递增的数字 968.监控二叉树 蓝桥杯 翻转

738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输出: 9 思路: 假设这个数是98,…

Nginx健康检查

Nginx健康检查nginx_upstream_check_module nginx健康检查介绍: ​ 主动健康检查&#xff0c;nignx定时主动地去ping后端的服务列表&#xff0c;当发现某服务出现异常时&#xff0c;把该服务从健康列表中移除&#xff0c;当发现某服务恢复时&#xff0c;又能够将该服务加回健…

Offer必备算法26_BFS解决最短路_四道力扣题(由易到难)

目录 ①力扣1926. 迷宫中离入口最近的出口 解析代码 ②力扣433. 最小基因变化 解析代码 ③力扣127. 单词接龙 解析代码 ④力扣675. 为高尔夫比赛砍树 解析代码 本篇完。 ①力扣1926. 迷宫中离入口最近的出口 1926. 迷宫中离入口最近的出口 难度 中等 给你一个 m x …

【简明图文教程】Node.js的下载、安装、环境配置及测试

文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装&#xff0c;需要先参考以下博客进行处理后&#xff0c;再根…

社交网络与Web3:数字社交的下一阶段

随着信息技术的飞速发展&#xff0c;人们的社交方式也发生了巨大的变化。从最初的互联网聊天室到如今的社交网络平台&#xff0c;我们已经见证了数字社交的不断演变和发展。而随着区块链技术的兴起&#xff0c;Web3时代的到来将为数字社交带来全新的可能性和挑战。本文将探讨社…

milvus各组件的结构体分析

milvus各组件的结构体分析 各组件启动&#xff0c;需要构建各组件的结构体&#xff0c;一共8个。 runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord) runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy) run…

游戏开发者必看:Perforce Helix Core 的功能特点及游戏开发中的常用工具、典型用例介绍

「不出海&#xff0c;即出局」随着全球化的加速发展&#xff0c;企业出海已成燎原之势。日前&#xff0c;2024 亚马逊云科技出海全球化论坛在深圳成功举办。龙智携手 Perforce 亮相游戏行业展区&#xff0c;展示了Perforce Helix Core如何与主流游戏开发引擎高效集成&#xff0…

Docker安装部署Jenkins并发布NetCore应用

Docker安装Jenkins # 拉取镜像 docker pull jenkins/jenkins # 查看镜像 docker images # 运行jenkins # 8080端口为jenkins Web 界面的默认端口 13152是映射到外部 &#xff1a;前面的是映射外部 # 50000端口为jenkins 的默认代理节点&#xff08;Agent&#xff09;通信端口…

FFmpeg: 自实现ijkplayer播放器--06封装打开和关闭stream

文章目录 流程图stream openstream close流程图 stream open 初始化SDL以允许⾳频输出;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_threadint FFPlayer::stream_open(const char

java:多线程解决生产者消费者问题

生产者消费者问题 生产者消费者问题&#xff0c;也称有限缓冲问题&#xff0c;是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两种线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中…

第十三届蓝桥杯省赛大学B组编程题(c++)

D.刷题统计 二分(AC): 注意:二分时右边界 right 的确定 #include<iostream> using namespace std; long long a,b,n; bool check(long long x){long long tx/7;x%7;long long temp0;if(x<5) tempx*a;else temp5*a(x-5)*b;long long cntt*(5*a2*b)temp;return cnt&g…