数据库(mysql)-连接嵌套查询-2

子查询

MySQL中的子查询(Subquery)是嵌套在其他SQL查询中的查询。子查询可以出现在SELECT、FROM或WHERE子句中,并用于返回将被用于外部查询的数据。子查询的结果可以是一个单一的值、一行、一列或多行多列的数据集。

单行单列查询 

 实例

#查询比齐雷老师工资高的有哪些 
SELECT name FROM teacher WHERE salary>(SELECT salary FROM teacher WHERE name='齐雷');
//注意需要写(查询语句) 查询齐雷工资的就是子查询

注意子查询需要用()括起来

聚合函数 查询结果集只有一个值

实例

#查询哪些老师工资高于平均水平
SELECT name,salary FROM teacher WHREE salary> (SELECT AVG(salary) FROM teacher );

多行单列查询

子查询的查询的结果集有多个值

进行等值判断是要配合: IN 或 NOT IN 使用

如果 进行关系的计算

 ANY 用于在查询中筛选符合特定条件的任意一个数据

 ALL 它通常用于指定某个操作应适用于所有相关的行或值。

>ANY 即只要大于多行数据任意一个就行 (>最小值)

<ANY 即只要小于多行数据任意一个就行 (<最大值)

>ALL 即必须全部大于所有值 (>最大值)

<ALL 即必须全部小于所有值(<最小值)

 实例

#查看与'祝雷'和李费水同班的同学有哪些
# 这边是符合其中之一就行 ANY
SELECT name,age,gender,class_id FROM student WHERE class_id IN (SELECT class_id FROM student WHERE name IN ('祝雷','李费水'))
#查看比教科目2和教科目4老师工资都高的老师都有谁
多行单子列进行关系运算
SELECT name,salary FROM teacher WHERE salary>ALL(SELECT MAX(salary) FROM teacher WHERE subject_id IN(2,4));

更改数据

#将同李伟老师的科目的老师工资加500
UPDATE teacher SET salary=salary+500 WHERE subject_id=(SELECT subject_id FROM teacher WHERE name='李伟');
#将李伟的工资改成和李建明一样
UPDATE teacher SET salary =(SELECT salary FROM teacher WHERE name='李建明') WHERE name ='李伟';

 删除数据

#删除同李明老师教同一科目的所有老师
DELETE FROM teacher WHERE subject_id =(SELECT subject_id FROM teacher WHERE name='李明')

联表查询

联表查询在关系型数据库中非常常见,用于从多个表中检索相关数据

内连接

在SQL中, JOIN关键字默认执行的是内连接。内连接返回两个表中满足连接条件的记录。如果不明确指定连接类型, JOIN 就相当于  INNER JOIN。

SELECT   
    -- 选择要显示的列,可以是来自一个表的列,也可以是两个表通过JOIN操作关联后的列  
    table1.column1,   
    table1.column2,   
    table2.columnA,   
    table2.columnB  
FROM   
    -- 第一个表名  
    table1  
INNER JOIN   
    -- 第二个表名  
    table2   
ON   
    -- 指定JOIN条件,即两个表中用于匹配的列  
    table1.matching_column = table2.matching_column  
WHERE   
    -- 可选的WHERE子句,用于进一步过滤结果  
    some_condition;

实例 

#查询教语文老师的名字(这边teacher表有老师姓名和subject表要科目名称)
SELECT teacher.name,subject.name FROM teacher JOIN subject ON teacher.subject_id = subject.id  WHERE subject.name='语文';
SELECT teacher.name,subject.name FROM subject JOIN teacher ON  subject.id = teacher.subject_id WHERE subject.name='语文';

注意如果两个表中都要字段需要加对应的表名

否则 会报字段名模糊

外连接

外连接(Outer Join)是一种连接两个或多个表的方式,它返回包括匹配行和非匹配行的结果集。与内连接(Inner Join)不同,内连接只返回匹配的行,而外连接会返回一侧表中的所有行,即使另一侧表中没有匹配的行。

左外连接(Left Outer Join)

左外连接返回左表中的所有行,以及右表中匹配的行。如果右表中没有匹配的行,则结果集中对应的列将包含NULL值。

SELECT A.*, B.*FROM TableA a

LEFT OUTER JOIN TableB b ON a.key = b.key;

#查询所有班的老师,班级全部列出,班级中没有老师用null填补
SELECT * FROM class c LEFT JOIN teacher t ON c.teacher_id = t.id;

右外连接(Right Outer Join)

右外连接返回右表中的所有行,以及左表中匹配的行。如果左表中没有匹配的行,则结果集中对应的列将包含NULL值。

