深入了解关联查询和子查询

推荐阅读

给软件行业带来了春天——揭秘Spring究竟是何方神圣(一)
给软件行业带来了春天——揭秘Spring究竟是何方神圣(二)


文章目录

    • 推荐阅读
    • 关联查询
    • 子查询


关联查询

image.png

关联查询
从多张表中查询对应记录的信息,关联查询的重点在于这些表中的记录的对应关系,这个对应关系也称为连接条件。

select k.kname,k.sal,h.loc
from k,h
where k.depino=h.depino

image.png

表名也可以写别名.
当两张表名有同名字段时,select 子句中必须要明确指出指定该字段来自哪张表,在关联查询中,表名也可以添加别名们可以简化select 语句的复杂度。

SELECT k.name,h.name
FROM employee_K k,employee_H h
WHERE k.depino=h.depino

关联查询要添加连接条件,否则会产生笛卡尔积
笛卡尔积通常是一个无意义的结果集,它的记录数使所有参与查询的表的记录数乘积的结果。要避免出现,数据量大时极易出现内存溢出等现象。
N张表关联查询要有N-1个连接条件。

连接条件和过滤条件同时成立。

select k.kname,k.sal,h.loc
from k,h
where k.depino=h.depino and h.loc='shanghai'

内连接
**join… on… **内连接返回所有满足连接条件的记录。不满足条件的不会被查询出来。

select k.kname,sal,h.loc
from k  h 
where k.depino=h.depino and sal>2000select k.kname,sal,h.loc
from k join h on k.depino=h.depino
where sal>2000

连接条件和过滤条件分开,层次感更好,条理更清晰。

外连接
外连接除了会将满足连接条件的记录查询出来以外,还会将不满足的连接条件的记录也查询出来。

外连接分
左外连接:以 join 左侧表作为驱动表(所有数据都会被查询出来),那么该表中某条 记录不满足连接条件时,来自右侧表中的字段全部填null。

select k.name,h.name from k left outer join h  
on k.depino=h.depinoselect k.name,h.name from k join h  
on k.depino=h.depino(+)

右外连接

select k.name,h.name from k join h  
on k.depino(+)=h.depino

全外连接

select k.name,h.name from k  full outer join h  
on k.depino=h.depino

自连接
自连接:当前一张表的一条记录可以对应当前表自己的多条记录。
自连接是为了解决同类型数据但是又存在上下级关系的树状结构数据时使用。

select k.kname,kk.kname from k ,k kk where k.id=kk.pid

image.png
自连接连接多个表

select k.kname,kk.kname,h.loc
from k,k kk,h 
where k.pid=kk.id and kk.depino=h.depino and k.kname='bob'select k.kname,kk.kname,h.loc
from k join k kk 
on k.pid=kk.id
join h
on kk.depino=h.depino
where k.kname='bob'

子查询

子查询是一条select 语句,但是他嵌套在其他SQL语句中,为的是给其他SQL语句提供数据以支持其执行操作。

SELECT kname,sal FROM K
WHERE sal>(select sal FROM k WHERE kname='ali')

image.png

在DDL中,根据子查询的结果集快速创建一张表。

创建表时如果字查询中的字段有别名则该表对应的字段就使用该别名作为其字段名,当子查询中一个字段名含有函数表达式,则必须要使用别名。

 CREATE TABLE employeeASSELECT k.kname,k.sal,k.id,h.hname,h.locFROM h,kWHERE k.depino=h.depino

image.png

在DML中使用子查询。

SELECT*FROM K WHERE depino=(SELECT depino FROM K WHERE kname='alcie' )

子查询在查询语句中的运用
image.png

 select depino ,kname,sal from k where sal >(select avg(sal) from K)

image.png

  • 单行单列子查询:常用于过滤条件,可以配合=,<+,<,>,>=使用

  • 多行多列子查询:常用于过滤条件,由于查询出多个值,在判断=时,要用IN,

                                判断>,>=等操作,要用ALL,ANY。
    
  • 多行多列子查询:当成一张表来看。

 select kname,sal from k where sal >all(select sal from k where depino in(10,30))

image.png

