返回顶部
首页 > 资讯 > 数据库 >MySQL多表查询案例分析
  • 282
分享到

MySQL多表查询案例分析

2023-06-29 09:06:01 282人浏览 安东尼
摘要

本篇内容介绍了“MySQL多表查询案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!多表查询案列说明笛卡尔积的理解select

本篇内容介绍了“MySQL多表查询案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

多表查询

案列说明

笛卡尔积的理解

select id,department_namefrom employees,departments;#错的select id,department_id,department_namefrom employees CROSS JOIN departments;#错的

每个员工和每个部门匹配了一遍(查出的条目数=id数*department数)

错误原因:缺少连接条件

笛卡尔积的解决

编写连接条件: 表1.列 = 表二.列(若多个表连接,至少要用n-1个连接条件)

select id,employees.name,department_name from employees,departmentsWHERE employees.name = departments.name;

注:如果要显示的列在要查询的表中名字一样,则要表明,是出自哪个表, eg: employees.name

建议在多表查询时,标明显示的是哪个表的信息 (优化

优化:可以在FROM后使用表的别名,但是一旦使用别名,后续就一定要都用别名

多表查询的分类

等值连接和非等值连接

  • 等值连接:上述的带有=的

  • 非等值连接:没有=的

select t1.id,t1.name,t2.gradefrom employees t1,departments t2WHERE ti.salary BETWEEN t2.lowest_salary AND t2.highest_salary ;#非等值

自连接和非自连接

  • 非自链接:表1和表2连接

  • 自链接:表1和自己连接

#显示员工(t1)和其管理者(t2)的基本信息select t1.id,t1.name,t2.id,t2.namefrom employees t1,employees t2#一个表看作两个表WHERE t1.manage_id = t2.id ;#自连接

内连接和外连接

  • 内连接:合并含有同一列的表,结果不包括一个表与另一个表不匹配打的行

  • 外连接:合并含有同一列的表,结果除了内连接的结果还查询不匹配的行

外连接的分类:左外连接(左表多,补右边),右外连接(右表多,补左边),满外连接

sql92:使用(+)创建连接

内连接:见上

外连接:左表有数据不匹配,在右表加(+);反之,在左表加(+),但是Mysql不支持

WHERE t1.department_id = t2.department_id(+)#左连接

SQL99:使用JOIN...ON的方式

内连接

select t1.id,t1.name,t2.department_name,t3.environmentfrom employees t1 JOIN departments t2ON t1.department_id = t2.department_idJOIN locations t3#加入第二个人表ON t2.department_location = t3.department_location;

外连接

使用OUTER JOIN...ON...

  • 左外连接:LEFT OUTER JOIN

  • 右外连接:RIGHT OUTER JOIN

  • 满外连接:FULL OUTER JOIN(mysql不支持)

select t1.name,t2.department_name#左外连接from employees t1 LEFT OUTER(可省略) JOIN departments t2ON t1.department_id = t2.department_id;

UMION的使用

合并查询结果

SELECT colum... FROM table1UNION (ALL)SELECT colum... FROM table2
  • UNION操作符

两个查询结果的并集,去重(效率低)

  • UNION ALL操作符(推荐)

两个查询结果的并集,不去重(效率高)

7种SQL JOINS的实现

MySQL多表查询案例分析

中图(内连接):

select t1.name,t2.department_namefrom employees t1 JOIN departments t2ON t1.department_id = t2.department_id;

左上图(左外连接):

select t1.name,t2.department_namefrom employees t1 LEFT JOIN departments t2ON t1.department_id = t2.department_id;

右上图(右外连接):

select t1.name,t2.department_namefrom employees t1 RIGHT JOIN departments t2ON t1.department_id = t2.department_id;

左中图:

select t1.name,t2.department_namefrom employees t1 LEFT JOIN departments t2ON t1.department_id = t2.department_idWHERE t2.department_id IS NULL;

右中图:

select t1.name,t2.department_namefrom employees t1 RIGHT JOIN departments t2ON t1.department_id = t2.department_idWHERE t1.department_id IS NULL;

左下图(满外连接):

#方式一:左上图 UNION ALL 右中图select t1.name,t2.department_namefrom employees t1 LEFT JOIN departments t2ON t1.department_id = t2.department_idUNION ALL select t1.name,t2.department_namefrom employees t1 RIGHT JOIN departments t2ON t1.department_id = t2.department_idWHERE t1.department_id IS NULL;#方式二:左中图 UNION ALL 右上图select t1.name,t2.department_namefrom employees t1 LEFT JOIN departments t2ON t1.department_id = t2.department_idWHERE t2.department_id IS NULLUNION ALLselect t1.name,t2.department_namefrom employees t1 RIGHT JOIN departments t2ON t1.department_id = t2.department_id;

右下图:

#左中图 UNION ALL 右中图select t1.name,t2.department_namefrom employees t1 LEFT JOIN departments t2ON t1.department_id = t2.department_idWHERE t2.department_id IS NULLUNION ALLselect t1.name,t2.department_namefrom employees t1 RIGHT JOIN departments t2ON t1.department_id = t2.department_idWHERE t1.department_id IS NULL;

SQL语法新特性

自然连接

使用关键字:NATURAL JOIN(不灵活),自动查询表中所有相同字段,然后进行等值连接

USING连接(不适用于自连接)

使用关键字:USING(同名字段),将表中相同名字的字段自动等值连接

select t1.name,t2.department_namefrom employees t1 JOIN departments t2ON t1.department_id = t2.department_id;等价于select t1.name,t2.department_namefrom employees t1 JOIN departments t2USING(department_id);

“MySQL多表查询案例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL多表查询案例分析

本文链接: https://lsjlt.com/news/324077.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL多表查询案例分析
    本篇内容介绍了“MySQL多表查询案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!多表查询案列说明笛卡尔积的理解select...
    99+
    2023-06-29
  • mysql多表查询的案例分析
    小编给大家分享一下mysql多表查询的案例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql多表查询一般用交叉连接、内...
    99+
    2024-04-02
  • mysql多表查询的实际案例分析
    本文主要给大家介绍mysql多表查询的实际案例分析,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql多表查询的实际案例分析吧。#案例:选中ci...
    99+
    2024-04-02
  • mysql 多表查询案例
    #案例:选中city在多伦多工作的员工 SELECT last_name,job_id,e.department_id,department_name FROM employees ...
    99+
    2024-04-02
  • mysql两表查询的案例分析
    小编给大家分享一下mysql两表查询的案例分析,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql两表查询的方法:1、使用“select 字段列表 from 表1,表2 [whe...
    99+
    2024-04-02
  • MySQL多表关联查询实例分析
    本篇内容介绍了“MySQL多表关联查询实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据库设计范式目前数据库设计有五种范式 , 一般...
    99+
    2023-06-30
  • MySQL基础之多表查询案例分享
    目录多表查询案例数据环境准备查询员工的姓名、年龄、职位、部门信息 (隐式内连接)查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显式内连接)查询拥有员工的部门ID、部门名称查询所有年龄大于40岁的员工, 及其归属的...
    99+
    2024-04-02
  • MySQL约束与多表查询实例分析
    本篇内容主要讲解“MySQL约束与多表查询实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL约束与多表查询实例分析”...
    99+
    2024-04-02
  • MySQL多表查询的案例详解
    多表查询 案列说明 笛卡尔积的理解 select id,department_name from employees,departments;#错的 select...
    99+
    2024-04-02
  • MySQL中where查询的案例分析
    这篇文章将为大家详细讲解有关MySQL中where查询的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。不能说不行今天加班,业务的妹子过来找我们查数据,说...
    99+
    2024-04-02
  • mysql子条件查询的案例分析
    这篇文章将为大家详细讲解有关mysql子条件查询的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中,在一个表表达中可以调用另一个表表达式,这个被调用的表...
    99+
    2024-04-02
  • MySQL派生表联表查询的示例分析
    这篇文章给大家分享的是有关MySQL派生表联表查询的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前情提要:公司运营的一个商城系统,忽然发现订单提现功能有问题,有大量的商户体现金额和订单金额不一致。于是产...
    99+
    2023-06-29
  • Mybatis-Plus多表关联查询的使用案例解析
    目录项目的目录结构:有以下四个包:有表结构如下: 首先配置pom.xml配置文件1.pojo包中有dept和emp两个实例类2.在Emp的mapper映射文件(.xml)中...
    99+
    2023-05-20
    Mybatis-Plus多表关联查询 Mybatis-Plus多表查询
  • MySQL之单表查询、多表查询
    一、单表查询: 单个表的查询方法及语法顺序需要通过实际例子来熟悉 先将表数据创建下: mysql> create database singe_t1; # 建个数据库singe_t1 Query OK, 1 row aff...
    99+
    2023-01-31
    MySQL
  • MySQL 多表查询
      union 结果集合并 使用多个select分别查询不同的表,把多个select查到的记录合并在一起 一个select查到m条记录,另一个select查到n条记录,合并之后就是m+n条记录   #查询全校...
    99+
    2017-05-29
    MySQL 多表查询
  • MySQL --- 多表查询
    多表查询、事务、以及提升查询效率最有手段的索引  一. 多表查询 1.1 多表查询 --- 概述 1.1.1 数据准备 将资料中准备好的多表查询数据准备的SQL脚本导入数据库中。 部门表: 员工表: 1.1.2 介绍 多表查询:指从多张表...
    99+
    2023-09-02
    mysql 数据库
  • MySQL多表查询
    文章目录 一、什么是多表查询1、概述2、笛卡尔积现象 二、多表查询的分类1、等值连接 vs非等值连接2、自连接 vs 非自连接3、内连接 vs 外连接4、满外连接(FULL OUTE...
    99+
    2023-09-01
    mysql 数据库 sql
  • 【MySQL】多表查询
    多表查询 多表关系 一对多(多对一)多对多一对一 一对多 案例:部门与员工 关系:一个部门对应多个员工,一个员工对应一个部门 实现:在多的一方建立外键,指向一的一方的主键 多对多 案例:学生与课程 关...
    99+
    2023-10-04
    mysql 数据库 sql
  • mysql-多表查询
    准备工作:准备两张表,部门表(department)、员工表(employee)mysql> create database db2;Query OK, 1 row affected (0.00 sec)mysql> use d...
    99+
    2023-01-30
    mysql
  • MySQL----多表查询
    MySQL----多表查询 多表关系表与表之间的联系:一对多(多对一)多对多一对一 多表查询多表查询的分类数据准备内连接外连接自连接联合查询子查询标量子查询列子查询行子查询表子查询 多表查询案例 多表关系 在进...
    99+
    2023-08-19
    mysql sql 数据库 多表查询 DB
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作