MySQL EquiJoin等值连接
当我们基于一些常见的列和一个连接条件组合两个或多个表时,这个过程称为连接。EquiJoin等值连接是一种基于关联表中的相等或匹配列值组合多个表的操作。
我们可以使用等号 (=) 比较运算符来引用WHERE子句中的相等性。当我们将JOIN 关键字与ON子句一起使用,然后指定列名及其关联表时,此连接操作返回相同的结果。
Equijoin 是一种分类类型的内连接,它通过基于两个表中存在的公共列执行连接操作来返回输出。此联接仅返回基于公共主字段名称在两个表中可用的那些数据。它不会在结果集中显示空记录或不匹配的数据。
注意事项:
- 不需要相同的列名。
- 结果结果可以有重复的列名。
- 我们还可以对两个以上的表执行 equijoin 操作。
一、MySQL EquiJoin 等值连接 语法
SELECT column_name (s)
FROM table_name1, table_name2, ...., table_nameN
WHERE table_name1.column_name = table_name2.column_name;
或者
SELECT (column_list | *)
FROM table_name1
JOIN table_name2
ON table_name1.column_name = table_name2.column_name;
在这种语法中,我们需要在SELECT 关键字之后指定要包含在结果集中的列名。如果我们想从两个表中选择所有列,将使用 * 运算符。接下来,我们将在 FROM 关键字后面指定连接的表名,最后在WHERE和ON子句中写入连接条件。
二、MySQL EquiJoin 等值连接 示例
让我们通过示例了解 Equijoin 在MySQL中是如何工作的。假设我们已经有两个名为customer和balance的表,其中包含以下数据:
执行以下 equijoin 语句以连接表:
mysql> SELECT cust. customer_name, bal.balance
FROM customer AS cust, balance AS bal
WHERE cust.account = bal.account_num;
我们将得到以下结果:
我们也可以使用下面的语句得到相同的结果:
mysql> SELECT cust. customer_name, bal.balance
FROM customer AS cust
JOIN balance AS bal
WHERE cust.account = bal.account_num;
请参阅以下与上一个查询返回的结果相同的输出:
三、使用三个表进行等值连接
我们知道 Equijoin 还可以对两个以上的表执行连接操作。为了理解这一点,让我们使用以下语句创建另一个名为cust_info的表:
CREATE TABLE cust_info (
account_no int,
mobile VARCHAR(15),
address VARCHAR(65)
);
然后,我们将记录填充到该表中:
INSERT INTO cust_info (account_no, mobile, address)
VALUES(1030, '598675498654', '777 Brockton Avenue, Abington MA 251'),
(2035, '698853747888', '337 Russell St, Hadley MA 103'),
(5564, '234456977555', '20 Soojian Dr, Leicester MA 154'),
(4534, '987656789666', '780 Lynnway, Lynn MA 19'),
(7648, '756489372222', '700 Oak Street, Brockton MA 23');
我们可以使用 SELECT 语句验证数据。见下图:
使用 equijoin 连接三个表,我们需要执行如下语句:
mysql> SELECT C.customer_name, C.account, B.balance, I.mobile
FROM customer AS C, balance AS B, cust_info AS I
WHERE C.account = B.account_num
AND B.account_num = I.account_no;
它将给出以下结果。
四、Natural Join,Equi Join和Inner Join之间的区别
让我们以下面给出的表格形式总结自然连接、等连接和内连接操作之间的区别:
Natural Join | Equi Join | Inner Join |
---|---|---|
它基于相同的列名及其数据类型连接表。 | 它根据关联表中的相等或匹配列值连接表。 | 它根据在 ON 子句中明确指定的列名连接表。它仅返回两个表中都存在的那些行。 |
它总是返回结果集中的唯一列。 | 它可以返回两个表的所有属性以及与连接条件匹配的重复列。 | 它返回两个表的所有属性以及与 ON 子句条件匹配的重复列。 |
自然连接的语法如下:
SELECT [column_names | *] |
equijoin 等值连接的语法如下: SELECT column_name (s) FROM table_name1, table_name2, ...., table_nameN |
内连接的语法如下: SELECT [column_names | *] FROM table_name1 INNER JOIN table_name2 |
热门文章
优秀文章