Oracle中多表查询

末蓝、 2022-07-14 06:23 335阅读 0赞
  1. 1.笛卡尔积
  2. select * from emp,dept;
  3. 2.等值连接
  4. select empno,ename,sal,emp.depno,dname from emp,dept
  5. where emp.depno=dept.depno;
  6. 3.非等值连接
  7. select ename,empno,grade, from emp,salgrade where sal between losal and hisal;
  8. 4.自连接
  9. select e.empno,e.ename,m.empno,m.ename from emp e,emp m
  10. where e.mgr = m.empno;
  11. select e.empno,e.ename,m.empno,m.ename from emp e,emp m
  12. where m.mgr = e.empno;
  13. 5.左外连接(LEFT OUTER JOIN
  14. select s.sid,s.sname,s1.sid,s1.sname from student s,student s1
  15. where s.sid = s1.sid(+);
  16. select empno,ename,dname from emp left outer join dept on emp.depno = dept.depno;
  17. 6.右外连接(RIGHT OUTER JOIN
  18. select s.sid,s.sname,s1.sid,s1.sname from student s,student s1
  19. where s.sid(+) = s1.sid;
  20. 7.满外连接(FULL OUTER JOIN
  21. SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  22. FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
  23. 注意:MySQL是不支持全外的连接的,这里给出的写法适合OracleDB2
  24. 但是可以通过左外和右外求合集
  25. SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  26. FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID
  27. UNION
  28. SELECT O.ID,O.ORDER_NUMBER,O.CUSTOMER_ID,C.ID,C.NAME
  29. FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
  30. 两者查询的结果是相同的
  31. 8.集合操作
  32. union:并集,所有的内容都查询,重复的只显示一次。
  33. union all:并集,所有的内容都查询,包括重复的。
  34. intersect:交集,只显示重复的。
  35. minus:差集或减集,只显示两张表不同的记录(和顺序有关系)或者说在第一个查询结果中排除第二个查询结果中出现的行。
  36. 验证unionunion all
  37. select * from emp union select * from emp20;--此语句查询结果中,重复的内容不再显示
  38. select * from emp union all select * from emp20;--查询结果中,重复的内容依然显示
  39. select * from emp intersect select * from emp20;--只显示两张表中都存在的记录
  40. select * from emp minux select * from emp20;--只显示两张表中不同的记录

发表评论

表情:
评论列表 (有 0 条评论,335人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Oracle-查询-连接查询

    左外连接是以join左边作为主表,右连接以join右边做为主表 外连接查询出来的结果相当于两个部分,一个部分是交集部分(相当于利用等值活非等值连接查询出来的结果),

    相关 Oracle关联查询

    在实际的应用系统开发中会涉及多个数据表,每个表的信息不是独立存在的,而是若干个表之间的信息存在一定的关联,这样当用户查询某一个表的信息时,很可能需要查询关联表的信息,这就是多表