dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

本文介绍了有关MySQL JOIN的详细教程。在其中,您将了解MySQL支持的不同类型的JOINS,它们的语法以及如何使用它们。

dbForge Studio for MySQL是一个在Windows平台被广泛使用的MySQL客户端,它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成创建和执行查询,开发和调试MySQL程序,自动化管理MySQL数据库对象等工作。

dbForge Studio for MySQL

本文介绍了有关MySQL JOIN的详细教程。在其中,您将了解MySQL支持的不同类型的JOINS,它们的语法以及如何使用它们。

MySQL JOIN简介MySQL中
不同类型的JOIN
1. MySQL INNER JOIN子句
2. MySQL OUTER JOINs
2.1 MySQL LEFT JOIN子句
2.2 MySQL RIGHT JOIN子句
3. MySQL CROSS JOIN子句
MySQL JOINs准则
结论

MySQL JOIN简介

MySQL数据库通常存储大量数据。为了有效地分析数据,分析师和DBA一直需要根据特定条件从两个或多个表中提取记录。这就是JOIN助力的地方。

JOINS用于在单个查询中从多个表中检索数据。为了使JOIN起作用,这些表需要使用一个公共键值相互关联。
JOIN子句在SELECT,UPDATE和DELETE语句中使用。

下载dbForge Studio for MySQL

MySQL中不同类型的JOIN

MySQL JOIN类型定义查询中两个表的关联方式。MySQL支持以下类型的JOIN子句:INNER JOINOUTER JOINCROSS JOIN。外连接可以进一步分为 左连接右连接

为了更好地演示JOIN的工作原理,我们将创建两个表。

CREATE TABLE `users` (    `auid` int(10) UNSIGNED NOT NULL,    `username` varchar(100) NOT NULL,    `password` varchar(150) NOT NULL,    `createdate` datetime NOT NULL,    `isActive` tinyint(1) NOT NULL  );      CREATE TABLE `userprofile` (    `apid` int(10) UNSIGNED NOT NULL,    `auid` int(10) UNSIGNED NOT NULL,    `firstname` varchar(50) NOT NULL,    `lastname` varchar(50) NOT NULL,    `email` varchar(100) NOT NULL,    `phone` varchar(45) NOT NULL  );

并用数据填充它们。

Insert into users  (auid, username,password, createdate, isActive)  values  (1,'admin','pswrd123', curdate(), 1);  Insert into userprofile  (apid, auid, firstname, lastname, email, phone)  values  (1,1,'Jack', 'Wolf', 'bettestroom@gmail.com','600075764216');  Insert into users  (auid,username,password, createdate, isActive)  values  (2, 'admin1','pass506', curdate(), 1);  Insert into userprofile  (apid, auid, firstname, lastname, email, phone)  values  (2, 3, 'Tom', 'Collins', 'tnkc@outlook.com','878511311054');  Insert into users  (auid, username,password, createdate, isActive)  values  (4,'fox12','45@jgo0', curdate(), 1);  Insert into userprofile  (apid, auid, firstname, lastname, email, phone)  values  (4,5,'Bill', 'Fonskin', 'bill_1290@gmail.com','450985764216');  Insert into users  (auid,username,password, createdate, isActive)  values  (6, 'lexus1267','98hnfRT6', curdate(), 1);  Insert into userprofile  (apid, auid, firstname, lastname, email, phone)  values  (7, 7, 'Ivan', 'Levchenko', 'ivan_new@outlook.com','878511311054');

1. MySQL INNER JOIN子句

INNER JOIN用于仅获取常见的匹配记录。INNER JOIN子句仅允许检索表A和表B中满足联接条件的那些记录。这是使用最广泛的JOIN类型。

为了更好地了解INNER JOIN,请看下面的维恩图。

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

这是MySQL INNER JOIN的语法:

SELECT columns  FROM tableA   INNER JOIN tableB  ON tableA.column = tableB.column;

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

2. MySQL外连接

与INNER JOINs相反,OUTER JOINs不仅返回匹配的行,而且还返回不匹配的行。如果联接表中存在不匹配的行,则将为它们显示NULL值。

MySQL中有以下两种类型的OUTER JOIN:MySQL LEFT JOIN和MySQL RIGHT JOIN。让我们仔细看看它们中的每一个。

2.1 MySQL LEFT JOIN子句

LEFT JOIN允许检索表A中的所有记录以及满足连接条件的表B中的那些记录。对于表A中与条件不匹配的记录,将显示NULL值。

为了更好地了解LEFT JOIN,请研究下面的维恩图。

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

这是MySQL LEFT JOIN的语法:

SELECT columns  FROM tableA  LEFT [OUTER] JOIN tableB  ON tableA.column = tableB.column;

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

2.2 MySQL RIGHT JOIN子句

因此,RIGHT JOINs允许检索表B中的所有记录以及满足连接条件的表A中的那些记录。对于表B中与条件不匹配的记录,将显示NULL值。

下面是维恩图,可让您更深入地了解RIGHT JOIN。

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

这是MySQL RIGHT JOIN的语法:

SELECT columns  FROM tableA  RIGHT [OUTER] JOIN tableB  ON tableA.column = tableB.column;

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

3. MySQL CROSS JOIN子句

MySQL CROSS JOIN,也称为笛卡尔联接,从每个表中检索所有行组合。在这种类型的JOIN中,如果未引入其他条件,则通过将表A的每一行与表B中的所有行相乘来返回结果集。

为了更好地理解CROSS JOIN,请研究下面的维恩图。

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

什么时候需要这种JOIN想您必须找到产品和颜色的所有组合。在这种情况下,CROSS JOIN将是非常有利的。

这是MySQL CROSS JOIN的语法:

SELECT columns  FROM tableA  CROSS JOIN tableB;

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

MySQL JOINs准则

MySQL中的JOIN允许您使用单个JOIN查询,而不是运行多个简单查询。因此,您可以获得更好的性能,减少服务器开销,并减少MySQL和您的应用程序之间的数据传输数量。

与SQL Server不同,MySQL不支持FULL OUTER JOIN作为单独的JOIN类型。但是,要获得与FULL OUTER JOIN相同的结果,可以组合LEFT OUTER JOIN和RIGHT OUTER JOIN。

SELECT * FROM tableA  LEFT JOIN tableB ON tableA.id = tableB.id  UNION  SELECT * FROM tableA  RIGHT JOIN tableB ON tableA.id = tableB.id

dbForge Studio for MySQL数据库使用教程:MySQL JOINs范例教学

使用MySQL JOIN,您还可以联接两个以上的表。

SELECT *  FROM tableA  LEFT JOIN tableB  ON tableA.id = tableB.id  LEFT JOIN tableC  ON tableC.id = tableA.id;

结论

对于任何分析师和DBA来说,全面了解JOIN并在日常工作中自由使用它们至关重要。这就是dbForge Studio for MySQL必不可少的地方。即使对于复杂的JOIN子句,它的高级代码完成也可以完美地工作。您不需要记住数百个列名或别名,dbForge Studio for MySQL将提示您完整的JOIN子句。其功能丰富的功能极大地简化了构建复杂查询和管理JOIN条件的过程。

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月12日
下一篇 2021年3月12日

相关推荐

发表回复

登录后才能评论