MySQL基础笔记(6)-多表查询练习(1)

MySQL 多表查询练习 MySQL 多表查询练习 ##题目 ###数据库结构 创建四张表 分别存储 学生信息 课程信息 分数 讲师信息表 存储相应数据 学生信息表 Student 字段名 字段类型 字段约束 / 含义 Sno Varchar(3) Not null / 学员编号 Sname Varchar(4) Not null / 学员姓名 Ssex Varchar(2) Not null / 性别 Sbirt... 阅读详情

目录

一、需求

二、解题思路

三、小结


本篇文章作为前面四篇基础文章的回顾,从某公司的Java面试题入手,讲解三表查询的常见需求以及常见查询方法,夯实MySql的连接查询、子查询基础。


一、需求

有三张表,学生表student,课程course,学生课程表sc,学生可以选修多门课程,一门课程可以被多个学生选修,通过sc 表关联。

1)写出建表语句;

2)写出SQL 语句,查询选修了所有选修课程的学生;

3)写出SQL 语句,查询选修了5 门以上的课程的学生。

 

二、解题思路

1、这是一种典型的三表查询,学生表中必须包含有学生id和姓名,课程表必须有课程id和姓名,学生可以选多门课,每门课都能被多个学生选择,所以两者是多对多关系,从而衍生出了第三张关系表,这张关系表必须包含学生id和课程id。

CREATE TABLE s(
	idINT PRIMARY KEY ,
	name VARCHAR(32),
	sex CHAR,
	age INT

)

CREATE TABLE c(
	id INT PRIMARY KEY,
	name VARCHAR(32)
	
)

CREATE TABLE sc(
	sid INT REFERENCES s(id),
	cid INT REFERENCES c(id),
	PRIMARY KEY(sid,cid)
)

2、要查出选修所有课的学生,我们先要知道课程的总数量是什么,并且要在选课表中查询该生id对应的课程数量是否和总课程数相等

Select s.name from s s 
where 
(select count(*) from c) = 
(select count(*) from sc1 sc1 
where sc1.sid = s.id)

3、选修了五门课以上,那么说明该学生的id在选课表中出现的次数是5次以上

SELECT s.name FROM s s 
WHERE (SELECT COUNT(*) FROM sc sc WHERE
s.id = sc.sid )
> 5

三、小结

 形如“XX选的xx数、XX的出现xx数”这样的问题,几乎都要用到COUNT函数,来统计其出现的次数,通常需要使用子查询

MySQL多表查询 因此他关注的是内部的,共同的,共享的数据部分。注意:其实在实际开发者使用一种外连接就可以了,一般使用的较多的是左外连接,但其实看个人习惯即可,因为左外连接与右外连接一样,其实就是把表的摆放位置调转一下就可以了。1、上述可以发现,这里存在一个坑,在我的数据表中,我的id是int类型,name是varchar类型,他们两个数据格式不一样,但执行sql却未报错,这是什么原因呢?去除重复行的前提是结果集中所有列的组合是唯一的【注意这里的组合,组合指的是一行,这一行包含了所有查询出来的字段】 阅读详情

相关推荐

MySQL数据库基础 === 多表查询

在关系型数据库中,数据通常分散在多个表中,而不是存储在单个表中。多表查询是指从一个以上的表中检索数据并将其组合以满足特定需求的操作。检索与多个表关联的数据。在多个表之间建立关联,以便于数据分析。聚合和计算多个表中的数据。更新和删除多个表中的数据。多表查询通常涉及使用 JOIN 子句将不同的表连接在一起,以创建一个包含所需数据的结果集。一、多表查询基础基本概念:通过JOIN子句等将多个表连接,创建包含所需数据的结果集。多表关系类型:包括一对多(多对一)、多对多、一对一三种。

每天都要努力学习哦~~ 1394

查询选修了全部课程的学生姓名【转】