exists,not exists 关键字
exists 后面跟一个子查询,当子查询可以查询出至少一条记录,则exists表达式成立并返回TRUE。

select kname,sal from k where exists(select *from k,h where k.depino=h.depino)select kname,sal from k where not exists (select *from h where k.depino=h.depino)

image.png

子查询语句在having子句中的使用。

  select min(sal),depinofrom kGROUP BY depinohaving min(sal)>(select min(sal) from k where depino=30)

image.png

子查询在FROM子句中的运用
当一个子查询是多列子查询,通常将该子查询的结果集当做一张表看待并基于它进行二次查询。

select AVG(sal),depino from k group bu depinoselect kname,k.sal,depino from k,(select AVG(sal) avg_sal,depino from k group by depino) A where k.depino=A.depino and k.sal>A.avg_sal

image.png
子查询在select 子句中的使用。
可以将查询的结果当做外层查询记录中的一个字段值显示。

select kname,k.sal,(select hname from h where k.depino=h.ddepino) from k

image.png

在这里插入图片描述

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

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

相关文章

组合数学基础

隔板法 X 1 X 2 . . . X n m , X i > 0 X_1X_2...X_nm,\quad X_i>0 X1​X2​...Xn​m,Xi​>0 求方程解的个数 求方程解的个数 求方程解的个数 m 个球插入 n − 1 个板将 m 个球分成 n 份 m个球插入n-1个板将m个球分成n份 m个球插入n−1个板将m个球分成n份 方程…

服务器和云服务器哪个更安全?

随着云计算技术的不断发展&#xff0c;越来越多的企业开始选择使用云服务器来存储和处理数据。然而&#xff0c;对于一些企业来说&#xff0c;他们可能更倾向于使用传统的服务器。在这种情况下&#xff0c;安全性成为了一个重要的考虑因素。那么&#xff0c;服务器和云服务器哪…

mac下载工具:JDownloader 2 for Mac 中文版

JDownloader是一款开源的下载管理工具&#xff0c;主要使用Java编程语言开发&#xff0c;因此它能够在支持Java的操作系统上运行&#xff0c;包括Windows、Linux和Mac OS。这款软件专门为那些需要通过网盘下载文件的用户提供便利&#xff0c;它支持众多流行的网盘服务&#xff…

idea修改项目git地址

大家好&#xff0c;今天给大家分享的知识是如何在idea中修改项目的git地址。 一、修改地址 首先我们先找到菜单栏中Git选项&#xff0c;然后点击管理远程&#xff08;Manage Remote&#xff09; 之后双击origin之后就可以定义名称或者URL了。

电路设计(10)——超温报警电路的proteus仿真

1.题目背景 在现实生活中&#xff0c;常有一种工程技术&#xff0c;即带有自动温度补偿的设备&#xff0c;能在规定温度内正常工作。但是为了设备安全&#xff0c;需设定工作的上限温度&#xff0c;万一温控补偿失效&#xff0c;设备温度一旦超出上限温度时&#xff0c;便立即切…

前端excel带样式导出 exceljs 插件的使用

案例 <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1"><title>exceljs 使用</title></head><body><button …

ReactNative实现宽度变化实现的动画效果

效果如上图所示&#xff0c;通过修改设备宽度实现动画效果 import React, {useRef, useEffect, useState} from react; import {Animated, Text, View, Image} from react-native;const FadeInView props > {const fadeAnim useRef(new Animated.Value(0)).current;React…

华为自动驾驶干不过特斯拉?

文 | AUTO芯球 作者 | 李诞 什么&#xff1f; 华为的智能驾驶方案干不过蔚小理&#xff1f; 特斯拉的智能驾驶[FSD]要甩中国车企几条街&#xff1f; 这华为问界阿维塔刚刚推送“全国都能开”的城区“无图 NCA” 就有黑子来喷了 这是跪久了站不起来了吧 作为玩车14年&…

flutter开发实战-可扩展popup弹窗template模版样式

flutter开发实战-可扩展popup弹窗template模版样式 最近在看到一个flutter_beautiful_popup&#xff0c;可以美化弹窗窗口样式。该插件通过一个template模版的类BeautifulPopupTemplate作为抽象的base类。 一、基类BeautifulPopupTemplate 在BeautifulPopupTemplate中&…

