CROSS JOIN(交叉连接) :返回左表中的所有行,左表中的每一行与右表中的所有行组合,返回的行数等于左表行数乘以右表行数。
一、连接查询包括:
1. CROSS JOIN(交叉连接) :
返回左表中的所有行,左表中的每一行与右表中的所有行组合。
2. INNER JOIN(内连接) :
返回左表和右表中满足连接条件的行。
3. LEFT JOIN(左外连接) :
返回左表中的所有行,以及右表中满足连接条件的行。
4. RIGHT JOIN(右外连接) :
返回右表中的所有行,以及左表中满足连接条件的行。
5. FULL JOIN(全外连接) :
返回左表和右表中的所有行,如果其中某个表中的行在另一个表中没有匹配的行,则使用 NULL 填充。
二、它们的特点:
- CROSS JOIN :
返回的行数等于左表行数乘以右表行数。
- INNER JOIN :
只返回满足连接条件的行。
- LEFT JOIN :
返回左表中的所有行,以及右表中满足连接条件的行。
- RIGHT JOIN :
返回右表中的所有行,以及左表中满足连接条件的行。
- FULL JOIN :
返回左表和右表中的所有行,如果其中某个表中的行在另一个表中没有匹配的行,则使用 NULL 填充。
三、使用方法:
- CROSS JOIN :
使用 CROSS JOIN 关键字进行连接。
- INNER JOIN :
使用 INNER JOIN 关键字,后面跟着连接条件。
- LEFT JOIN :
使用 LEFT JOIN 关键字,后面跟着连接条件。
- RIGHT JOIN :
使用 RIGHT JOIN 关键字,后面跟着连接条件。
- FULL JOIN :
使用 FULL JOIN 关键字,后面跟着连接条件。
四、CROSS JOIN 与其他连接查询的比较:
1. CROSS JOIN 返回的行数最多,因为它返回左表中的所有行与右表中的所有行的组合。
2. INNER JOIN 返回的行数最少,只返回满足连接条件的行。
3. LEFT JOIN 返回左表中的所有行,以及右表中满足连接条件的行。
4. RIGHT JOIN 返回右表中的所有行,以及左表中满足连接条件的行。
5. FULL JOIN 返回左表和右表中的所有行,如果其中某个表中的行在另一个表中没有匹配的行,则使用 NULL 填充。
五、高级应用:
1. 在连接查询中使用子查询。
2. 使用多个连接条件。
3. 使用 NATURAL JOIN 关键字。
4. 使用 USING 关键字。
以下是一个示例,演示了如何使用 CROSS JOIN 和其他连接查询:
```sql
-- 创建表
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(50),
price DECIMAL(10, 2)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
order_date DATE,
customer_id INT
);
CREATE TABLE order_items (
id INT PRIMARY KEY,
order_id INT,
product_id INT,
quantity INT
);
-- CROSS JOIN 示例
SELECT *
FROM products
CROSS JOIN orders;
-- INNER JOIN 示例
SELECT *
FROM products
INNER JOIN order_items ON products.id = order_items.product_id;
-- LEFT JOIN 示例
SELECT *
FROM products
LEFT JOIN order_items ON products.id = order_items.product_id;
-- RIGHT JOIN 示例
SELECT *
FROM orders
RIGHT JOIN order_items ON orders.id = order_items.order_id;
-- FULL JOIN 示例
SELECT *
FROM orders
FULL JOIN order_items ON orders.id = order_items.order_id;
```
(文章为作者在学习MySQL过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)
标签:JOIN,CROSS,连接,右表中,MySQL,order,id From: https://blog.csdn.net/weixin_69763181/article/details/139854322