当前位置: 首页 > news >正文

mysql小知识

什么是sql语句的子查询

      SQL语句的子查询是指在一个SQL语句中嵌套另一个SQL语句。子查询可以嵌套在主查询的FROM子句、WHERE子句、HAVING子句、SELECT子句或INSERT语句中。

     子查询可以返回一个结果集,这个结果集可以被主查询使用。子查询通常用于获取需要在主查询中使用的数据,或者用于限制主查询的结果集。通过子查询,可以在一个查询中完成多个操作。

   子查询可以是简单的SELECT语句,也可以是复杂的多表连接和聚合操作。在子查询中可以使用各种SQL语句和操作符,包括WHERE、JOIN、GROUP BY、HAVING、UNION等,以满足不同的查询需求。

    使用子查询可以提高查询的灵活性和复杂性,使得查询可以更精确地获取所需的数据。但是,子查询的嵌套过深或使用不当可能会导致查询效率低下或出现错误,因此在使用子查询时需要注意优化和避免潜在的问题。

子查询分类

     根据使用子查询的位置和功能,可以将子查询分为以下几类:

  1. 标量子查询(Scalar Subquery):标量子查询返回单个值作为结果。这种子查询通常嵌套在SELECT语句的列中,用于计算或获取单个值的信息。例如:
SELECT column1, (SELECT MAX(column2) FROM table2) as max_value
FROM table1;

  1. 行子查询(Row Subquery):行子查询返回一行或多行作为结果。这种子查询通常在WHERE子句中使用,并与主查询的条件进行比较。例如:
SELECT column1
FROM table1
WHERE (column2, column3) IN (SELECT column2, column3 FROM table2);

  1. 列子查询(Column Subquery):列子查询返回一个列作为结果。这种子查询通常在SELECT语句的列中使用,作为某个列的值。例如:
SELECT column1, (SELECT column2 FROM table2 WHERE table1.column1 = table2.column1) as column2_value
FROM table1;

  1. 表子查询(Table Subquery):表子查询返回一个结果集作为结果。这种子查询通常嵌套在FROM子句中,作为一个临时表。例如:
SELECT t1.column1, t2.column2
FROM (SELECT column1 FROM table1) as t1
JOIN (SELECT column2 FROM table2) as t2 ON t1.column1 = t2.column2;

  1. 相关子查询(Correlated Subquery):相关子查询是指嵌套在主查询中的子查询,可以引用主查询中的列,并与主查询的条件有关。这种子查询的结果集是根据主查询的每一行动态生成的。例如:
SELECT column1
FROM table1 t1
WHERE column2 = (SELECT MAX(column2) FROM table2 WHERE t1.column1 = table2.column1);

关联查询

  1. 内连接(INNER JOIN):内连接是最常见的关联查询类型,它只返回匹配的行。内连接使用两个表之间的关联条件来匹配行,并返回满足条件的行。

    示例:

    SELECT *
    FROM table1
    INNER JOIN table2 ON table1.column = table2.column;
    

  2. 左连接(LEFT JOIN):左连接返回左表中的所有行,以及右表中与左表中匹配的行。如果右表中没有匹配的行,则以NULL填充右表的列。

    示例:

    SELECT *
    FROM table1
    LEFT JOIN table2 ON table1.column = table2.column;
    

  3. 右连接(RIGHT JOIN):右连接返回右表中的所有行,以及左表中与右表中匹配的行。如果左表中没有匹配的行,则以NULL填充左表的列。

    示例:

    SELECT *
    FROM table1
    RIGHT JOIN table2 ON table1.column = table2.column;
    

  4. 全连接(FULL JOIN):全连接返回左右两个表中的所有行,如果两个表中没有匹配的行,则以NULL填充匹配的一方。

    示例:

    SELECT *
    FROM table1
    FULL JOIN table2 ON table1.column = table2.column;
    

  5. 自连接(SELF JOIN):自连接是指在同一表中创建连接。它将表视为两个不同的实体,并使用别名来区分它们。自连接通常用于将表的数据与自身进行比较和分析。

    示例:

    SELECT *
    FROM table1 AS t1
    INNER JOIN table1 AS t2 ON t1.column = t2.column;
    

   区别 

  1. 内连接(INNER JOIN):返回满足连接条件的行,两个表中不匹配的行将被忽略。

  2. 外连接:

    • 左外连接(LEFT JOIN):返回左表中的所有行以及满足连接条件的右表中的匹配行,右表中不匹配的行将以NULL值显示。
    • 右外连接(RIGHT JOIN):返回右表中的所有行以及满足连接条件的左表中的匹配行,左表中不匹配的行将以NULL值显示。
    • 全外连接(FULL OUTER JOIN):返回左表和右表中的所有行,如果没有匹配的行,将以NULL值显示。
  3. 自连接(SELF JOIN):将表视为两个独立实例并进行连接,通常用于将表中的数据与其自身进行对比或分析。

  4. 交叉连接(CROSS JOIN):返回两个表中的所有可能组合,结果是两个表的行数乘积。

  5. 自然连接(NATURAL JOIN):通过比较两个表中的同名列,自动找到匹配的列进行连接,并且只返回一次列名。

  • 内连接只返回满足连接条件的行,而外连接会返回所有的行,对于不匹配的行,会使用NULL值填充。
  • 自连接是将表视为两个独立实例进行连接,用于将表中的数据与其自身进行对比或分析。
  • 交叉连接返回两个表中的所有可能组合,结果是两个表的行数乘积。
  • 自然连接通过比较两个表中的同名列自动找到匹配的列进行连接,只返回一次列名。

