赞
踩
在MySQL中,JOIN
是一种用于将两个或多个表中的行联合起来的操作。
连接(join)就是将一张表中的行按照某个条件(连接条件)与另一张表中的行连接起来形成一个新行的过程。这个过程可以用来合并相关联的数据,以便于进行查询、分析或其他操作。
当根据连接条件执行连接查询时,可以将结果分为三类:
同时
在两个表中存在匹配的行。如果某行在其中一个表中没有匹配的行,则不会包含在结果中。内连接SQL句式:
SELECT *
FROM table1
INNER JOIN table2 ON table1.column = table2.column;
NULL值
。用LEFT JOIN
RIGHT JOIN
FULL JOIN
左外连接SQL句式:
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;
CROSS JOIN
关键字来实现。交叉连接SQL句式:
SELECT *
FROM table1
CROSS JOIN table2;
准备表,数据
-- 创建用户表 CREATE TABLE users ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), email VARCHAR(50) ); -- 创建订单表 CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, product_name VARCHAR(100), amount DECIMAL(10, 2), order_date DATE, FOREIGN KEY (user_id) REFERENCES users (user_id) ); -- 添加示例数据到用户表 INSERT INTO users (username, email) VALUES ('alice', 'alice@qq.com'), ('bob', 'bob@qq.com'), ('charlie', 'charlie@qq.com'), ('bob', 'bob@qq.com'); -- 添加示例数据到订单表 INSERT INTO orders (user_id, product_name, amount, order_date) VALUES (1, 'product a', 70.00, '2024-04-25'), (2, 'product b', 60.00, '2024-04-25'), (1, 'product c', 20.00, '2024-04-26'), (3, 'product d', 40.00, '2024-04-26'), (NULL, 'Product E', 60.00, '2024-04-27');
两张表如下
第一种:内连接查询(INNER JOIN):返回同时在用户表和订单表中存在的行
# 写法1
SELECT users.username, orders.product_name, orders.amount, orders.order_date
FROM users
INNER JOIN orders ON users.user_id = orders.user_id;
# 写法2
SELECT users.username, orders.product_name, orders.amount, orders.order_date
FROM users,
orders
WHERE users.user_id = orders.user_id;
第二种:左外连接查询(LEFT JOIN):返回左表中的所有行,以及右表中匹配的行,如果右表中没有匹配的行,则显示 NULL 值。
# 写法1
SELECT users.username, orders.product_name, orders.amount, orders.order_date
FROM users
LEFT JOIN orders ON users.user_id = orders.user_id;
# 写法2 后面介绍 using on 区别
SELECT users.username, orders.product_name, orders.amount, orders.order_date
FROM users
LEFT JOIN orders using(user_id);
第三种:右外连接查询(RIGHT JOIN):返回右表中的所有行,以及左表中匹配的行,如果左表中没有匹配的行,则显示 NULL 值。
SELECT users.username, orders.product_name, orders.amount, orders.order_date
FROM users
RIGHT JOIN orders ON users.user_id = orders.user_id;
USING:
USING
关键字用于在两个表中存在相同列名
的情况下简化连接条件的书写。USING
时,只需要指定相同列名,而不需要重复列出列名,并且连接条件中不需要指定表名。USING
只能指定一个列作为连接条件,且连接列的名称在两个表中必须相同。ON:
ON
关键字用于在连接操作中指定任意的连接条件,不限于相同列名。ON
时,可以指定任意的连接条件,通常使用在连接条件不是简单的列名相等的情况下。ON
可以指定多个连接条件,连接条件的灵活性更高。谢谢点赞
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。