SELECT A.*, B.*FROM TableA a

RIGHT OUTER JOIN TableB b ON a.key = b.key;

#查询所有老师教的班,老师全部列出,老师没任教的班用null填补
SELECT * FROM class c RIGHT JOIN teacher t ON c.teacher_id = t.id;
全外连接(Full Outer Join)

全外连接返回左表和右表中的所有行。如果某侧表中没有匹配的行,则结果集中对应的列将包含NULL值。

SELECT A.*, B.*FROM TableA a

FULL OUTER JOIN TableB b ON a.key = b.key;

 在某些数据库系统中,可能需要使用UNION操作符来模拟全外连接的行为。

SELECT A.*, B.*FROM TableA a

LEFT OUTER JOIN TableB b ON a.key = b.key;

UNION

SELECT A.*, B.*FROM TableA a

RIGHT OUTER JOIN TableB b ON a.key = b.key;

 实例

#查看姓张和姓李的学生各有多少人
SELECT Count(*) '人数','姓张' AS '姓氏'  FROM student s
WHERE  name  LIKE '张%'
UNION
SELECT Count(*) '人数','姓李' AS'姓氏' FROM student s
WHERE   name  LIKE '李%';

自连接

自连接(Self-Join)是一种特殊的连接操作,它涉及到一个表与其自身进行连接。自连接通常用于比较表内的行,找出满足特定条件的行之间的关系。自连接通常通过使用别名来区分同一个表在查询中的不同实例

 模版

SELECT A.*, B.*FROM TableA a,TableA b

WHERE a.key = b.key

#查询教师表中的领导
SELECT t.name ,t1.name FROM teacher t1,teacher t
WHERE t1.id = t.manager

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

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

相关文章

2023 年网络安全热点技术发展态势

文章目录 前言一、人工智能信息技术迎来井喷式发展期二、零信任网络安全架构即将投入实际部署三、美国全面推动军政业务向云环境迁移四、专用太空软硬件与独立卫星网络并行发展五、量子信息技术与网络安全领域加速融合前言 在 2023 年取得进展的信息技术不在少数。从网络安全的…

基于51单片机低中高音7键电子琴音乐播放器

基于51单片机电子琴音乐播放器 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.可以使用按键切换音乐播放模式和弹奏模式&#xff1b; 2.LED灯显示在使用哪种模式&#xff1b; 3.音乐…

《黑马点评》Redis高并发项目实战笔记(上)P1~P31

P1 Redis企业实战课程介绍 P2 短信登录 导入黑马点评项目 首先在数据库连接下新建一个数据库hmdp&#xff0c;然后右键hmdp下的表&#xff0c;选择运行SQL文件&#xff0c;然后指定运行文件hmdp.sql即可&#xff08;建议MySQL的版本在5.7及以上&#xff09;&#xff1a; 下面这…

【Vue + keep-alive】路由缓存

一. 需求 列表页&#xff0c;n 条数据项可打开 n 个标签页&#xff0c;同时1条数据项的查看和编辑共用一个标签页。如下所示&#xff1a; 参考 // 主页面 // 解决因 路由缓存&#xff0c;导致 编辑后跳转到该页面 不能实时更新数据 onActivated(() > {getList() })二. 实现…

5.2 配置静态路由

5.2.1 实验1&#xff1a;配置IPv4静态路由 1、实验目的 通过本实验可以掌握&#xff1a; 配置带下一跳地址的IPv4静态路由的方法。配置带送出接口的IPv4静态路由的方法。配置总结IPv4静态路由的方法。配置浮动IPv4静态路由的方法。代理 ARP的作用。路由表的含义。扩展ping命…

python|sort_values()排序

sort_value()可以用来对值&#xff08;比如说年龄&#xff09;进行排序 根据 ‘Age’ 列进行升序排序&#xff0c;如果 ‘Age’ 相同则根据 ‘Name’ 列进行降序排序 df_sorted_multi df.sort_values(by[Age, Name], ascending[True, False]) print(df_sorted_multi)

一款可自动跳广告的安卓App开源项目

开放权限有风险&#xff0c;使用App需谨慎&#xff01; gkd 基于 无障碍 高级选择器 订阅规则 的自定义屏幕点击 APP 功能 基于 高级选择器 订阅规则 快照审查, 它可以实现 点击跳过任意开屏广告/点击关闭应用内部任意弹窗广告, 如关闭百度贴吧帖子广告卡片/知乎回答底…

自动泊车车位检测

