首页 数据库 mysql教程 mysql的多表查询详细讲解

mysql的多表查询详细讲解

Aug 23, 2019 pm 03:48 PM
多表查询

首先,为了方便说明问题,创建两个表emp(雇员信息)和dept(雇员部门信息),其数据如下:

20180617221923394.png在之前的文章中,我们分享了单表查询的方法,但是在实际应用中,我们要查的数据很可能不在同一个表中,而是来自于不同的表。多表查询如果不加任何条件,得到的结果称为笛卡尔积。 例如,查找雇员名、雇员工资以及部门所在的名字。 

2018061722200051.png

可以发现,结果是这样的,从第一个表中选出第一条记录,和第二个表中的所有所有记录进行组合,然后再从第一个表中取出第二条记录,和第二张表的所有记录进行组合,这样的结果是没有实际意义的。我们需要的是emp.deptno = dept.deptno字段的记录。 

20180617222017362.png

自连接

自连接是指在同一张表连接查询

显示员工FORD的上级领导的名字 

20180617222734599.png

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

单行子查询:子查询的查询结果只有一行

显示和SMITH同一部门的员工 

20180617223344582.png

多行子查询(in ,all, any):返回多条记录的子查询

查询和10好部门的工作相同的官员的名字、工作、工资、部门号,但是不包括10号自己的信息 

20180617224416375.png

显示工资比部门编号为30的所有员工的工资高的员工的姓名、工资和部门号 

20180617224738762.png

显示工资比部门编号为30的任意员工的工资高的员工的姓名、工资和部门号 

201806172249224.png

多列子查询:查询返回多个列数据的子查询语句

查询和SMITH的部门和岗位完全相同的雇员,不含SMITH本人 

20180617230327343.png

from子句中使用子查询

显示高于自己部门的平均工资的员工信息 

20180617231541142.png查找每个部门工资最高的人的ename, job, sal 

20180617231535796.png显示每个部门的信息(部门名、编号、地址)和人员数量

20180617232454580.png

这里有两种方法可以使用,但是经验证,当数据非常多的时候from子查询的效率是高于多表查询的。

删除表中的重复记录

已知一个表tt中有重复的数据

创建一张空表tmp_tt,空表的结构与表tt的结构相同;create table tmp_tt like tt;

将tt表进行distinct,将数据导入空表中;insert into tmp_tt select distinct * from tt;

删除原表ttdrop table tt;

将tmp_tt改名为ttalter table tmp_tt rename tt;

合并查询

在实际应用中,为了合并多个select的执行结果,可以使用union,union all集合操作符

1、union操作符用于取得两个结果的并集,并再自动去掉重复行 ,查找工资大于2500和职位Manger的人 

20180617233556266.png

2. union all 与union类似,但是不会自动去重 
例如:与or类似

20180617234055522.png

外键

外键定义主表和从表的关系,外键约束主要是定义在从表上,主表必须是有主键或者唯一键。当定义外键后,要求外键列数据必须在主表列存在或者为NULL。 
例如:创建一个主表class,从表stu 

2018061723530193.png

20180617235528589.png

由上图,我们可以知道主键不能为null,但是外键可以为null,同时不能存在外键有的数据而主表中不存在。

更多相关问题请访问PHP中文网:mysql视频教程

以上是mysql的多表查询详细讲解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP中的多表关联查询技巧 PHP中的多表关联查询技巧 May 24, 2023 am 10:01 AM

PHP中的多表关联查询技巧关联查询是数据库查询的重要部分,特别是当你需要展示多个相关数据库表内的数据时。在PHP应用程序中,在使用MySQL等数据库时,多表关联查询经常会用到。多表关联的含义是,将一个表中的数据与另一个或多个表中的数据进行比较,在结果中将那些满足要求的行连接起来。在进行多表关联查询时,需要考虑表之间的关系,并使用合适的关联方法。下面介绍几种多

精通MyBatis多表查询:优化数据处理效率的实用指南 精通MyBatis多表查询:优化数据处理效率的实用指南 Feb 19, 2024 pm 06:36 PM

