在本教程中,我们将学习如何使用SQL内部联接语句从多个表查询数据。
要从多个表中查询数据,请使用join语句。
SQL提供了几种类型的连接方法,如内部连接inner join、外部连接outer joins(左外部连接或左连接left outer join or left join、右外部连接或右连接right outer join or right join以及完全外部连接full outer join)和自连接self join。在本教程中,我们将向您展示如何使用INNER JOIN子句。
inner join
outer joins
left outer join or left join
right outer join or right join
full outer join
self join
INNER JOIN
下面是连接两个表的INNER JOIN语法:
SELECT
column1, column2
FROM
table_1
INNER
JOIN
table_2
ON
join_condition;
在本例中,我们将使用到数据库中的products和categories表。下图说明了数据库关系图。
其中:一个类别可以有许多产品。一种产品只属于一个类别。因此,categories表中的行与products表中的行之间存在多对一关系。这两个表之间的链接是categoryid列。
我们需要从两个表中查询以下数据:
productID, productName来自产品表。categoryName来自categories表。
productID, productName, categoryName
products
categories
categories.categoryID = products.categoryID;
join条件作为表达式放在INNER join子句中ON关键字之后:
categories.categoryID = products.categoryID
对于products表中的每一行,查询将在categories表中找到具有相同categoryid的对应行。如果两个表中的两行匹配,则返回包含SELECT子句中指定的列的行,即productID, productName, categoryName;否则,它将检查产品表products中的下一行,继续在categories表中找到匹配的行。这个过程一直持续到检查products表的最后一行。
我们可以使用相同的方法来连接三个表。以下查询将从产品、类别和供应商三个表中选择productID、productName、categoryName和supplier:
productID,
productName,
categoryName,
companyName
AS
supplier
suppliers
suppliers.supplierID = products.supplierID
内连接还有另一种形式,称为隐式内连接,如下所示:
table_1,
WHERE
在这种形式中,您可以在FROM子句中指定所有的连接表,并在SELECT语句的WHERE子句中放置连接条件。
我们可以使用隐式内连接重写上面的查询语句,如下所示:
products,
products.categoryID = categories.categoryID;
原文链接:https://codingdict.com/