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技术站