zoukankan      html  css  js  c++  java
  • oracle学习篇四:多表查询


    -----------------产生笛卡儿积------------------------------------
    select * from emp,dept; --不带条件时,记录数为14*4 =56条记录
    select * from emp cross join dept;--交叉连接,同上

    select count(*)from emp;

    ---左连接( 返回包括左表中的所有记录和右表中联结字段相等的记录 )
    select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno(+);
    select d.dname,e.ename from emp e left join dept d on e.deptno=d.deptno;
    select * from emp e left outer join dept d on e.deptno=d.deptno;

    --右连接(返回包括右表中的所有记录和左表中联结字段相等的记录) 
    select d.dname,e.ename from emp e,dept d where e.deptno(+)=d.deptno;
    select d.dname,e.ename from emp e right join dept d on e.deptno=d.deptno;
    select * from emp e right outer join dept d on e.deptno=d.deptno;

    ---默认/内连接(只返回两个表中联结字段相等的行)
    select d.dname,e.ename from emp e,dept d where e.deptno=d.deptno;
    select * from emp e inner join dept d on e.deptno=d.deptno;--内连接


    select * from emp e inner join dept d using(deptno);---使用using替换表达式 

    --自连接(自动对两个表按照同名的列进行内连接)
    select * from emp natural join dept;


    ---全外连接(合并左右连接)
    select * from emp full outer join dept using(deptno);

    ---合并结果集:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型

    select empno from emp UNION select deptno from dept;

    select empno,ename from emp UNION ALL select deptno,dname from dept;

    Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;
    Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

  • 相关阅读:
    MySQL 中的 3 种注释
    Macbook 彻彻底底的卸载MySQL
    MacBook 安装 MySQL 5.7.29(新手都看得懂的安装教程)
    Java Junit单元测试
    理解 Java 方法引用(方法引用符:“双冒号 :: ”)
    iOS应用启动时间
    iOS遍历数组的同时删除元素
    Xcode 中的断言
    Mac 下 查看 使用某端口的进程和关闭该进程的命令
    RAC 数据库的启动与关闭
  • 原文地址:https://www.cnblogs.com/brant/p/5598152.html
Copyright © 2011-2022 走看看