JOIN怎么显示来自多个表的数据

网友投稿 323 2023-12-03

JOIN怎么显示来自多个表的数据

这篇文章主要介绍“JOIN怎么显示来自多个表的数据”,在日常操作中,相信很多人在JOIN怎么显示来自多个表的数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JOIN怎么显示来自多个表的数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

表关系简介

一、语法

JOIN怎么显示来自多个表的数据

SELECT 字段列表

  FROM TABLE1

[CROSS JOIN TABLE2 ] |

[NATURAL JOIN TABLE2 ] |

 [JOIN TABLE2 USING (字段名) ] |

[JOIN TABLE2 ON (TABLE.COLUMN_NAME = TABLE2.COLUMN_NAME) ] |

[(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME) ];

二、自然连接

1、USING

  如果不希望参照被连接表的所有同名列进行等值连接,自然连接将无法满足要求,可以在连接时使用USING子句来设置用于等值连接的列(参照列)名。

不允许在参照列上使用表名或者别名作为前缀

--99语法

SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME

  FROM EMP

  JOIN DEPT

 USING (DEPTNO);

 --92语法

SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME

  FROM EMP, DEPT

 WHERE EMP.DEPTNO = DEPT.DEPTNO;

2、ON

如果要参照非同名的列进行等值连接,或想设置任意的连接条件,可以使用On子句

SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME

  FROM EMP

  JOIN DEPT

ON (EMP.DEPTNO = DEPT.DEPTNO);

三、自连接

  自己和自己做链接

--99语法

SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGR

FROM EMPLOYEES WORKER

  JOIN EMPLOYEES MANAGER

    ON (WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID);

--92语法

SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGR

  FROM EMPLOYEES WORKER, EMPLOYEES MANAGER

WHERE WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID;

四、非等值连接

--99语法

SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVEL

  FROM EMPLOYEES E

  JOIN JOB_GRADES J

ON E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;

--92语法

SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVEL

FROM EMPLOYEES E, JOB_GRADES J

 WHERE E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;

五、INNER|OUTER 连接

1、INNER 连接

  两个表连接,只返回匹配的行,被称为内连接。

--查询所有员工以及其部门名字

--99语法

SELECT LAST_NAME, DEPARTMENT_NAME

FROM EMPLOYEES E

 INNER JOIN DEPARTMENTS D

    ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;

--92语法

SELECT LAST_NAME, DEPARTMENT_NAME

  FROM EMPLOYEES E, DEPARTMENTS D

 WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;

2、LEFT OUTER | RIGHT OUTER 连接

  两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外连接。

--哪些部门没有员工,看出部门名字

--99语法

SELECT DEPARTMENT_NAME

  FROM EMPLOYEES E

 RIGHT JOIN DEPARTMENTS D

    ON E.DEPARTMENT_ID = D.DEPARTMENT_ID

WHERE LAST_NAME IS NULL;

--92语法

SELECT DEPARTMENT_NAME

  FROM EMPLOYEES E, DEPARTMENTS D

WHERE E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID

   AND LAST_NAME IS NULL;

3、FULL OUTER 连接

  两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为全外联接。

--99

SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME

  FROM EMPLOYEES E

  FULL OUTER JOIN DEPARTMENTS D

ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;

--92

SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME

FROM EMPLOYEES E, DEPARTMENTS D

    ON E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID(+);

六、笛卡尔积

笛卡尔集会在下面条件下产生:

1、连接条件被遗漏

2、连接条件不正确

3、所有表中的所有行互相连接

--99语法

SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME

  FROM EMPLOYEES E

CROSS JOIN DEPARTMENTS D;

--92语法

SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME

FROM EMPLOYEES E, DEPARTMENTS D;

到此,关于“JOIN怎么显示来自多个表的数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Oracle结构是怎样的
下一篇:Database物理文件有哪些
相关文章

 发表评论

暂时没有评论,来抢沙发吧~