【博学谷学习记录】超强总结,用心分享|MySql连接查询超详细总结
一、概述
在实际开发中,大部分情况下都不是在单表中进行数据操作,一般都是多张表进行联合查询。通常一个业务就会对应的有好几张表。MySql中的连接查询分为交叉连接,内连接,外连接三部分。其中交叉连接也叫笛卡尔积,也是内连接的一种。
二、连接查询常用方法
准备数据表:员工信息表(emp) 以及部门信息表(demp)

1、交叉连接:
也叫笛卡尔积。特点:不使用任何选择条件,直接把表1中的每个行与表2中的每个行进行一一匹配。因此该方式会产生很多重复数据,用的比较少。下面我们根据具体例子来进行详细解读。
案例:查询员工以及部门信息
select * from emp,demp;

我们可以看到,由于没有限定条件,该结果就是两张表记录条数的乘积,这就是笛卡尔积现象。
2、内连接:
顾名思义,就是指两张表中有交集的部分是需要的查询数据。

内连接又细化分为等值连接、非等值连接以及自连接。
2.1 等值连接
等值连接的最大特点就是:条件是等量关系的
等值连接的语法格式:select 字段名 from 表1 inner join 表2 on 消除笛卡尔积的连接条件A=B;
案例:根据部门id查询员工所对应的部门名称
select name,dname from demp inner join emp where demp.dpmp = emp.dpmp;

2.2 非等值连接
顾名思义,非等值连接的最大特点就是:条件不是等量关系的
非等值连接的语法格式:select 字段名 from 表1 inner join 表2 on 消除笛卡尔积的连接条件;
案例:查询部门编号在10-20之间的员工信息以及对用的部门信息
select * from emp inner join demp where emp.dpmp=demp.dpmp and demp.dpmp between 10 and 20;

2.3 自连接
自连接就是把一张表看成两张表,自己连接自己。通过起别名的方式, 将 1 张表变为 2 张表, 通过对应字段的对应关系, 进行条件比对, 实现连接查询。
案例:略过。
3、外连接
外连接分为左连接和右链接。
3.1 左连接:
查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null填充 。
左边是主表,内容全显示,右边是从表。
案例:查询员工以及部门的全部信息
select * from emp left join demp on emp.dpmp = demp.dpmp;

3.2 右连接:
查询的结果为两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据使用null 填充
右连接右边的表是主表,左边的是从表。

案例:查询各个部门对应的员工信息
select * from demp left join emp on emp.dpmp = demp.dpmp;