作者 | 机器学习AI算法工程 编辑 | 汽车人 原文链接&#xff1a;https://mp.weixin.qq.com/s/JaPUiKv_F9RObJKimg_7dQ APA 自动泊车相关的车位检测算法。 一、背景介绍 自动泊车大体可分为4个等级&#xff1a; 第1级&#xff0c;APA 自动泊车&#xff1a;驾驶员在车内&#xff…

虚拟网络设备与Linux网络协议栈

在现代计算环境中&#xff0c;虚拟网络设备在实现灵活的网络配置和隔离方面发挥了至关重要的作用&#x1f527;&#xff0c;特别是在容器化和虚拟化技术广泛应用的今天&#x1f310;。而Linux网络协议栈则是操作系统处理网络通信的核心&#x1f4bb;&#xff0c;它支持广泛的协…

基于BP神经网络的时间序列预测模型matlab代码

整理了基于BP神经网络的时间序列预测模型matlab代码&#xff0c;包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型的进行评价。BP模型在数据集上表现优异。 代码获取链接&#xff1a;基于BP神经网络的时间序列预测模型matlab代码 训练效果&#xff1a; 训练集数据的R…

服务器开发 Socket 相关基础

Socket 三要素 1.通信的目的地址&#xff1b; 2.使用的端口号&#xff1b; 3.使用的传输层协议&#xff08;如 TCP、UDP&#xff09; Socket 通信模型 服务端实现 #include <iostream> #include <unistd.h> #include <stdio.h> #include <sys/types.h&…

day13-实战:商城首页(上)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 作业 .bg-backward {width: 60px; height: 60px;background: url(../ima…

LeetCode 热题 100 题解(二):双指针部分(1)

题目一&#xff1a;移动零&#xff08;No. 283&#xff09; 题目链接&#xff1a;https://leetcode.cn/problems/move-zeroes/description/?envTypestudy-plan-v2&envIdtop-100-liked 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同…

Python对docx文本一些操作

文本要是docx结尾 安装 Python-docx 包 读取word from docx import Document doc Document("c:/word22.docx") 获取word中的所有表格 from docx import Document doc Document("c:/word22.docx") doc.tables # 返回所有表格的list 获取表格中的总行…

uni-admin初始化一直提示未初始化数据库问题

uni-admin初始化&#xff0c;一直提示&#xff1a; “检测到您未初始化数据库&#xff0c;请先右键uni-admin项目根目下的 uniCloud/database 目录&#xff0c;执行初始化云数据库&#xff0c;否则左侧无法显示菜单等数据” 最后清除了localStorage&#xff0c;发现就好了。

盘点6个AI绘画免费网站,第一个不仅免费还好用!

随着人工智能技术的前沿发展&#xff0c;人工智能在各个领域发挥了重要作用。人工智能的受欢迎程度不断增加&#xff0c;引起了越来越多的关注。借助动画人工智能生成器&#xff0c;用户可以通过简单的操作获得专业的动画作品&#xff0c;而无需掌握高端技术。今天我们将盘点 1…

算法学习 -- 多路归并

思想 : 抽象出来一个例子 : 合并k个长度相等升序列表 : 抽象成一张表也就是 : 做法 : 用一个小根堆来维护 &#xff0c; 首先将每个序列的第一个元素放入队列中 &#xff0c; 然后模拟&#xff0c;每次取出队头&#xff0c;作为结果序列的下一个元素 &#xff0c; 然后向堆…

系统架构最佳实践 -- 人力资源(E-HR)应用架构设计

当谈到人力资源管理时&#xff0c;电子人力资源&#xff08;E-HR&#xff09;系统已经成为现代企业不可或缺的组成部分。E-HR系统的设计与实践对于提高组织的人力资源管理效率和员工体验至关重要。本文将探讨E-HR应用架构的设计与实践&#xff0c;以及如何借助信息技术优化人力…

第 6 章 Gazebo仿真环境搭建(自学二刷笔记)

6.6.4 Gazebo仿真环境搭建 到目前为止&#xff0c;我们已经可以将机器人模型显示在 Gazebo 之中了&#xff0c;但是当前默认情况下&#xff0c;在 Gazebo 中机器人模型是在 empty world 中&#xff0c;并没有类似于房间、家具、道路、树木... 之类的仿真物&#xff0c;如何在 …

第十四届蓝桥杯C/C++大学B组题解(二)

6、岛屿个数 #include <bits/stdc.h> using namespace std; const int M51; int T,m,n; int vis[M][M],used[M][M]; int dx[]{1,-1,0,0,1,1,-1,-1}; int dy[]{0,0,1,-1,1,-1,1,-1}; string mp[M]; struct node{//记录一点坐标 int x,y; }; void bfs_col(int x,int y){ qu…