SQL多表连接查询
来源:互联网 发布:unity3d 烟花粒子特效 编辑:程序博客网 时间:2024/06/05 18:49
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;
- sql 多表连接查询
- SQL多表连接查询
- sql多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- sql多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- SQL多表连接查询
- Linux:find命令详解
- C++纯虚函数小记
- 动态规划中的经典问题
- 三元光栅操作
- 逆波兰表达式,后缀表达式
- SQL多表连接查询
- Linux应用程序性能优化教程
- C#和VB.NET的区别
- 注释代码定位bug
- XWindow的程序性能及改善
- Xlib: No protocol specified
- 测试小结
- TCP/IP详解卷一 第8章 Traceroute程序
- SED修改指定行