SELECT SNFROM SWHERE NOT EXISTS(SELECT *            FROM C            WHERE NOT EXISTS(SELECT *                      FROM SC                      WHERE SNO = S.SNO AND ...

weixin_30539625的博客 2454

宝塔面板 python管理器2.0安装Mrdoc

自从python管理器从1.9升级2.0后,导致原教程不能使用。 故关于2.0新开教程如下。 关于python管理器2.0 最大的区别在于: python管理器2.0不再需要进入虚拟环境,直接在当前环境进行操作,但是需要指定python路径及pip路径。 1、新建mrdoc工程目录,下载源码: 新建目录【mrdoc】,进入mrdoc目录,并在宝塔ssh或或远程ssh中执行 ,下载源码 git clone https://gitee.com/yang_lite/MrDoc.git .

debj031634的专栏 5997

mysql统计每个学生的选课门数_面试经典数据库查询题目(学生、课程、选课)...

这是前几天一刚毕业的朋友的面试题,算是面试常遇到的sql经典题目,记录一下(如图)在此我在电脑数据库上建立了对应的表结构及数据,以供检验sql语句正误。建表语句:学生表(student_info)DROP TABLE IF EXISTS `student_info`;CREATE TABLE `student_info` (`no` varchar(255) CHARACTER SET utf8...

weixin_32258919的博客 1万+

在WebView中对第三方H5页面的文本密码框添加自定义随机键盘

前言: 首先介绍一下这个需求的背景,由于公司是涉及到金融行业的需要与银行对接资金存管。出于保密性这里不直接列出公司名字和银行名字。从2018年国家对金融行业大整改以来,为了能够顺利通过备案,我们也跟着政府的脚步一步一步走向合规。 好了,大致就是因为要通过备案,必须把这个需求实现,否则将不会通过。 需求内容就是,当客户端有关资金交易的时候,会通过加密数据以及秘钥的方式把第三方银行的页面(充值、...

比较喜欢、笑的博客专栏 1586

Webpack打包到宝塔上线:前端小白也能搞定的部署保姆教程

本文为前端开发者提供了一份详尽的Webpack项目部署指南。通过宝塔面板的可视化操作,手把手教你如何将Vue3等项目从本地构建、打包,到上传服务器、配置Nginx,最终完成上线部署的全过程,有效解决了新手在项目上线环节的常见难题。

jjj34的博客 225

SQL练习汇总(查询“01“课程比“02“课程成绩高的学生的信息及课程分)

1、学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 年龄,Ssex 学生性别 编号 姓名 年龄 性别 1 赵雷 20 男 2 钱电 20 男 3 孙风 21 男 4 吴兰 18 女 5 孙兰 17 女 2.课程表 Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号 课程号 课程名称 教...

如何心安理得的在老板眼皮下摸鱼 1万+

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 246

【数据库】03_sql语句02

查询

嗷 3738

在 VS Code 里配置 SAP Joule for Developers 的 ABAP AI side-by-side 能力

摘要: 随着ABAP开发工具链的演进,VS Code逐渐融入ABAP开发流程,SAP Joule for Developers的ABAP AI能力通过side-by-side模式(基于BTP中央服务)为多系统开发提供统一AI支持。该模式避免了各ABAP后端独立升级AI能力的碎片化问题,由管理员配置BTP订阅URL后,开发者可在ADT或VS Code中全局调用。实际落地需注意角色分工(管理员配置服务,开发者填写URL)、AI units资源规划及配置细节(如区分全局与项目级设置)。建议将Joule URL纳入

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 121

黑猫带你学eMMC协议第26篇:eMMC的硬件复位操作(H/W reset)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 概述 什么是硬件复位? 硬件复位就是使用一个特殊硬件信号(这个信号在RST_n这根实实在在的物理线路上传输)将emmc复位到pre-idle state,而不需要使用cmd0或者power cycle讲emmc复位到pre-idle state。 如何进行硬件复位? 1、设置RST_n_FUNCTION [162]为1,使emm.

黑猫奥利奥的博客 6319

多表查询与练习

1.多表查询分类讲解 1.1 等值连接 vs 非等值连接 SELECT employees.last_name, departments.department_name,employees.department_id FROM employees, departments WHERE employees.department_id = departments.department_id; -- 简化:使用别名可以提高查询效率 SELECT e.employee_id, e.last_name, e.depa

长剑之家 709

《电磁兼容设计》专栏说明

本专栏自2024年1月起开始更新,仅设此一个电磁兼容相关知识专栏,并将一直持续更新下去,无期限

linkking27的博客 794

MySQL 多表查询

此为MySQL专栏文章之一,讲解MySQL多表查询。多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。

Java 技术专栏,从入门到精通,熟悉企业级开发 1万+

机器人动力学仿真软件:Webots_(14).机器人声音仿真

Webots 中的声音仿真主要通过Sound和两种节点来实现。Sound节点用于播放预定义的音频文件,而节点则允许在仿真过程中动态生成和播放声音。这些节点可以用于模拟机器人的语音输出、报警声、环境噪音等。以下是一个示例,展示如何在控制器代码中播放预定义的声音。// 控制器代码(.c) # include <webots/robot.h> # include <webots/sound.h> # define TIME_STEP 64 const char * sound_name = "sound";

kkchenjj的博客 1312

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MySQL基础(约束 多表查询)

个人主页:个人主页系列专栏:MySQL数据库 温馨提示:本篇博客较为全面,收藏以防找不到 挑灯夜战3点半,奋笔疾书4w字,只为博君看两眼! 上节目录 一.Mysql下载安装启动(适合没有下载按照好MySQL的小伙伴,超详图文教程) 二.图形化界面工具(更方便操作数据库,超详细图文安装教程) 三.SQL(MySQL的核心) 1.DDL(数据库操作,表操作,表操作-数据类型,表操作-案例) 2.DML(添加数据,修改数据,删除数据) 3.DQL(基本语法,基础...

Javascript_tsj的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【MySQL】不就是多表查询

嗨!小伙伴们大家好呀,忙碌的一周就要开始!在此之前我们学习的MySQL数据库的各种操作都是在一张表之中,今天我们学习要对多张表进行相关操作,相比较于单一的表来说,多张表操作相对复杂一些,我相信只要认真学习多表查询也不再话下!项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:一对一(多对一)一对多多对多概述: 指从多张表中查询数据,多表查询就是要消除笛卡尔积。

super大雄的博客 7499

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【MySQL基础教程】多表查询

本文为【MySQL基础教程】多表查询相关知识,下边将对多表关系,多表查询概述,内连接,外连接,自连接,子查询,多表查询案例等进行详尽介绍~

小新要变强的博客 3049

MySQL笔记-多表查询

自连接,外连接,联合查询,嵌套查询,子查询,事务四大特性,并发事务问题,事务隔离级别

2201_75533641的博客 6112

MySQL- 多表查询(上)

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问数据库

一起努力共同进步,为了未来一起奋斗吧! 4441

【MySQL基础 | 中秋特辑】多表查询详细总结

多表查询顾名思义就是从多张表中查询数据。通过多表查询,可以在关联的表之间建立联系,并从这些表中选择和过滤需要的数据。笛卡尔积:笛卡尔乘积是两个集合A、B所有组合的情况。如下图:所以我们在多表查询中需要消除无效的笛卡尔积。-- 部门表name varchar(10) not null comment '部门名称') comment '部门表';-- 员工表name varchar(10) not null comment '姓名',age int comment '年龄',

m0_74352571的博客 1544

超详细!MySQL多表查询的操作练习-笔记-06章:多表查询

本文主要内容是学习多表查询 + 练习(有参考答案),难易程度:中等,写的肥肠详细(写了究极长时间),结合了老师讲授的内容和笔者自己的理解。

Noctiflorous_s的博客 2192

MySQL多表查询练习

作业:多表查询1.创建student和score表创建score表。SQL代码如下:2.为student表和score表增加记录向student表插入记录的INSERT语句如下:INSERT INTO student VALUES( 901,‘张老大’, ‘男’,1985,‘计算机系’, ‘北京市海淀区’);INSERT INTO student VALUES( 902,‘张老二’, ‘男’,1986,‘中文系’, ‘北京市昌平区’);

Wcy3076519066的博客 1982

MySQL学习笔记06【多表查询、子查询、多表查询练习】

多表查询、子查询、多表查询练习

upward 1390

MySql-多表查询练习

数据准备 /* 数据导入: Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50624 Source Host : localhost Source Database...

weixin_30387339的博客 1038
上一篇: MySQL基础笔记(5)-常用子句分析
下一篇: LeetCode(5)-链表:其他问题
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值