Oracle学习之基本语法(二)—操作符&数据类型

来源:互联网 发布:国内打车软件排名 编辑:程序博客网 时间:2024/06/09 19:08
  之前在谈基本语法的时候,先说的是内置函数,忽略了基本数据类型和操作符。可能是因为在一开始学习的时候觉得
这些太基础了,但是再基础也不容忽视。接下来我们就谈一下操作符&基本数据类型(此章内容为转载)。
一、操作符
1、算术操作符(+ - * /):
  算术表达式有NUMBER数据类型的列名、数值常量和连接它们的算术操作符组成。
2、比较操作符:
  用于比较两个表达式的值,比如:
  =、!=、<、>、<=、>=
  BETWEEN  AND (检查是否在两个值之间)
  [NOT] IN(与列表中的值匹配)[注:IN+(NOT IN)+NULL=全部]  
  [NOT] LIKE(模糊匹配[* _  通配符])
  [NOT] IS NULL(检查是否为空)
3、逻辑操作符(AND OR NOT)
  用于组合生成一个真或假的结果。
4、集合操作符
  集合操作符将两个查询的结果组合成一个结果集合。
  UNION(联合)         返回两个查询选定不重复的行。(删除重复的行)
  UNION ALL(联合所有)  合并两个查询选定的所有行,包括重复的行。
  INTERSECT(交集)     只返回两个查询都有的行。
  MINUS(减集)         在第一个查询结果中排除第二个查询结果中出现的行。
二、常用数据类型
1、字符数据类型
  CHAR        固定长度字符串        长度 1~2000个字节,未指定则默认为 1字节
  VARCHAR2    可变长度字符串        长度 1~4000个字节,定义时必须指定大小
  LONG        可变长度字符串        最多能存储 2GB,存储超过 VARCHAR2 的长文本信息
  ps:一个表中只有一列为 LONG 数据类型;
      LONG 列不能建立索引;
      存储过程不能接受 LONG 数据类型的参数
2、伪列
  Oracle 中的一个表列,但实际上未存储表中。可以从表中查询,但是不能插入,更新或者删除。
  ROWID     返回行记录的行地址,通常情况下,ROWID 值可以唯一地标识数据库中的一行。
  作用:能最快形式访问表中的一行;
        能显示表中的行是如何存储的;
        可以作为表中行的唯一标识。
  例:SELECT ROWID, * FROM EMP  WHERE empno='7900';
    ROWNUM    返回一个数值单表行的次序,第一行为1,第二行为2.
  通过使用 ROWNUM 用户可以限制查询返回的行数(或者分页?)
  例:SELECT * FROM EMP WHERE ROWNUM <= 10;  
3、分组函数 / 聚合函数
    分组函数基于一组行返回结果,即为每一组行返回单个值。
  AVG (columname)         返回指定列的平均值
  MAX (columname)         返回指定列的最大值
  MIN (columname)         返回指定列的最小值
  SUM (columname)         返回指定列的总值
  COUNT    
      COUNT (*)        统计所有行个数,包括重复行和空值得行
      COUNT (columname)    统计指定列非空值的个行数
      COUNT (DISTINCR columname)    统计指定列中 非重复,非空值得行个数    
  GROUP BY 子句
      用于将信息表划分为组,对查询结果按组进行聚合运算,为每组返回一个结果。
  HAVING 子句
      用来指定 GROUP BY 子句的检索条件。  
4、分析函数
    分析函数根据一组行来计算聚合值。这些函数通常用来完成对聚集的累积排名、移动平均数和报表计算。
    分析函数与聚合函数不同的是他们为每组记录返回多个行。
    ROW_NUMBER () OVER ([PARTITION BY colum] ORDER BY colum)
        为有序组中的每一行返回一个唯一的排序值,序号由 ORDER BY 子句指定,从 1 开始,即使具有相等的值,排位也不同。
        PARTITION BY colum 按列值进行区分,各分组内在进行排序。
    RANK () OVER ([PARTITION BY colum] ORDER BY colum)
        计算一个值在一个组中的地位,由 1 开头,具有相等值得行排位相同,序数随后跳跃相应的数值。
    DENSE_RANK () OVER ([PARTITION BY colum] ORDER BY colum)
        计算一个值在一个组中的地位,由 1 开头,具有相等值得行排位相同,并且排位是连续的。
1 0
原创粉丝点击