作者:CSDN-PleaSure乐事
欢迎大家阅读我的博客 希望大家喜欢
使用环境:Idea
目录
1.内连接
1.1隐式内连接
1.1.1定义
在多表查询当中,隐式内连接是指没有显式使用JOIN关键字来进行表连接的一种方式,隐式内连接可以通过在SELECT语句中列出多个表,并在 WHERE 子句中指定连接条件来实现。具体格式如下:
select 字段列表 from 表1,表2 where 条件 ...;
1.1.2举例
假设我们有两个表 employees 和 departments,并且想要获取每个员工及其所在部门的信息,可以使用以下查询:
SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees, departments
WHERE employees.dept_id = departments.dept_id;
若其中有数据,我们可以得到如下结果:
1.1.3优缺点
对于非常简单的查询,隐式内连接可以让查询看起来更简洁。
但是代码可读性差,没有明确指出连接类型,使得查询更难理解。如果没有合适的WHERE子句,可能会导致笛卡尔积。
1.2显式内连接
1.2.1定义
在多表查询中,显式内连接是一种明确指定两个或多个表如何连接的方法。它使用JOIN关键字,使得连接条件和连接类型更加明显,从而提高了查询的可读性和可维护性。具体格式如下:
select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;
1.2.2举例
假设我们有两个表:employees 和 departments,其中 employees 表包含员工信息,departments 表包含部门信息。我们想获取每个员工及其所在的部门名称,代码如下:
SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.dept_id;
其中的结果与上述的隐式内连接一致。
1.2.3优缺点
式内连接使连接逻辑更加明显,易于理解,且可以通过明确指定连接条件,可以避免因遗漏连接条件而导致的笛卡尔积问题。
2.外连接
2.1左外连接
2.1.1定义
左外连接返回所有左侧表中的记录,并且只返回右侧表中匹配的记录。如果右侧表中没有匹配的记录,则右侧表的列将显示为NULL。
格式如下:
select 字段列表 from 表1 left [ outer] join 表2 on 连接条件 ...;
2.1.2举例
假设我们有两个表:employees 和 departments,我们希望获取所有员工的信息以及他们所在的部门名称。如果某个员工没有分配到部门,我们仍然希望显示该员工的信息,并在部门列中显示 NULL。代码如下:
SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees
LEFT JOIN departments
ON employees.dept_id = departments.dept_id;
2.2右外连接
2.2.1定义
右外连接与左外连接相反,它返回所有右侧表中的记录,并且只返回左侧表中匹配的记录。如果左侧表中没有匹配的记录,则左侧表的列将显示为 NULL。
2.2.2举例
如果要求如上,我们可以这样写:
SELECT employees.emp_id, employees.name, departments.dept_name
FROM employees
RIGHT JOIN departments
ON employees.dept_id = departments.dept_id;
作者:CSDN-PleaSure乐事
希望我的博客对您有帮助,也希望在对您有帮助时您可以为我留下点赞收藏与关注,这对我真的很重要,谢谢!