三、总结
1,本质上来说,连接就是把各个表中的记录都取出来依次进行匹配,并把匹配后的组合发送给客户端。如果不加任何过滤条件,产生的结果集就是笛卡尔积。
2,连接查询分为内连接和外连接以及交叉连接,其中外连接又可以分为左外连接和右外连接。
3,内连接和外连接的根本区别是:在驱动表中的记录不符合on子句中的连接条件时,内连接不会把该记录加入到最后的结果集中,而外连接会
拓展:连接查询的优化,下期分享。
【博学谷学习记录】超强总结,用心分享|MySql连接查询超详细总结的更多相关文章
- 【博学谷学习记录】超强总结,用心分享|Linux修改文件权限方法总结
一.介绍 linux中"一切皆文件".每个文件都设定了针对不同用户的访问权限. 文件权限主要针对以下三种对象: 属主:拥有者 属组:所属的组 其他人:不属于上述两类 二.文件权限 ...
- Java 学习(22):Java MySQL 连接
Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库. Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mys ...
- 原创 记录一次线上Mysql慢查询问题排查过程
背景 前段时间收到运维反馈,线上Mysql数据库凌晨时候出现慢查询的报警,并把原始sql发了过来: --去除了业务含义的sql update test_user set a=1 where id=1; ...
- SQL学习笔记四(补充-2-1)之MySQL SQL查询作业答案
阅读目录 一 题目 二 答案 一 题目 1.查询所有的课程的名称以及对应的任课老师姓名 2.查询学生表中男女生各有多少人 3.查询物理成绩等于100的学生的姓名 4.查询平均成绩大于八十分的同学的姓名 ...
- C语言学习笔记 (008) - C语言字符串操作总结大全(超详细)(转)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- MyBatis学习总结(12)——Mybatis+Mysql分页查询
package cn.tsjinrong.fastfile.util; /** * @ClassName: Page * @Description: TODO(分页组件的父类,用来封装分页的 通用 ...
- JavaEE精英进阶课学习笔记《博学谷》
JavaEE精英进阶课学习笔记<博学谷> 第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准 ...
- 2020年度钻石C++C学习笔记(2)--《博学谷》
2020年度钻石C++C--<博学谷> 1.以下标示符中命名合法的是A A.__A__ B.ab.c C.@rp D.2Y_ 2.设 a 和 b 均为 double 型变量,且a=5.5. ...
- Android课程设计——博学谷1.0
本文讲述了如何应用大三下学期智能移动终端开发技术课程所学知识,完成包含服务器端.客户端程序的应用——博学谷登录模块的开发,结合java语言基本知识,例如:字符串.列表.类.数据库读写等,设计.实现一个 ...
随机推荐
- Linux系列之进程管理
前言 进程是正在运行的程序,Linux系统通常有数百个进程同时运行.本文就来介绍下Linux是如何进行进程管理的. 我们可以看到: 查看进程(Viewing processes) 查找进程(Findi ...
- SpringBoot 集成 FreeMarker 导出 Word 模板文件(底部附源码)
思路解说 word 模板文件(doc 或 docx 文件)另存为 xml 文件 将后缀 xml 改成 html:大部分文档会改成 ftl(FreeMarker 的后缀名),因为 word 文件另存为 ...
- LOJ6062「2017 山东一轮集训 Day2」Pair(Hall定理,线段树)
题面 给出一个长度为 n n n 的数列 { a i } \{a_i\} {ai} 和一个长度为 m m m 的数列 { b i } \{b_i\} {bi},求 { a i } \{a_i\} ...
- KingbaseES CTID 与 Oracle ROWID
熟悉oracle的人都知道ROWID可用于快速的数据访问,KingbaseES 由于自身MVCC机制的原因,ctid 作为 oracle rowid 的替代方案不合适,但currtid 还是基本可以满 ...
- git 密码修改
当由于修改了Git 的密码导致 pull 等操作报错时,比如报以下错误: fatal: Authentication failed for 'http://xxxxxxxxxxxxxxxxxx.git ...
- sedona(Geospark)读取csv
package com.grady.sedona import org.apache.sedona.sql.utils.SedonaSQLRegistrator import org.apache.s ...
- HDFS 分布式环境搭建
HDFS 分布式环境搭建 作者:Grey 原文地址: 博客园:HDFS 分布式环境搭建 CSDN:HDFS 分布式环境搭建 准备四个Linux实例 每个实例对应的 host 和 ip 地址如下 nod ...
- 果汁 DI 介绍
Guice (英音同 'juice[果汁]') 是一个为 JDK8 及以上提供的轻量依赖注入框架. 目录 三级标题 三级标题 四级标题 三级标题 三级标题 /** * Animal */ interf ...
- C/C++ Capstone 引擎源码编译
Capstone 是一个轻量级的多平台.多架构的反汇编框架.Capstone 旨在成为安全社区中二进制分析和反汇编的终极反汇编引擎.Capstone的编译非常简单只需要一步即可轻松得到对应的Lib库文 ...
- Windows LDAP加固之LDAP签名
微软计划于2020年1月推出补丁更新,启用LDAP签名.虽然目前版本的操作系统已经包含了这个功能,但是微软并没有将它启用.随着时间推移,网络上的威胁越来越多.凭据重放和中间人攻击在LDAP的攻击中显得 ...