MySQL——连接查询与子查询

news2024/7/4 4:49:59

一、连接查询

单表查询:在一张表当中查询数据,叫做单表查询。

连接查询,结合俩(多)张表,在俩张(多)表当中查询数据,在一张表当中查询一部分,在另一张表当中查询另一部分数据,这种跨表查询,连接多张表查询数据的方法叫做连接查询!

连接查询分为:SQL92语法,SQL99语法。目前主流使用SQL99语法。

SQL92 的语法 结构更加的粗糙,语法结构不清晰 表连接的判断和其他条件都放在了where 后面,非常的混乱。select.....from .....where....

SQL99的语法结构清晰,某一个表和另一个表连接用 join, 然后判断条件放在on 的后面。select.....from......inner join.....on.....inner join....on....where.....(inner 可以省略,但加上语法结构更清晰)

笛卡尔积现象:

当连接俩张表进行查询的时候,如果没有任何限制的情况下,查询的次数为两张表所有记录的乘积!

这个时候内外连接的限制条件的作用就体现出来了!

1、内连接:

等值连接:查询结果是由where 条件的等号来 决定的

上面虽然查询出来想要的结果,但是查询次数依旧没有减少,只是筛选出来了而已。同时我们也知道在今后连接的表的数量越少越好,否则会使效率降低!

非等值连接:

自连接:一张表当做两张表来解决。

2、外连接(right/left + outer[outer可以省略]):

内连接与外连接的区别:内连接没有主次关系,两(多)张表是平级的,而外连接有主次关系,主要是查什么,其次是查什么!

左外连接(left): 表示join关键字左边的表是主表,主要是查出左边表的数据,顺带将右边的表的数据也查出来。

右外连接(right):表示join关键字右边的表是主表,主要是查出右边表的数据,顺带将左边的表的数据也查出来。

总结:外连接的查询次数 >= 内连接的查询次数。

多表连查:

使用select .....from ......join....on......join....on.....where.....group by .......having........order by .......

例如查:找出每个员工的部门名称和工资等级,上级领导,显示出员工名字,领导名,部门名,工资,工资等级。

select e.ename,d.dname,n.ename as '上级',e.sal,s.grade from emp e join dept d on e.deptno = d.deptno left join emp n on e.mgr = n.empno join salgrade s on e.sal between s.losal and s.hisal;

三、全连接(用的很少)


二、子查询

子查询:select 语句当中嵌套select语句,被嵌套的select语句被称为子查询。

子查询语句可以放在select ,from ,where 后面。

where子句中出现子查询:

例如:查询员工当中大于800元的员工姓名和工资

from 子句当中出现子查询:

注意:from 当中的子查询,可以把子查询当中查出来的东西当中一张临时表。

例如:找出每个岗位的平均工资的薪资等级?

select t.*,s.grade from (select job,avg(sal) as avgsal from emp group by job) t join salgrade s on t.avgsal between s.losal and s.hisal;

select t.*,s.grade from (select ename,avg(sal) as avgsal from emp) t join salgrade s on t.avgsal between s.losal and s.hisal;

select 子句当中的出现的子查询:

查询每个员工的部门名称,要求显示部门名和员工名?

select e.ename,e.deptno,(select dname from dept join emp on emp.deptno = dept.deptno) from emp e;

注意:select后的子查询返回的结果只能是返回一条,当多余一条的时候,就会报错!!!

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

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

相关文章

10.(Python数模)(预测模型二)LSTM回归网络(1→1)

LSTM回归网络(1→1) 长短期记忆网络 - 通常只称为“LSTM” - 是一种特殊的RNN,能够学习长期的规律。 它们是由Hochreiter&Schmidhuber(1997)首先提出的,并且在后来的工作中被许多人精炼和推广。…

31 WEB漏洞-文件操作之文件包含漏洞全解

目录 文件包含漏洞原理检测类型利用修复 本地包含-无限制,有限制远程包含-无限制,有限制各种协议流玩法文章介绍读取文件源码用法执行php代码用法写入一句话木马用法每个脚本支持的协议玩法 演示案例某CMS程序文件包含利用-黑盒CTF-南邮大,i春…

ChatGPT 制作转化率分析漏斗图的制作

像这样的转换率漏斗图使用前端可视化技术就可以完成。 使用ChatGPT OpenAI来完成代码的编写。 我们将完整的代码给大家复制到下面: <!DOCTYPE html> <html> <head><meta charset="utf-8"><title>ECharts</title><!-- 引入…

如何在IPhone 14、14 Pro和14 Pro Max上添加屏幕锁定

当你第一次获得iPhone时&#xff0c;系统会提示你为它创建一个密码&#xff0c;这样只有你才能访问它。你应该使用一个必须输入的密码&#xff0c;以便在iPhone 14被唤醒或打开时解锁它。这将提供更高级别的保护。当你打开数据保护时&#xff0c;iPhone上的数据会被加密&#x…

恒运资本:沪指涨逾1%,金融、地产等板块走强,北向资金净买入超60亿元

4日早盘&#xff0c;两市股指盘中强势上扬&#xff0c;沪指、深成指涨超1%&#xff0c;上证50指数涨近2%&#xff1b;两市半日成交约5500亿元&#xff0c;北向资金大举流入&#xff0c;半日净买入超60亿元。 截至午间收盘&#xff0c;沪指涨1.12%报3168.38点&#xff0c;深成指…

