• 查询语句


    查询语句

    一.子查询

    where型子查询:把内层查询的结果作为外层查询的比较条件

    二.exists 

          存在即保留

    三.函数

          单行函数:一条数据返回一个结果

          多行函数|组函数|聚合函数:多条数据返回一个结果

     3-1.日期函数

          sysdate | current_date:以date类型返回当前的日期

          sysdate +|- ** :几天后或几天前的时刻

          add_months(d,x):返回加上x月后的日期d的值

          LAST_DAY(d):返回的所在月份的最后一天

          Months_between(date1,date2):返回date1和date2之间月的数目

          Next_day(sysdate,’星期一’):下一个星期一的时间

    3-2.日期对象与字符串之间的转换

         to_date(‘字符串’,识别日期字符串模板):

         设定一个特定的时间(用一个特定的时间字符串转换为日期):

    例:select to_date('2019-07-30 10:11:13','yyyy-mm-dd hh24:mi:ss') from dual;

    例:select to_date('2019年07月30日 10:11:13','yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;

         To_char():将日期转为特殊格式的字符串:

    例:select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;

     3-3.其他函数

          nvl(string1,string2)->如果string1位null,则结果为string2的值

          decode(condition,case1,express1,case2,express2,…casen,expressn,expression)

          decode(判断字段,检验字段值1,结果1,检验字段值2,结果2..,默认值)

    四.组函数

          --对确定的结果集使用函数得结果

          --注意:1.select后 组函数不能和非组函数或分组字段一起使用

                    2.where 不能使用组函数

                    3.组函数仅在选择列表和Having字句中有效

          --说明:1.组信息与单条记录不能同时查询

                    2.组函数不能用在where中,能使用的地方select having

                    3.null不参与运算

          常用函数

    Count()  sum()  max()  min()  avg()

    五.分组

    --select 数据 from 数据源 where 行过滤条件 group by 分组字段 having 组过滤信息 order by 排序字段

    --执行顺序:from—where—group by—having—select—order by

    group by:分组

    1)  select出现分组函数,就不能使用非分组信息,可以使用group by字段

    2)  group by字段 可以不出现select中,反之select除组函数外的,其他字段必须出现在group by中

    过滤组 having:

    where:过滤行记录,不能使用组函数   having:过滤组,可以使用组函数

    --先过滤再分组:

    select max(sal) from emp where deptno in(10,30) group by deptno ;

    --先分组再过滤:

    select max(sal),deptno  from emp group by deptno having deptno in(10,30);

    六.rowid 和 rownum  都是伪列

           rowid :

    --rowid相当于表中每一条记录的地址,数据插入到列表中的时候就已经存在,后续不会改变

    --去重,没有主键,没有唯一的字段,可以存在多条数据重复,想达到去重,可以使用rowid

    rownum : 会根据返回记录生成一个序列化的数字 必须排序,不能直接取大于1的数

    七.92语法

           1.笛卡尔积 : 交叉相乘

      2.等值连接:可以是两个表中相同字段做连接,可以是不同字段做连接,但类型要保持一致

    例:select * from emp,dept where emp.deptno=dept.deptno;

      3.非等值连接:

    例:select * from emp,salgrade where sal between losal and hisal;

      4.自连接:特殊的等值连接(来自于同一张表)

      5.外连接: 看+和,主表在,的左边就叫左外连接 主表在,的右边叫右连接

  • 相关阅读:
    STM32之系统滴答定时器
    MPU6050带字符驱动的i2c从设备驱动2
    MPU6050带字符驱动的i2c从设备驱动1
    基于μC/OS—III的CC1120驱动程序设计
    STM32串口DMA超时接收方法,可大大节约CPU时间
    neo1973 audio subsystem
    题解模板
    在 GoLang 中使用 jwt 进行认证
    (OperationNotSupportedInTransaction) Cannot create namespace test.application in multi-document transaction 错误的解决方法
    server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: Type: RSGhost 错误的解决方法
  • 原文地址:https://www.cnblogs.com/jj-01/p/11228398.html
Copyright © 2020-2023  润新知