返回顶部
首页 > 资讯 > 数据库 >MySql多表链接查询详细教程
  • 210
分享到

MySql多表链接查询详细教程

2024-04-02 19:04:59 210人浏览 泡泡鱼
摘要

目录1.什么是连接查询:2. 连接查询的分类:3.笛卡尔积现象:4.避免笛卡尔积现象5.内连接1)等值连接2)非等值连接3)自连接6.外连接7.内连接和外连接的区别:8.三个表连接查询1.什么是连接查询: 在实际开发中大

1.什么是连接查询:

在实际开发中大部分都不是从一张表中查询数据,一般都是多张表联合查询取得结果。

实际开发中,一般一个业务对应多张表。比如:学生和班级,起码两张。(因为一张表可能会出现冗余的情况,即数据大量重复!)

2. 连接查询的分类:

1)根据出现年代来划分,包括:

sql92(一些老的DBA还在使用的语法,已经被淘汰)

sql99(比较新的语法)

2)根据表的连接方式划分,包括:

内连接: 等值连接

​ 非等值连接

​ 自链接

外连接: 左外连接(左连接)

​ 右外连接(右连接)

*全连接(很少用,了解)

3.笛卡尔积现象:

在表的连接查询方面的一种现象:当两张表进行查询的的时候,没有任何条件限制,最终的查询结果条数是两张表的乘积。

SELECT e.ename,d.dname FROM emp e , dept d  ;   #会出现笛卡儿积现象(56条数据)(已经被淘汰的方式sql92写法)

关于表别名,使用表别名有什么好处吗?

执行效率高
可读性好

4.避免笛卡尔积现象

答:当然是加条件了。

SELECT e.ename,d.dname FROM emp e , dept d WHERE e.deptno = d.deptno ;

思考:避免了笛卡尔积会减少记录的匹配次数吗?

不会,还是匹配一样的次数,但是只显示有效条数。(并不能提高效率)

5.内连接

1)等值连接

语法:(inner)join …on…

inner可省略,带着只为可读性好一些。两张表内连接的意思 (常用)

SELECT e.ename,d.dname FROM emp e INNER(可以省略) JOIN  dept d  ON e.deptno = d.deptno WHERE 过滤条件; 

sql99语法:使得表的连接条件和后来的过滤条件分离了!

2)非等值连接

SELECT e.ename,e.sal,s.grade FROM emp e JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal

sql99语法:表连接条件并不是一个确切的值!

3)自连接

最大特点:一张表看作两张表,自己连自己

SELECT a.ename,b.mgr admin FROM emp a JOIN emp b WHERE a.mgr = b.empno ; 

6.外连接

语法格式:left|right(outer)join … on …

outer可省略,带着只为可读性好一些。两张表外连接的意思

左外连接(左连接):表示左边是主表。

右外连接(右连接):表示右边是主表。

左连接有右连接的写法,同样右连接也有左连接的写法 :

 MySql多表链接查询详细教程

 案例:查询没有员工的部门

SELECT d.* FROM dept d LEFT JOIN emp e ON e.`DEPTNO` = d.`DEPTNO` WHERE  e.`EMPNO` IS NULL 

7.内连接和外连接的区别:

内连接:假设有AB两张表,使用内连接,凡是A表B表能够匹配上的记录查询出来,这就是内连接,AB两张表并没有主次之分,两张表是平等的。
外连接:假设AB两张表,使用外连接,AB两张表中的一张是主表,一张是副表,主要查询主表中的数据,捎带查询副表,当副表中的数据并没和主表中的数据匹配上,副表自动模拟出NULL与之相匹配(主表数据无条件查询)

8.三个表连接查询

案例一:查询每个员工的部门名称和薪资等级

SELECT e.ename,d.`DNAME`,s.grade FROM emp e 
JOIN dept d ON e.`DEPTNO` = d.`DEPTNO` 
JOIN salgrade s ON e.`SAL` BETWEEN s.losal AND s.hisal

案例二:查询每个员工的部门名称、薪资等级、上级领导

SELECT e.`ENAME` '员工' ,d.`DNAME` '部门' , s.grade '薪资等级' , e2.ename '领导' 
FROM emp e 
JOIN dept d ON e.`DEPTNO` = d.`DEPTNO` 
JOIN salgrade s ON e.`SAL` BETWEEN s.losal AND hisal 
LEFT JOIN emp e2 ON e.`MGR` = e2.empno

到此这篇关于Mysql多表链接查询详细教程的文章就介绍到这了,更多相关mysql多表链接查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySql多表链接查询详细教程

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

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

