SQL多表连接查询

本文详细介绍了SQL中的多表连接查询,包括简单连接、JOIN连接(内连接、自然连接、外连接和自连接)。特别是内连接示例展示了如何通过on子句匹配多个表的数据行,而外连接则解释了如何处理不匹配的行,包括左外连接、右外连接和全外连接。最后,自连接的概念和示例说明了如何在一个表中进行自我连接查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简单连接

  简单连接是使用逗号将两个或多个表进行连接。其查询结果是通过笛卡尔积产生的表——就是由一个基表中每一行与另一个基表的每一行连接所生成的表。查询结果的行数是两个基表行数的积。而使用WHERE条件,可以有效过滤掉无意义的数据。

 表别名问题

    如果为表指定了别名,那么语句中的所有子句都必须使用别名。而不允许再使用实际的表名。

2.JOIN连接

select * from tableA join_type tableB [on(join_condition)] 其中的join_type指出连接类型,常用的连接包括内连接、自然连接、外连接和自连接。连接查询中的on(join_condition)指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等组成。

1)内连接

    inner join 或者join关键字。内连接在on子句中使用比较运算符时,在连接表的某些列之间进行比较,并列出表中与连接条件相匹配的数据行。同时使用内连接可以实现两个以上表的查询。eg:

select em.employee_id,dep.department_name,job_title

from employees em inner join jobs

 on   em.job_id = jobs.job_id

inner join departments dep

on em.department_id = dep.department_id

where em.job_id = 'IT_PROG'

 2)自然连接

即多表查询时会将具有相同名称的列进行连接。用户不需要明确指定进行连接的列。而在实际使用时候很少使用,因为多表之间即使有相同名称的列,但表达的意义可能不一样。

3)外连接

   使用内连接进行多表查询时,返回的查询结果集仅包含符合查询条件(where搜索条件或having条件)和连接条件的行。内连接消除了与另一个表中的任何行不匹配的行,而外连接扩展了内连接的结果集。外连接除了返回所有匹配的行外,还会返回一部分或全部不匹配的行,这主要取决于外连接的种类。左外连接(left outer join 或 left join),右外连接(right outer join 或 right join)和全外连接(full outer join或full join)三种。

    外连接不仅列出与连接条件相匹配的行,还列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行

     在执行完全外连接时,系统开销很大,因为会执行一个完全的左连接查询和右连接查询,然后再将结果集合并,并消除重复的记录行。

4)自连接

 有时候,用户可能拥有自引用式外键。自引用式外键意味着表中的一个列是该表主键的的一个外键。通常自连接时候在from中会两次指定同一个表,分别为表指定别名。eg:

select em1.last_name "manager" ,em2.last_name "employee"

from employees em1 left join employees em2

on em1.employee_id = em2.manager_id

order by em1.employee_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值