与oracle 有关的那点事

眉间皱痕 提交于 2020-08-09 05:54:32

常用操作

1.查看创建表参数

提取完整的DDL:

SELECT DBMS_METADATA.GET_DDL('TABLE','table_name') FROM DUAL;

2.指定返回记录数

select  XXX from XXX where rownum<n

3.查询指定列的所有值且每个值只显示单条记录:

select 需要查询重复数据的列名
from 表名
group by 需要查询重复数据的列名

4.oracle中的交集、差集、并集

  • INTERSECT
  • MINUS
  • UNION / UNION ALL:union重复内容取唯一,union all没有过滤重复内容

组函数

组函数:即聚合函数,对一组值执行计算,并返回单个值(COUNT除外)。

  • 聚合函数忽略空值。
  • 聚合函数可以用于select、having子句,不可以用于where语句,因为where是对逐条记录进行筛选。
  • 常用聚合函数:
    • AVG:返回平均值,空值被忽略
    • COUNT:返回指定组中记录的数量
    • MAX
    • MIN
    • SUM:只能用于数字列,空值被忽略。
    • COUNT_BIG:返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
    • GROUPING:产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0.
    • CHECKSUM:返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引
    • STDEV:返回给定表达式中所有值的统计标准偏差。
    • VAR:返回统计方差

oracle的rownum用法

Rownum:是oracle自动分配给查询返回行的编号,从1开始。这个字段可以用于限制返回的总行数,但是rownum不能以任何表的名称作为前缀

  1. rownum对于等于某值的查询条件:

    1. rownum都是从1开始,但是1以上的自然数在rownum做等于判断是时认为都是false条件
    2. 无法查询到 where rownum>n (n>1)的记录
    3. 可以查到到where rownum=1的记录
  2. rownum对于大于某值的查询条件

    1. 需要使用子查询且rownum需要有别名:select * from(select rownum no ,id from student) where no>2
  3. rownum对于小于某值的查询条件

    1. 可以直接用 where rownum<n 查询
    2. 区间查询则需要用子查询。
  4. rownum和排序

    1. rownum是系统按照记录插入时的顺序给记录排的号。只能用子查询实现排序。

报错1:[Err] ORA-00979: not a GROUP BY expression

Oracle中 group by 规则:出现在select列表中的字段,如果没有在组函数出现,那么必须出现在group by 子句中。(即select列表中的字段不可以单独出现,必须在group语句或者组函数中。)

参考

参考1:http://blog.itpub.net/17203031/viewspace-688011/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!