mysql连接查询、联合查询、子查询原理与用法实例详解

mysql连接查询、联合查询、子查询原理与用法实例详解

连接查询

连接查询操作可以将多个表中的数据按照某些条件进行关联,获取到联合信息后进行数据展示。连接查询可以使用 join 或者其简化版本使用关键字 as 直接将表名称关联在一起。

JOIN

JOIN 操作包括了 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN 四种查询方式。

INNER JOIN

INNER JOIN,也称为内连接,是连接查询的基础模式之一。其实现原理是在两个表中匹配共同的列,将两个表中符合条件的部分组合成一个新的虚拟表,并把结果返回。如下示例:

SELECT *
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

LEFT JOIN

LEFT JOIN,也称为左外连接,它会把左边表中的全部数据都展示出来,右边表中没有匹配到对应列的数据用 NULL 表示。如下示例:

SELECT *
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

RIGHT JOIN

RIGHT JOIN,也称为右外连接,和 LEFT JOIN 相反,会把右边表中所有数据都展示出来,左边表中没有匹配到对应列的数据用 NULL 表示。如下示例:

SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;

FULL OUTER JOIN

FULL OUTER JOIN,也称为全外连接,是左外连接和右外连接的结合。其返回左边、右边表中所有行数据,如果匹配不上的就用 NULL填充。如下示例:

SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.column = table2.column;

AS

AS 是 MySQL 中的关键字,可以对表格起别名,起别名后可以使表格的名字更短、更具意义、代码可读性也会增加。如下示例:

SELECT *
FROM table1 AS t1
INNER JOIN table2 AS t2
ON t1.column = t2.column;

联合查询

如果要将一个查询中多个 SELECT 语句的结果集排列在一起展示,就需要使用联合查询。联合查询是使用 UNION 关键字实现的,其基本语法如下:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

其中,UNION 操作会将两个 SELECT 语句的执行结果集进行合并,并且进行去重。

子查询

子查询是 MySQL 中的一种查询方式,其根据查询结果的复杂度分为标量子查询和列子查询。

标量子查询

标量子查询可以返回一个标量值,其基本语法如下:

SELECT
  department_id,
  department_name,
  (SELECT COUNT(*) FROM employees WHERE department_id = d.department_id)
FROM
  departments d;

列子查询

列子查询可以返回一个多行多列的结果集,其基本语法如下:

SELECT column1, column2, ...
FROM table1
WHERE column IN (SELECT column_name FROM table2);

以上是 MySQL 中连接查询、联合查询和子查询的详细介绍,希望能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql连接查询、联合查询、子查询原理与用法实例详解 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Apache中启用Server Status配置示例

    下面我将介绍如何在Apache中启用Server Status配置,并给出两个示例说明。 1. 配置前的准备工作 在进入配置之前,需要确认以下两个前提条件: Apache中需要安装mod_status模块,可以通过执行以下命令来安装: sudo apt-get install libapache2-mod-status 安装完成后需要启用模块,可以通过执行以…

    database 2023年5月22日
    00
  • Redis之有序集合(zset)类型命令

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 – 1 …

    Redis 2023年4月13日
    00
  • 深入dom4j使用selectSingleNode方法报错分析

    下面是深入dom4j使用selectSingleNode方法报错分析的完整攻略。 一、背景介绍 DOM4J是一个基于Java的XML API,它允许读取、写入、操作XML文档。其中,selectSingleNode方法是DOM4J提供的一个用于查询XML节点的API方法。 二、问题描述 在使用DOM4J的selectSingleNode方法时,会遇到如下报错…

    database 2023年5月22日
    00
  • MongoDB错误32-bit servers don’t have journaling enabled by default解决方法

    当在64位系统上运行32位MongoDB服务器时,可能会出现”32-bit servers don’t have journaling enabled by default”错误,原因是默认情况下32位MongoDB服务器未启用日志记录。 要解决此问题,可以按照以下步骤操作: 在启动MongoDB服务器时,指定journal选项: mongod –jour…

    database 2023年5月22日
    00
  • Druid基本配置及内置监控使用_动力节点Java学院整理

    Druid基本配置及内置监控使用攻略 Druid是一个为数据库设计的连接池、SQL执行监控、分析工具。它使用Java的proxy技术来实现在JDBC层的透明处理和统计数据的展现。在使用前,需要进行一些基本配置。 基本配置 在项目的pom.xml中,引入Druid的依赖: <dependency> <groupId>com.alibab…

    database 2023年5月21日
    00
  • Centos忘记mysql密码及允许远程连接的方法

    以下是详细讲解“Centos忘记mysql密码及允许远程连接的方法”的完整攻略: 1. 重置丢失的MySQL root密码 1.1 关闭MySQL服务 在执行密码重置之前,必须先关闭MySQL服务。 sudo systemctl stop mysqld 1.2 启动MySQL不检查权限表 sudo mysqld_safe –skip-grant-table…

    database 2023年5月22日
    00
  • SQL Server 比较日期大小的方法

    当我们需要在SQL Server中比较日期大小时,可以使用以下方法: 使用比较运算符(比如 “<“, “>”, “<=”, “>=”)比较日期。需要注意的是,在比较之前,我们需要将日期转换为合适的日期格式。下面是一个示例: SELECT * FROM MyTable WHERE CONVERT(VARCHAR(10), MyDateC…

    database 2023年5月21日
    00
  • Java程序员编程性能优化必备的34个小技巧(总结)

    Java程序员编程性能优化必备的34个小技巧(总结) 优化内存: 1. 手动置空不再使用的对象的引用 Java中有自动垃圾回收器,但它并不会立即把内存释放,而是等待某个特定的时刻。因此,在使用完一个对象之后,主动置空这个对象的引用,可以提高垃圾回收器的效率,进而提升程序的性能。 示例代码: Object obj = new Object(); // obj对…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部