首页 > 数据库 >【博学谷学习记录】超强总结,用心分享|MySql连接查询超详细总结

【博学谷学习记录】超强总结,用心分享|MySql连接查询超详细总结

时间:2022-10-09 16:47:33浏览次数:57  
标签:总结 MySql 查询 emp demp 超强 连接 select dpmp

一、概述

  在实际开发中,大部分情况下都不是在单表中进行数据操作,一般都是多张表进行联合查询。通常一个业务就会对应的有好几张表。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,查询,emp,demp,超强,连接,select,dpmp
From: https://www.cnblogs.com/zj8970/p/16772655.html

相关文章

  • MySQL的下载与安装
    ......
  • 解决mysql 1449 问题
    现象:数据库可以连接,重启也正常启动。但查询数据库时,就是报下面的错误报错:Theuserspecifiedasadefiner(‘mysql.infoschema’@‘localhost’)doesnotexists查看m......
  • 测试基础学习 - mysql
    mysql介绍MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度......
  • Python中使用Mysql(编码实践)
    文档或者看源码​​http://mysql-python.sourceforge.net/MySQLdb-1.2.2/public/MySQLdb-module.html​​开篇在上一篇Python中使用Mysql(安装篇)中,我们为Python安装了支持My......
  • Python中使用Mysql(安装篇)
    准备工作importMySQLdbLinux系统自带了Python,但并不是都有这个包,至少我每次拿到一台全新的服务器时候,都发现没有装这个包。这个东西的下载地址是​​http://sourceforge.n......
  • mysql中set和enum枚举类型插入值和索引比较--笔记
    set,enum的数据类型都是字符串类型的对象,其中set最多可以包含64个元素,并且可以任意取到集合中的元素。而enum则是只能取到集合中的木一个元素,最多包含65536个元素,也就是说se......
  • 二十: MySql 事务日志
    MySql事务日志事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。而事务的原子性、一致性和持......
  • 二十一: Mysql 锁机制
    Mysql锁机制事务的隔离性由这章讲述的锁来实现。1.概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并......
  • 如何查看 MySQL 数据库容量大小,表容量大小,索引容量大小?找到占用空间最大的表
    1.查看MySQL「所有库」的容量大小SELECTtable_schemaas'数据库',sum(table_rows)as'记录数',sum(truncate(data_length/1024/1024,2))as'数据容量(MB)',su......
  • mysql之select使用篇1
    一、sql概述、规则数据导入1、sql概述sql有两个重要的标准分贝是sql92和sql96标准,今天使用sql一直遵循这两个标准,不通的数据库生产厂商都支持sql语句,但是也各有特有的内容2......