ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle多表查询

2020-02-20 19:41:25  阅读:65  来源: 互联网

标签:多表 name 查询 EMPLOYEE job Oracle JOIN 联接 id


一、多表联接查询

1.内联接 (inner join)

2.外联接

左外联接   (left outer join) ;右外联接   (right outer join) 完整外联接 (full outer join)

3.交叉联接(cross join 笛卡尔积)

二、内联接

它根据表中共同的列来进行匹配,当两个表存在主外键关系的时候通常会用到内联接查询。

例如:查询出公司的员工ID、员工姓名、所在部门ID、部门名称

SELECT emp_id,emp_name,DEP.dep_id,dep_name FROM EMPLOYEE  INNER  JOIN DEP   ON   EMPLOYEE.dep_id=DEP.dep_id

三、左外联接

它的结果集包括left outer join子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列均为空值。

例如:查询出公司的员工姓名、月份、实发工资 SELECT   E.emp_name,S.sal_ym,S.sal_disburse FROM   EMPLOYEE  E  LEFT OUTER JOIN  SALARY  S   ON   E.emp_id = S.emp_id

四、右外联接

右外联接:RIGHT JOIN(RIGHT OUTER JOIN)是左联接的反向联接,将返回右表中的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

例如:查询出公司的员工编号、职位编号、职位名称

SELECT  EMPLOYEE.emp_id,         EMPLOYEE.job_id,         JOB.job_name FROM    EMPLOYEE  RIGHT OUTER JOIN  JOB                 ON EMPLOYEE.job_id = JOB.job_id

五、完整外联接

完整外联接:FULL OUTER JOIN,它返回左右表中的所有行,当某行在另一个表中没有匹配行时,则另一个表的选择列包含空值,如果表之间有匹配行,则整个结果集行包含基表的数据值。

例如:查询出公司的员工编号、职位编号、职位名称 SELECT  EMPLOYEE.emp_id,         EMPLOYEE.job_id,         JOB.job_name FROM    EMPLOYEE  FULL OUTER JOIN  JOB             ON EMPLOYEE.job_id = JOB.job_id。

六、交叉联接(cross join 笛卡尔积)

交叉联接:CROSS JOIN,没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。如果添加一个 WHERE 子句,则交叉联接的作用将同内联接一样。

例如:查询出公司的员工姓名和职位名称 SELECT  E.emp_name || '.' || J.job_name FROM EMPLOYEE  E CROSS JOIN JOB  J

七、多表联接查询

例:现需要查询出所有员工的姓名,所在的部门以及职位。

SELECT E.emp_name  姓名,        D.dep_name  部门,        J.job_name  职位 FROM EMPLOYEE  E       LEFT JOIN DEP  D  ON E.dep_id = D.dep_id       LEFT JOIN JOB  J   ON E.job_id = J.job_id

婷婷周 发布了73 篇原创文章 · 获赞 30 · 访问量 9243 私信 关注

标签:多表,name,查询,EMPLOYEE,job,Oracle,JOIN,联接,id
来源: https://blog.csdn.net/qq_41629684/article/details/104416205

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有