总结 

  1. 子查询:

    • 子查询是在一个查询内部嵌套了另一个查询。
    • 子查询可以在SELECT、FROM、WHERE、HAVING和INSERT语句中使用。
    • 子查询可以返回单个值或者多个值。
    • 子查询可以嵌套多层。
    • 子查询可以用来过滤数据、计算表达式、排序、分组等操作。
    • 子查询的运行效率较低,可能会导致性能问题。
  2. 关联查询:

    • 关联查询是在两个或多个表之间建立关联,通过匹配相关字段来获取结果。
    • 关联查询可以使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等操作符。
    • 关联查询可以返回多个表的列,形成一个虚拟的联合表。
    • 关联查询可以根据关联条件来过滤数据、计算表达式、排序、分组等操作。
    • 关联查询的效率较高,可以通过优化查询语句和创建索引来提高性能。
  • 子查询适合在需要根据查询结果进行进一步操作的场景,灵活性较高,但性能较差。
  • 关联查询适合在需要从多个表中获取相关数据的场景,性能较好,但可读性较差。
  • 在实际使用中,应根据查询的具体需求和数据量来选择子查询或关联查询。

 

相关文章:

mysql小知识

什么是sql语句的子查询 SQL语句的子查询是指在一个SQL语句中嵌套另一个SQL语句。子查询可以嵌套在主查询的FROM子句、WHERE子句、HAVING子句、SELECT子句或INSERT语句中。 子查询可以返回一个结果集,这个结果集可以被主查询使用。子查询通常用于获取需要在主查询中使…...

Unity中URP下逐顶点光照

文章目录 前言一、之前额外灯逐像素光照的数据准备好后,还有最后的处理二、额外灯的逐顶点光照1、逐顶点额外灯的光照颜色2、inputData.vertexLighting3、surfaceData.albedo 前言 在上篇文章中,我们分析了Unity中URP下额外灯,逐像素光照中聚…...

Spring Boot3整合Druid(监控功能)

目录 1.前置条件 2.导依赖 错误依赖: 正确依赖: 3.配置 1.前置条件 已经初始化好一个spring boot项目且版本为3X,项目可正常启动。 作者版本为3.2.2 初始化教程: 新版idea创建spring boot项目-CSDN博客https://blog.csdn…...

使用Gin框架,快速开发高效的Go Web应用程序

推荐 海鲸AI-GPT4.0国内站点:https://www.atalk-ai.com 前言 在当今的软件开发领域,Go语言以其简洁的语法和出色的性能逐渐成为开发者们的新宠。而Gin框架,则是Go语言中最受欢迎的Web框架之一,它以高性能和易用性著称。本文将带你…...

【Unity】【游戏开发】Pico打包后项目出现运行时错误如何Debug

【背景】 开发过程中的报错可以通过控制台查看,但是PICO项目这类依赖特定设备环境的应用往往存在打包后在设备端发生运行时错误。这时如何能查看到Debug信息呢? 【分析】 Pico也是安卓系统,所以这个问题就可以泛化为Unity有哪些在安卓端运…...

一种解决常用存储设备无法被电脑识别的方法

一、通用串行总线控制器描述 通用串行总线(Universal Serial Bus,简称USB),是连接电脑与设备的一种序列总线标准,也是一种输入输出(I/O)连接端口的技术规范,广泛应用于个人电脑和移动…...

Spark运行架构以及容错机制

Spark运行架构以及容错机制 1. Spark的角色区分1.1 Driver1.2 Excuter 2. Spark-Cluster模式的任务提交流程2.1 Spark On Yarn的任务提交流程2.1.1 yarn相关概念2.1.2 任务提交流程 2.2 Spark On K8S的任务提交流程2.2.1 k8s相关概念2.2.2 任务提交流程 3. Spark-Cluster模式的…...

短剧APP小程序源码 全开源短视频系统源码/h5/app/小视频系统

