关于SQL数据库中cross join 和inner join用法上的区别?

Cross join 和 inner join 的区别: 1 . 连接方式不同:
Cross join:笛卡尔积,A表所有行与B表所有行组合,结果数为 A 记录数 B 记录数。

Inner join:基于匹配条件连接,只有当 A 表和 B 表在指定字段上有匹配值时才组合。

2 . 条件筛选不同:
Cross join:无默认筛选条件,所有组合都返回。

Inner join:必须有 on 子句指定匹配条件,不匹配则不返回。

3 . 语法不同:
Cross join:SELECT FROM table1 CROSS JOIN table2
Inner join:SELECT FROM table1 INNER JOIN table2 ON table1 .field1 = table2 .field2
实际使用时注意:
Cross join 容易产生大量数据,慎用。

Inner join 必须有明确的连接条件。

例子:
Cross join:SELECT FROM employees CROSS JOIN departments;返回所有员工与所有部门的组合,假设有 1 00 个员工和 1 0 个部门,结果 1 000 条。

Inner join:SELECT FROM employees INNER JOIN departments ON employees.department_id = departments.id;只返回有匹配 department_id 的员工记录。

数据库联结(inner join/join/outer join/left join/right join/full outer join)

inner join 和 join 是同义词,执行内联接。
class 和 student 表联结,class_no = student_class。
匹配行返回5 条,只有匹配的行保留。

left join 是左外连接。
显示左侧表所有数据,class 表所有数据保留。
student 表没有匹配项,也会显示 class 数据。

right join 是右外连接。
显示右侧表所有数据,student 表所有数据保留。
class 表没有匹配项,也会显示 student 数据。

full outer join 是全外连接。
显示所有表所有数据,无论匹配与否。
class 和 student 表所有非空匹配和非匹配数据都显示。