全面掌握MyBatis多表查询:提升数据处理效率的实用指南引言:如今,在软件开发中,数据处理效率是一个重要的考量因素。而对于涉及到多表查询的数据处理,MyBatis是一个强大的工具。本文将深入探讨如何全面掌握MyBatis多表查询,提升数据处理的效率。文章将通过具体的代码示例进行演示,帮助读者更好地理解和应用。一、配置MyBatis环境首先,我们需要配置My

MyBatis多表查询优化:提升SQL性能的方法和策略 MyBatis多表查询优化:提升SQL性能的方法和策略 Feb 18, 2024 pm 10:24 PM

深入解析MyBatis多表查询:优化SQL性能的技巧与策略摘要:MyBatis是一种常用的持久层框架,能够帮助我们更方便地操作数据库。在实际开发中,多表查询是非常常见的需求,但是用不当的方式进行多表查询可能会导致性能下降。本文将重点探讨如何使用MyBatis进行多表查询,并给出优化SQL性能的一些技巧和策略。介绍MyBatis是一种流行的Java持久层框架,

解析MyBatis多表关联查询常见问题:解决数据连接查询中的疑惑 解析MyBatis多表关联查询常见问题:解决数据连接查询中的疑惑 Feb 18, 2024 am 10:41 AM

MyBatis多表查询常见问题解析:解决数据关联查询中的困惑,需要具体代码示例引言:在数据库应用开发中,数据表之间的关联查询是非常常见的需求。而对于MyBatis框架来说,多表查询是一项非常重要的功能。然而,由于MyBatis的灵活性和强大的动态SQL能力,有时候开发者可能会在进行多表查询时遇到一些困惑。本文将介绍一些常见的问题,并提供具体的代码示例来解决这

如何通过索引优化PHP与MySQL的多表查询? 如何通过索引优化PHP与MySQL的多表查询? Oct 15, 2023 pm 05:40 PM

如何通过索引优化PHP与MySQL的多表查询?在开发Web应用程序时,经常会涉及到与数据库进行交互的操作,尤其是对于关系型数据库来说,多表查询是非常常见的操作。然而,当数据量过大,查询复杂度增加时,多表查询的性能可能会受到一定的影响。为了提高查询效率,我们可以通过优化索引来进行调整。索引是数据库中用于提高查询性能的一种数据结构,它可以加快数据的查找速度。在P

MySql的多表查询:如何进行高效的多表数据查询 MySql的多表查询:如何进行高效的多表数据查询 Jun 15, 2023 pm 02:37 PM

随着互联网的发展和应用领域的不断扩展,数据量的增大已成为常态,数据的高效查询就显得尤为重要。在使用MySQL数据库中,多表查询是极为常见的数据查询方式。因此,如何进行高效的多表数据查询成为了MySQL数据库使用者必须掌握的一项技能。本文将从以下几个方面介绍如何进行高效的多表数据查询:1.多表查询的基本概念和语法;2.多表查询的优化技巧;3.多表查询的常见

MySql的视图:如何高效查询多个表的数据 MySql的视图:如何高效查询多个表的数据 Jun 15, 2023 pm 10:06 PM

MySql是一种广泛使用的关系型数据库管理系统,它广泛应用于各种不同规模和类型的应用程序中,尤其是在Web应用程序、企业解决方案和数据分析工具中。在这些应用程序中,经常需要查询多个表的数据,因此,为了提高查询效率和减少编写大量的SQL语句的复杂性,MySql引入了视图的概念。视图是一个虚拟的表,它不真正存在于数据库中,而是由一条或多条SELECT语句组成,它

PHP编程中的多库多表查询优化实践 PHP编程中的多库多表查询优化实践 Jun 22, 2023 pm 02:48 PM

PHP是一种常用的Web编程语言,它的广泛应用使得我们经常需要在PHP代码中操作多个数据库和表。多库多表查询操作既频繁又耗时,因此优化查询效率成为了PHP编程中必须面对的挑战。在本文中,我们将分享一些多库多表查询优化的实践方法。一、使用正确的查询方式查询方式的选择对于多库多表查询的性能有着重要的影响。在进行多库多表查询时,常用的查询方式有三种:JOIN查询J

See all articles