• 基础查询


    exteact()提取给定日期中指定时间分类的值
    select extract(year from sysdate) from dual

    查询1980年入职的员工信息
    select * from emp where extract(year from hiredate)=1980

    判断字段的值是否为null
    判断要使用is null或is not null

    null值的运算操作
    null与任何数字运算结果还为null
    null与字符串拼接等于什么都没干
    select ename,sal,comm,sal+comm from emp


    空值函数
    nvl(arg1,arg2)
    当arg1为null,函数返回arg2的值
    若不为null,则返回arg1本身。
    所以该函数的作用是将null值替换为一个非null值
    select ename,sal,nvl(comm,0) from emp

    nvl2(arg1,arg2,arg3)
    当arg1不为null,则函数返回arg2
    当arg1为null,则函数返回arg3
    该函数是根据一个值是否为null来返回两个不同结果
    select ename,sal,nvl2(comm,'有绩效','没有绩效') from emp

    SELECT ename, sal, job
    FROM emp_fanchuanqi
    WHERE
    sal > 1250
    AND
    job = 'CLERK'
    OR
    job = 'SALESMAN'
    AND优先级是高于OR的。

    SELECT ename, sal, job
    FROM emp_fanchuanqi
    WHERE
    job IN ('MANAGER','SALESMAN','CLERK')
    SELECT empno, ename, job, sal, deptno
    FROM emp
    WHERE sal > ALL (2500,4000,4500);

    >ANY 大于最小的
    <ANY 小于最大的

    >ALL 大于最大的
    <ALL 小于最小的


    与in的相同之处:给定一组数据进行比较
    区别:in是与给定的数据进行等值或不等值比较
    any和all是与给定数据进行范围比较


    SELECT DISTINCT deptno,job
    FROM emp_fanchuanqi
    对单列去重,就一列的值没有重复的

    对队列去重,可以达到的效果是,这几列的组合
    是不重复的。


    SELECT ename,sal,deptno
    FROM emp_fanchuanqi
    ORDER BY sal,deptno DESC
    使用多列进行排序时,左面的列排序优先级高于
    右面的列
    以上面为例:
    首先按照sal的升序排列,当sal的值相同时,按照
    deptno的降序排列。若sal的值全表没有重复,那么
    第二列的排序会被忽略。
    order by 必须出现在最后的子句

    聚合函数有叫多行函数,分组函数
    聚合函数是对结果集某些字段的值进行统计的


    SELECT AVG(comm)
    FROM emp_fanchuanqi

    聚合函数忽略空值 AVG count
    SELECT AVG(NVL(comm,0))
    FROM emp_fanchuanqi

    COUNT:用于统计记录条数
    SELECT COUNT(*)
    FROM emp
    WHERE deptno=20


    SELECT
    MAX(sal),MIN(sal),AVG(sal),SUM(sal)
    FROM
    emp_fanchuanqi
    GROUP BY
    deptno

    group by 也可以根据多个字段分组,分组原则为这个几个字段值都相同的记录看做一组

    当select子句中包含有聚合函数时,那么凡不在聚合函数中的其他单独字段都必须出现在
    group by子句中,反过来则不是必须的
    select max(sal),job from emp group by job


    HAVING用于在进行分组查询后,二次过滤数据的
    HAVING不能独立存在,必须跟在GROUP BY
    之后。
    HAVING中可以使用组函数的结果进行过滤
    与WHERE的区别在于:
    WHERE是用于第一次检索数据时过滤的。
    HAVING是用于在检索后,进行二次过滤的
    过滤分组的
    SELECT
    deptno,AVG(sal)
    FROM
    emp_fanchuanqi
    GROUP BY
    deptno
    HAVING
    AVG(sal)>1800

    查询语句执行顺序(面试题)

    1 from子句:执行顺序为从后往前,从右到左
    数据量较少的表尽量放在后面
    2 where子句;执行顺序为自下而上、从右到左
    将能过滤掉最大数量记录的条件写在where子句的最右
    3 group by--执行顺序从左往右分组
    最好在group by钱使用where将不需要的记录在group by之前过滤掉

    4 having子句:消耗资源
    尽量避免使用 having会在检索出所有记录之后才对记过集进行过滤,需要排序等操作

    5 select子句;少用*号,尽量取字段名称
    消耗时间
    6 order by子句:执行顺序从左到有排序,消耗资源

  • 相关阅读:
    SharePoint部署webpart时候,报错:部署步骤“回收 IIS 应用程序池”中出现错误: 无效命名空间 解决方案
    免费的分布式的自动化测试工具
    https://github.com/dotnetcore
    SharePoint2013与SharePoint2016语言切换原理以及如何使用代码进行语言切换
    微软开源最强Python自动化神器Playwright!不用写一行代码!
    B站播单按时间统计进度
    AF_INET与PF_INET的区别
    git显示:fatal: index file smaller than expected
    Unix系统中信号SIGKILL和SIGSTOP
    GTM、UTC和C/C++中的时间处理
  • 原文地址:https://www.cnblogs.com/Bighua123/p/7567122.html
Copyright © 2020-2023  润新知