当无涯教程根据一些公共列和连接条件合并两个或多个表时,该过程称为连接。 等值联接(EquiJoin)根据关联表中的相等性或匹配列值组合多个表的操作。
可以使用等号(=)比较运算符来引用 WHERE 子句中的相等性。 在 ON 子句中使用 JOIN关键字,然后指定列名称及其相关联时,此连接操作将返回相同的结果。
以下是说明等值连接操作的基本语法:
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 和中写入 join条件 ON 子句。
让无涯教程通过示例了解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;
它将给出以下结果。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)