Oracle lesson 2 SQL 查询和 SQL 函数(中)
来源:互联网 发布:淘宝二手网叫什么 编辑:程序博客网 时间:2024/04/30 22:02
Oracle lesson 2
SQL 查询和 SQL 函数(中)
操作符
Oracle 支持的 SQL 操作符分类如下:
算术操作符
算术操作符用于执行数值计算
可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成
算术操作符包括加(+)、减(-)、乘(*)、除(/)
例:
SQL> SELECT itemdesc, max_level - qty_hand avble_limit
FROM itemfile WHERE p_category='spares';
SQL > SELECT itemdesc, itemrate*(max_level - qty_hand)
FROM itemfile
WHERE p_category='spares';
比较操作符
比较操作符用于比较两个表达式的值
比较操作符包括 =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等
例:
SQL> SELECT itemdesc, re_level
FROM itemfile
WHERE qty_hand < max_level/2;
SQL> SELECT orderno FROM order_master
WHERE del_date IN (‘06-1月
SQL> SELECT vencode,venname,tel_no
FROM vendor_master
WHERE venname LIKE 'j___s';
逻辑操作符
逻辑操作符用于组合多个计较运算的结果以生成一个或真或假的结果。
逻辑操作符包括与(AND)、或(OR)和非(NOT)。
例:
SQL> SELECT * FROM order_master
WHERE odate > ‘10-5月-05'
AND del_date < ‘26-5月
显示:2005-5月-10 至 2005-5月-26的订单信息
集合操作符
集合操作符将两个查询的结果组合成一个结果
如图集合操作符主要包括:
SQL> SELECT orderno FROM order_master
MINUS
SELECT orderno FROM order_detail;
MINUS 操作符返回从第一个查询结果中排除第二个查
询中出现的行。
链接操作符
连接操作符用于将多个字符串或数据值合并成一个字符串
例:通过使用连接操作符可以将表中
SQL> SELECT (venname|| ' 的地址是 '
||venadd1||' '||venadd2 ||' '||venadd3) address
FROM vendor_master WHERE vencode='V001';
的多个列合并成逻辑上的一行列
操作符的优先级
SQL 操作符的优先级从高到低的顺序是:
算术操作符 --------最高优先级
连接操作符
比较操作符
NOT 逻辑操作符
AND 逻辑操作符
OR 逻辑操作符 --------最低优先级
函数
Oracle 提供一系列用于执行特定操作的函数
SQL 函数带有一个或多个参数并返回一个值
以下是SQL函数的分类:
单行函数分类
单行函数分为日期函数,字符函数,数字函数,转换函数和其他函数。
日期函数
日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果
日期函数包括
:
ADD_MONTHS
MONTHS_BETWEEN
LAST_DAY
ROUND
NEXT_DAY
TRUNC
EXTRACT
日期函数举例源代码:
SQL> ----日期函数
SQL> select sysdate from dual;
SYSDATE
--------------
21-2月 -08
SQL> select current_date from dual;
CURRENT_DATE
--------------
21-2月 -08
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
21-2月 -08
SQL> ----两个日期的差
SQL> select (sysdate-to_date('
CHA
----------
1095.61819
SQL> ----增加月份
SQL> select add_months(sysdate,5) s from dual;
S
--------------
21-7月 -08
SQL> ---较少月份
SQL> select add_months(sysdate,-1)s from dual;
S
--------------
21-1月 -08
SQL> select add_months(sysdate,-12)s from dual;
S
--------------
21-2月 -07
SQL> ---least,greatest
SQL> ---least 选择日期列表里最前面的日期
SQL> select least('1-5月-2007','1-8月-2007') l from dual;
L
----------
1-5月-2007
SQL> select least(2-5月-2007','1-8月-2007') l from dual;
ERROR:
ORA-01756: 引号内的字符串没有正确结束
SQL> select least('2-5月-2007','1-8月-2007') l from dual;
L
----------
1-8月-2007
SQL> select least(to_date('
L
--------------
02-5月 -07
SQL> -----last_day
SQL> select last_day(sysdate) l from dual;
L
--------------
29-2月 -08
SQL> -----next_day
SQL> select next_day(sysdate,'星期四')l from dual;
L
--------------
28-2月 -08
SQL> ----months_between
SQL> select months_between(sysdate,to_date('
L
----------
-5.5602681
SQL> ----round
SQL> ----to_date,to_char
SQL> select to_char(sysdate,'yyyy-mm-dd hh:mm:ss') ch from dual;
CH
-------------------
2008-02-21 03:02:23
SQL> ---extract
SQL> select extract(month from sysdate)m from dual;
M
----------
2
SQL> select extract(year from sysdate)m from dual;
M
----------
2008
SQL> select extract(day from sysdate)m from dual;
M
----------
21
字符函数 (1)
字符函数接受字符输入并返回字符或数值!
如下所示:(部分)
示例代码:
SQL> -----字符函数
SQL> ----连接符’||’
SQL> select 'hello'||'world' str from dual;
STR
----------
helloworld
SQL> ----rpad和lpad 左右填充
SQL> select rpad('Hello',15',*') r from dual;
select rpad('Hello',15',*') r from dual
*
SQL> select rpad('Hello',15,'*') r from dual;
R
---------------
Hello**********
SQL> select lpad('Hello',15,'*') r from dual;
R
---------------
**********Hello
SQL> ----ltrim,rtrim,trim 去除空格
SQL> select ltrim(' zhang ') name from dual;
NAME
-----------
shangyt
SQL> select rtrim(' zh a ng ') name from dual;
NAME
--------
zh a ng
SQL> select trim(' z h ang ') name from dual;
NAME
--------
z h ang
SQL> -----lower,upper,initcap 大小写转化
SQL> select lower('ADSFADSF') s from dual;
S
--------
adsfadsf
SQL> select upper('zhangxu') s from dual;
S
-------
ZHANGXU
SQL> select initcap('zhang') s from dual;
S
-----
Zhang
SQL> -----length 长度
SQL> select length('zhang') length from dual;
LENGTH
----------
5
SQL> ---substr 链接
SQL> select substr('hello world',2,4) str from dual;
STR
----
ello
SQL> ----instr
SQL> select instr('hello','o') instr from dual;
INSTR
----------
5
字符函数 (2)
以下是一些其它的字符函数:
CHR和ASCII
LPAD和RPAD
TRIM
LENGTH
DECODE
例:
SQL> SELECT LENGTH('frances') FROM dual;
SQL> SELECT vencode,
DECODE(venname,'frances','Francis') name
FROM vendor_master WHERE vencode='v001';
数字函数
数字函数接受字符输入并返回字符或数值!
如图所示:(部分)
转换函数
转换函数将值从一种数据类型转换为另一种数据类型
常用的转换函数有:
TO_CHAR
TO_DATE
TO_NUMBER
示例:
SELECT TO_DATE(‘
FROM dual;
SELECT TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS')
FROM dual;
SELECT TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS')
FROM dual;
其它函数
以下是几个用来转换空值的函数:
NVL
NVL2
NULLIF
示例:
SELECT itemdesc, NVL(re_level,0) FROM itemfile;
SELECT itemdesc, NVL2(re_level,re_level,max_level)
FROM itemfile;
SELECT itemdesc, NULLIF(re_level,max_level)
FROM itemfile;
分组函数
分组函数基于一组行来返回结果
为每一组行返回一个值
如图:
示例:
SELECT COUNT(*) FROM itemfile;
SELECT AVG(re_level) FROM itemfile
WHERE p_category='accessories';
SELECT COUNT(itemrate) FROM itemfile;
SELECT MAX(max_level) FROM itemfile;
SELECT COUNT(DISTINCT qty_hand) FROM itemfile;
SELECT SUM(itemrate*max_level) FROM itemfile;
分析函数(1)
分析函数根据一组行来计算聚合值
用于计算完成聚集的累计排名、移动平均数等
分析函数为每组记录返回多个行
如图:
分析函数(2)
以下三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始
ROW_NUMBER 返回连续的排位,不论值是否相等
RANK 具有相等值的行排位相同,序数随后跳跃
DENSE_RANK 具有相等值的行排位相同,序号是连续的
示例:
SELECT d.dname, e.ename, e.sal, DENSE_RANK()
OVER (PARTITION BY e.deptno ORDER BY e.sal DESC)
AS DENRANK
FROM emp e, dept d WHERE e.deptno = d.deptno;
GROUP BY和HAVING子句
GROUP BY子句
用于将信息划分为更小的组
每一组行返回针对该组的单个结果
HAVING子句
用于指定 GROUP BY 子句检索行的条件
示例:
SELECT p_category, MAX(itemrate) FROM itemfile GROUP BY p_category;
SELECT p_category, MAX(itemrate) FROM itemfile
GROUP BY p_category
HAVING p_category NOT IN ('accessories');
未完…待续…
- Oracle lesson 2 SQL 查询和 SQL 函数(中)
- Oracle Lesson 2 SQL 查询和 SQL 函数(上)
- Oracle lesson 2 SQL 查询和 SQL 函数(下)
- oracle笔记(二)---SQL函数和SQL查询
- Oracle中常用sql函数(2)
- oracle sql查询使用函数
- C#、Oracle、Sql server中拼音查询的函数
- C#、Oracle、Sql server中拼音查询的函数
- ORACLE 和 SQL 在EXT中分页查询代码
- Oracle中一些和日期有关的SQL查询
- ArcGIS——数据库空间SQL(一、oracle中使用sql空间查询及st_astext等函数出错问题)
- Oracle中常用sql函数(1)
- Oracle中PL/SQL单行函数和组函数详解
- Oracle中PL/SQL单行函数和组函数详解
- Oracle Lesson 5 PL/SQL 编程
- SQL查询中DECODE函数和CASE WHEN 比较
- 笔记:Oracle SQL 高级查询简介 (2) 分析函数
- Oracle简单查询,常用函数(SQL语句集)
- vim的设置参数
- C陷阱和缺陷学习笔记
- 如何找到适合的实习机会
- BMP文件格式分析(zz)
- 如何创建桌面快捷方式
- Oracle lesson 2 SQL 查询和 SQL 函数(中)
- 强化知识,刻苦学习
- 解决数据库导入时出现的乱码问题
- C++知识点汇总
- 一个 Cobol 程序员的告白
- 编程从这里开始
- 龙珠游戏
- 计算机专业经典书籍之列表
- 程序人生:女程序员的求职奋斗史