Vue——vue3中的ref和reactive数据理解以及父子组件之间props传递的数据

ref()函数 这是一个用来接受一个内部值&#xff0c;返回一个响应式的、可更改的 ref 对象&#xff0c;此对象只有一个指向其内部值的属性 .value。 作用&#xff1a;创建一个响应式变量&#xff0c;使得某个变量在发生改变时可以同步发生在页面上。 模板语句中使用这个变量时…

解决外接显示器后Edge浏览器地址栏等变得很大的问题

解决外接显示器后Edge浏览器地址栏等变得很大的问题 edge设置里外观——触控模式&#xff0c;把触控模式关了

uni-app 之 v-on:click点击事件

uni-app 之 v-on:click点击事件 image.png <template><!-- vue2的<template>里必须要有一个盒子&#xff0c;不能有两个&#xff0c;这里的盒子就是 view--><view>--- v-on:click点击事件 ---<view v-on:click"onclick">{{title}}<…

浅谈Mysql读写分离的坑以及应对的方案 | 京东云技术团队

一、主从架构 为什么我们要进行读写分离&#xff1f;个人觉得还是业务发展到一定的规模&#xff0c;驱动技术架构的改革&#xff0c;读写分离可以减轻单台服务器的压力&#xff0c;将读请求和写请求分流到不同的服务器&#xff0c;分摊单台服务的负载&#xff0c;提高可用性&a…

华为OD机试 - 等和子数组最小和 - 深度优先搜索(Java 2022 Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…

ApiPost7使用介绍 | HTTP Websocket

一、基本介绍 创建项目&#xff08;团队下面可以创建多个项目节点&#xff0c;每个项目可以创建多个接口&#xff09;&#xff1a; 参数描述库&#xff08;填写参数时自动填充描述&#xff09;&#xff1a; 新建环境&#xff08;前置URL、环境变量很有用&#xff09;&#x…

docker save docker export 区别

docker save用于导出镜像到文件&#xff0c;包含镜像元数据和历史信息&#xff1b;docker export用于将当前容器状态导出至文件&#xff0c;类似快照&#xff0c;所以不包含元数据及历史信息&#xff0c;体积更小&#xff0c;此外从容器快照导入时也可以重新指定标签和元数据信…

单臂路由实现VLAN间路由

单臂路由实现VLAN间路由 单臂路由 概述拓扑图PC配置LSW2 接入层交换机LSW3 接入层交换机LSW1 汇聚层交换机R1 路由器ping 测试 单臂路由 概述 单臂路由的原理是通过一台路由器&#xff0c;使 VLAN 间互通数据通过路由器进行三层转发。 如果在路由器上为每个 VLAN 分配一个单独…

uniapp实现微信小程序全局可分享功能

uniapp实现微信小程序全局【发送给朋友】、【分享到朋友圈】、【复制链接】 主要使用 Vue.js 的 全局混入 1.创建一个全局分享的js文件。示例文件路径为&#xff1a;./utils/shareWx.js &#xff0c;在该文件中定义全局分享的内容&#xff1a; export default {data() {retur…

QT建立TCP服务器

QT core gui network *************************************************** #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器头文件 #include <QTcpSocket>//客户端头文件 #include <QList>//存放客户端…

打造西南交通感知新范式,闪马智能携手首讯科技落地创新中心

9月4日&#xff0c;2023年中国国际智能产业博览会&#xff08;以下简称“智博会”&#xff09;在重庆拉开帷幕。大会期间&#xff0c;由上海闪马智能科技有限公司&#xff08;以下简称“闪马智能”&#xff09;与重庆首讯科技股份有限公司&#xff08;以下简称“首讯科技”&…

Linux命令之用户管理(详解)

Linux命令之用户管理 常用基础命令修改root密码切换用户身份改变当前目录查看命令的用法查看命令之ls 用户管理用户的创建adduser创建useradd创建两种方式的区别 用户删除用户密码重置查看当前所有用户 在介绍Linux用户管理相关的命令之前&#xff0c;我们先介绍一些Linux的一些…

vue3+ts+uniapp实现小程序端input获取焦点计算上推页面距离

vue3tsuniapp实现小程序端input获取焦点计算上推页面距离 input获取焦点计算上推页面距离 1.先说我这边的需求2.发现问题3.解决思路4.代码展示 自我记录 1.先说我这边的需求 需求 1.给键盘同级添加一个按钮例如’下一步’ or ‘确认’ 这种按钮 2.初步想法就是获取input焦点时…

Flink---1、概述、快速上手

1、Flink概述 1.1 Flink是什么 Flink的官网主页地址&#xff1a;https://flink.apache.org/ Flink的核心目标是“数据流上有状态的计算”(Stateful Computations over Data Streams)。 具体说明&#xff1a;Apache Flink是一个“框架和分布式处理引擎”&#xff0c;用于对无界…

2023年轨道交通行业研究报告

第一章 行业概况 1.1 定义和分类 在全球行业分类标准&#xff08;GICS&#xff09;的框架下&#xff0c;轨道交通行业被精准地划定为交通运输行业的一个重要子集&#xff0c;其主要职责是专注于沿着预设轨道路线进行乘客和货物运输的系统的设计、实施、维护以及管理。这个行业…