• 数据库(学习整理)----7--Oracle多表查询,三种join连接


    聚合函数:(都会忽略null数据)
        常用的有5种:将字段中所有的数据聚合在一条中
            1、sum(字段名)        :求总和    
        
            2、avg(字段名)        :求平均值
    
            3、max(字段名)        :求最大值
    
            4、min(字段名)        :求最小值
    
            5、count(字段名、*)    :统计行数  
    
    
    
    
    ----2、按部门编号,查询平均薪水 ,并且平均薪水<1300的不显示,结果按降序排序
    select empno,avg(sal) as avgsal
    from scott.emp
    group by empno
    having avg(sal)>=1300
    order by avgsal desc;
    
    说明:
        SQL语句的执行顺序:一定是从上到下的!
        
        group by 执行之后才会执行having    、select中没有使用聚合函数的字段名必须写在这里
    
        having 后不能使用字段的别名   可以聚合函数、一般字段名
    
        order by 后面可以有:字段名、聚合函数、字段别名
    
    注意:
        Oracle 10g中才会出现的容错性:
    
            having 语句可以写在group by 之前,不会报错,但是实际上执行的顺序还是先执行group by 后执行having子句
    
    
    
    说明:
        1、当一个查询中,出现聚合函数和没有使用聚合函数的字段,则该字段必须出现在group by子句中!
    
        2、group by 字段1,字段2;  会先按照字段1分组得到一个结果集,再按照字段2进行分组!
    
        3where 发生在group by 前!
    
        4where 后面不能有聚合函数!
    
    
        
    
    多表查询:
    
        表连接分类: 内连接、外连接、交叉连接
    
        1、内连接: [inner] join    on
    
            SQL语法格式:
                语法1:
                    select *
                    from 表1 [inner] join 表2 on 表1.字段1=表2.字段1;
    
                语法2:
                    select *
                    from 表1,表2
                    where 表1.字段1=表2.字段1;
    
            说明: 
                内连接中的inner join 和 join 是等价的!但是建议为了程序的可读性
    
                尽量不要省略inner!
    
        2、外连接: 
            
            分类:左外连接、右外连接、全连接!
    
            1、左外连接:left outer join 
                
                连接效果:
                        左侧的表中的全部数据都会被显示出来,但是右侧表的数据,
                     只有和左侧匹配上的字段才会被查询出来!否则都会显示null!
    
                SQL语法格式:
                    
                    语法1:
                        select *
                        from 表1 left outer join 表2
                             on 表1.字段1=表2.字段1;
    
    
                    语法2:
                        select *
                        from 表1 left outer join 表2
                        where 表1.字段1=表2.字段1(+);
    
            2、右外连接:right outer join 
                
                连接效果:
                        右侧的表中的全部数据都会被显示出来,但是左侧表的数据,
                     只有和右侧匹配上的字段才会被查询出来!否则都会显示null!
    
                SQL语法格式:
                    
                    语法1:
                        select *
                        from 表1 right outer join 表2
                             on 表1.字段1=表2.字段1;
    
                    语法2:
                        select *
                        from 表1 left outer join 表2
                        where 表1.字段1(+)=表2.字段1;
    
            3、全外连接:full/all outer join 
    
                SQL语法格式:
                    
                        select *
                        from 表1 full outer join 表2
                             on 表1.字段1=表2.字段1;
    
        2、交叉连接: 表与表之间做笛卡尔积查询!
    
            SQL语法格式:(无条件查询)
    
                select *
                from 表1 cross join 表2;
    
                       或者
    
                select *
                from 表1, 表2;
  • 相关阅读:
    Visual Studio 2010 C++ 属性设置基础
    Visual Studio 2010 C++ 工程文件解读
    编译Python2.7.10
    编译libmemcached
    python2.7.10 VS2015编译方法
    zlib编译方法
    Openssl VS编译方法
    STL容器
    C++数值类型与string的相互转换
    NGINX配置文件详解
  • 原文地址:https://www.cnblogs.com/newwind/p/5677406.html
Copyright © 2020-2023  润新知