RabbitMQ——基于 KeepAlived + HAProxy 搭建 RabbitMQ 高可用负载均衡集群

一、集群简介 1.1 集 群架构 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时&#xff0c;此时可以通过 RabbitMQ 集群来进行扩展&#xff0c;从而达到提升吞吐量的目的。 RabbitMQ 集群是一个或多个节点的逻辑分组&#xff0c;集群中的每个节点都是对等的&#xff0c;每…

目标检测及相关算法介绍

文章目录 目标检测介绍目标检测算法分类目标检测算法模型组成经典目标检测论文 目标检测介绍 目标检测是计算机视觉领域中的一项重要任务&#xff0c;旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同&#xff0c;目标检测不仅需要…

OfficeWeb365 Readfile 任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

主品牌竞争方向之洞察竞争环境变化

随着市场环境加速变化&#xff0c;如果只停留在过去&#xff0c;未能及时进化的主品牌可能会逐渐老化&#xff0c;失去市场竞争力&#xff0c;甚至被新兴竞争对手所取代。因此&#xff0c;企业需要不断洞察竞争环境变化&#xff0c;避免企业走向衰退&#xff0c;让主品牌进化&a…

TrinityCore安装记录

TrinityCore模拟魔兽世界&#xff08;World of Warcraft&#xff09;的开源项目&#xff0c;并且该项目代码广泛的优化、改善和清理代码。 前期按照官方手册按部就班的安装即可。 注意几点&#xff1a; 1 需要配置Ubuntu22.04版本的服务器或者Debian11 服务器。2 需要使用gi…

Office恢复旧UI|Office UI问题|Word UI|小喇叭找不到

Office恢复旧UI&#xff5c;Office UI问题&#xff5c;Word UI&#xff5c;小喇叭找不到 问题描述&#xff1a;Office新版本默认新UI&#xff0c;主界面没有小喇叭可以切换到旧UI. 解决方案&#xff1a; 以下述内容新建.txt&#xff0c;保存并改后缀为.reg&#xff0c;双击打开…

Flink生产环境常见问题及解决方法

在Flink生产环境中&#xff0c;可能会遇到一些常见的问题。下面简单的介绍几个常见问题&#xff0c;并且提供一些解决方法&#xff0c;来帮助你更好地应对这些问题。 故障转移和高可用性 Flink提供了故障转移和高可用性机制&#xff0c;但在配置和使用时可能会遇到问题。如果…

154基于matlab的二维元胞自动机模拟森林火灾(生命游戏 )和模拟收费站交通流

基于matlab的二维元胞自动机模拟森林火灾&#xff08;生命游戏 &#xff09;和模拟收费站交通流。全国大学生美国建模竞赛&#xff0c;程序已调通&#xff0c;可直接运行。 154 元细胞自动机 森林起火 收费站交通 (xiaohongshu.com)

Linux的库文件

概述&#xff1a; 库文件一般就是编译好的二进制文件&#xff0c;用于在链接阶段同目标代码一块生成可执行文件&#xff0c;或者运行可执行文件的时候被加载&#xff0c;以遍调用库文件中的某段代码。 动态链接都是索引的.so文件&#xff0c;静态链接都是压缩打包的.a文件。 …

Python新春烟花盛宴

写在前面 哈喽小伙伴们&#xff0c;博主在这里提前祝大家新春快乐呀&#xff01;我用Python绽放了一场新春烟花盛宴&#xff0c;一起来看看吧&#xff01; 环境需求 python3.11.4及以上PyCharm Community Edition 2023.2.5pyinstaller6.2.0&#xff08;可选&#xff0c;这个库…

React实例之完善布局菜单(三)

接着上篇的内容继续。规划界面布局。界面分为三个部分&#xff0c;左边为菜单部分&#xff0c;右边上部有个 80 px 高度左右的功能区&#xff0c;下面是主内容区。 依据这个设计&#xff0c;我们进行下面的步骤&#xff1a; 在 SMenu项目中创建一个目录&#xff1a; SLayout, …