之前在谈基本语法的时候,先说的是内置函数,忽略了基本数据类型和操作符。可能是因为在一开始学习的时候觉得
这些太基础了,但是再基础也不容忽视。接下来我们就谈一下操作符&基本数据类型(此章内容为转载)。
一、操作符
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、算术操作符(+ - * /):
算术表达式有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 开头,具有相等值得行排位相同,并且排位是连续的。