主要功能介绍: 小剧场短剧影视小程序源码 全开源 带支付收益等模式 付费短剧小程序源码 多平台小程序支持 项目功能介绍 支持无限滑动 高性能滑动 预加载 视频预览 支持剧情介绍,集合壁纸另外仿抖音滑动效果 支持会员模式,支持用户单独购买等等多功能 本系统&…...

深度学习中图像分类、目标检测、语义分割、实例分割哪个难度大,哪个检测精度容易实现,哪个速度低。请按照难度、精度容易实现程度、速度排名。

问题描述:深度学习中图像分类、目标检测、语义分割、实例分割哪个难度大,哪个检测精度容易实现,哪个速度低。请按照难度、精度容易实现程度、速度排名。 问题解答: 以下是一般情况下深度学习中图像分类、目标检测、语义分割、实…...

【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 11 Jan 2024 Totally 36 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Leveraging Print Debugging to Improve Code Generation in Large Language Models Authors Xueyu Hu, Kun K…...

数据结构:搜索二叉树 | 红黑树 | 验证是否为红黑树

文章目录 1.红黑树的概述2.红黑树的性质3.红黑树的代码实现3.1.红黑树的节点定义3.2.红黑树的插入操作3.3.红黑树是否平衡 黑红树是一颗特殊的搜索二叉树,本文在前文的基础上,图解红黑树插入:前文 链接,完整对部分关键代码展示&a…...

数据结构顺序表

思维导图 练习 头文件 1 #ifndef __HEAD_H__2 #define __HEAD_H__3 4 5 #include <stdio.h>6 #include <string.h>7 #include <stdlib.h>8 9 10 #define MAXSIZE 711 typedef int datatype;12 enum13 {14 FLASE-1,15 SUCCESS16 };17 //定义顺序表&a…...

手把手教你优雅的安装虚拟机 Ubuntu —— 图文并茂

目录 Ubuntu 获取Vmware 安装新建虚拟机Ubuntu 安装虚拟机工具安装更多内容 本文教你如何优雅的在虚拟机中安装 Ubuntu&#xff0c;图文并茂、包教包会&#xff01; Ubuntu 获取 Ubuntu 官网镜像下载速度较慢&#xff0c;建议从国内镜像网站下载&#xff0c;如网易、中科大、…...

源 “MySQL 5.7 Community Server“ 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。

源 “MySQL 5.7 Community Server” 的 GPG 密钥已安装&#xff0c;但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是&#xff1a;mysql-community-server-5.7.44-1.el7.x86_64 GPG 密钥配置为&#xff1a;file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql…...

springboot核心有几层架构

Spring Boot核心有四层架构&#xff1a; 应用层&#xff1a;包含应用程序的入口点和控制器层。这层负责接收请求、处理业务逻辑&#xff0c;并返回响应结果。 服务层&#xff1a;包含业务逻辑的实现。这层负责处理各种业务逻辑&#xff0c;例如数据处理、事务管理等。 数据访…...

css3表格练习

1.效果图 2.html <div class"line"></div><h3>获奖名单</h3><!-- 表格 cellspacing内边距 cellpadding外边距--><table cellspacing"0" cellpadding"0" ><!-- thead表头 --><thead><tr>…...

项目实战——Qt实现FFmpeg音视频转码器

文章目录 前言一、移植 FFmpeg 相关文件二、绘制 ui 界面三、实现简单的转码四、功能优化1、控件布局及美化2、缩放界面3、实现拖拽4、解析文件5、开启独立线程6、开启定时器7、最终运行效果 五、附录六、资源自取 前言 本文记录使用 Qt 实现 FFmepg 音视频转码器项目的开发过…...

AI数字人-数字人视频创作数字人直播效果媲美真人

在科技的不断革新下&#xff0c;数字人技术正日益融入到人们的生活中。近年来&#xff0c;随着AI技术的进一步发展&#xff0c;数字人视频创作领域出现了一种新的创新方式——AI数字人。数字人视频通过AI算法生成虚拟主播&#xff0c;其外貌、动作、语音等方面可与真实人类媲美…...

初识C语言·动态内存开辟

1 为什么要有动态内存开辟 int a 10; int arr[10] { 0 }; 上述定义了一个整型&#xff0c;开辟了4个字节&#xff0c;定义了一个整型数组&#xff0c;开辟了40个字节&#xff0c;但是是固定开辟的&#xff0c;面对灵活多变的实际问题的时候可能就有点鸡肋&#xff0c;这种开…...

机器学习 | 利用Pandas进入高级数据分析领域

目录 初识Pandas Pandas数据结构 基本数据操作 DataFrame运算 文件读取与存储 高级数据处理 初识Pandas Pandas是2008年WesMcKinney开发出的库&#xff0c;专门用于数据挖掘的开源python库&#xff0c;以Numpy为基础&#xff0c;借力Numpy模块在计算方面性能高的优势&am…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...