猜你喜欢
  • MySql多表链接查询详细教程
    目录1.什么是连接查询:2. 连接查询的分类:3.笛卡尔积现象:4.避免笛卡尔积现象5.内连接1)等值连接2)非等值连接3)自连接6.外连接7.内连接和外连接的区别:8.三个表连接查询1.什么是连接查询: 在实际开发中大...
    99+
    2024-04-02
  • MySQL子查询详细教程
    目录1.where后面嵌套子查询2.from后面嵌套子查询*3.在select 后面嵌套子查询4.union5.*limit定义:select语句中嵌套select语句,被嵌套的select...
    99+
    2024-04-02
  • MySQL多表连接查询详解
    目录多表连接查询内连接左连接右连接子查询总结多表连接查询 表与表之间的连接分为内连接和外连接 内连接:仅选出两张表互相匹配的记录 外连接:既包括两张表匹配的记录,也...
    99+
    2024-04-02
  • 【MySQL基础教程】多表查询
    前言 本文为 【MySQL基础教程】多表查询 相关知识,下边将对多表关系,多表查询概述,内连接,外连接,自连接,子查询,多表查询案例等进行详尽介绍~ 📌博主主页:小新要变强 的主页 👉Java全栈学习路线可...
    99+
    2023-08-18
    mysql 数据库 java
  • 连接查询(多表查询)——MySQL
    连接查询(多表查询) 又称多表查询,当查询的字段涉及多个表的时候,就要用到连接查询 分类: 为表起别名: 提高语句的简洁度区分多个重名字段注意:如果为表起了别名,则查询的字段就不能使用原来的别名去限定 内连接 查询A、B 交集部分数据 语...
    99+
    2023-08-18
    数据库 mysql 多表查询
  • MySQL详细讲解多表关联查询
    目录数据库设计范式外键内连接 外连接结语数据库设计范式 目前数据库设计有五种范式 , 一般我们数据库只需要满足前三项即可 第一范式 : 确保每列保持原子性 什么是原子性 意...
    99+
    2024-04-02
  • mysql多表查询的几种分类详细
    目录分类1:等值连接vs非等值连接1.等值连接2.非等值连接分类2:自连接vs非自连接分类3:内连接vs外连接总结:多表查询分类 分类1:等值连接 vs 非等值连接 1. 等值连接 ...
    99+
    2024-04-02
  • 详解MySQL多表查询
    目录多表查询内连接查询外连接查询子查询最后说一句多表查询 内连接查询 语法 -- 隐式内连接 SELECT 字段列表 FROM 表1,表2… WHERE 条件; -- 显示内连接 SELECT ...
    99+
    2023-04-19
    MySQL多表查询 MySQL查询
  • thinkphp如何进行多表链接查询
    本篇内容主要讲解“thinkphp如何进行多表链接查询”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“thinkphp如何进行多表链接查询”吧!首先,我们需要了解ThinkPHP中多表链接查询语句...
    99+
    2023-07-05
  • 【MySQL】详解聚合查询、多表查询
    MySQL 增删查改(进阶) 文章目录 MySQL 增删查改(进阶)01 表的设计表的三大范式 02 查询操作进阶新增聚合查询countsumavgmaxmin 分组查询 GR...
    99+
    2023-10-07
    mysql adb 数据库
  • MySQL 四种连接和多表查询详解
    目录MySQL内连接、左连接、右连接、外连接、多表查询构建环境:一、INNERJION内连接(A∩B)二、LEFTJOIN左外连接(A全有)三、RIGHTJOIN右外连接(B全有)四...
    99+
    2024-04-02
  • MySQL系列多表连接查询92及99语法示例详解教程
    目录1.笛卡尔积现象2.连接查询知识点概括1)什么是连接查询?2)连接查询的分类3.内连接讲解1)等值连接:最大特点是,连接条件为等量关系。2)sql92语法和sql99语法的区别。...
    99+
    2024-04-02
  • 浅谈Mysql多表连接查询的执行细节
    先构建本篇博客的案列演示表: create table a(a1 int primary key, a2 int ,index(a2)); --双字段都有索引 create...
    99+
    2024-04-02
  • MySQL:多表查询(全面详解)
    MySQL:多表查询 前言附录:常用的 SQL 标准有哪些一、一个案例引发的多表连接1、案例说明2、笛卡尔积(或交叉连接)的理解3、案例分析与问题解决 二、多表查询分类讲解1、等值连接 vs 非等值连接1.1 等值连接1.2 非...
    99+
    2023-08-16
    mysql 数据库
  • 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
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作