标签:多表 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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。