- 列的别名:使用双引号括起来,以便在别名中包含空格或者是特殊字符并区分大小写。----As
- 连接符||:用来连接字符或列,可以用来合成列。例:ename||'_'||job as "Employees"
- 字符串:日期和字符只能在单引号中出现。
- 关键字Distinct:查询时删除重复。
- SQL语句与SQL*PLUS的区别:语言/环境(命令行)、ANSI标准/Oracle特性之一、关键字不能缩写/可以缩写
- 操作符等于=:不是==,在oracle中赋值操作符是:=
- between-and(包含边界)、in、like(%、_)、is null
- 伪表DUAL的使用:可以用来测试函数和表达式
- 函数使用:单行函数(字符函数、数值函数、转换函数、日期函数、通用函数、条件表达式)
SQL> --四舍五入
SQL> select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,
2 round(45.926,-1) 四,round(45.926,-2) 五
3 from dual;
一 二 三 四 五
---------- ---------- ---------- ---------- ----------
45.93 45.9 46 50 0
SQL> select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,
2 round(45.926,-1) 四,round(45.926,-2) 五
3 from dual;
一 二 三 四 五
---------- ---------- ---------- ---------- ----------
45.93 45.9 46 50 0
SQL> -- timestamp 时间戳
SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff') from dual;
TO_CHAR(SYSTIMESTAMP,'YYYY-MM
-----------------------------
2015-12-23 14:27:21:750000
SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff') from dual;
TO_CHAR(SYSTIMESTAMP,'YYYY-MM
-----------------------------
2015-12-23 14:27:21:750000
SQL> --计算员工的工龄:天 星期 月 年
SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,
2 (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年
3 from emp;
ENAME HIREDATE 天 星期 月 年
---------- -------------- ---------- ---------- ---------- ----------
SMITH 17-12月-80 12789.6055 1827.0865 426.320184 35.0400152
ALLEN 20-2月 -81 12724.6055 1817.80079 424.153518 34.861933
SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,
2 (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年
3 from emp;
ENAME HIREDATE 天 星期 月 年
---------- -------------- ---------- ---------- ---------- ----------
SMITH 17-12月-80 12789.6055 1827.0865 426.320184 35.0400152
ALLEN 20-2月 -81 12724.6055 1817.80079 424.153518 34.861933
SQL> --months_between 相差的月数
SQL> select ename,hiredate,(sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二
2 from emp;
ENAME HIREDATE 一 二
---------- -------------- ---------- ----------
SMITH 17-12月-80 426.320252 420.213147
ALLEN 20-2月 -81 424.153585 418.116373
WARD 22-2月 -81 424.086919 418.051857
SQL> select ename,hiredate,(sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二
2 from emp;
ENAME HIREDATE 一 二
---------- -------------- ---------- ----------
SMITH 17-12月-80 426.320252 420.213147
ALLEN 20-2月 -81 424.153585 418.116373
WARD 22-2月 -81 424.086919 418.051857
SQL> next_day应用:每个星期一自动备份表中的数据
SQL> 1. 分布式数据库
SQL> 2. 触发器、快照、可传输的表空间
SQL> 1. 分布式数据库
SQL> 2. 触发器、快照、可传输的表空间
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI
----------------------------------
2015-12-23 14:54:53今天是星期三
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI
----------------------------------
2015-12-23 14:54:53今天是星期三
SQL> --查询员工薪水:两位小数,千位符,本地货币代码
SQL> select to_char(sal,'L9,999.99') from emp;
TO_CHAR(SAL,'L9,999
-------------------
¥800.00
¥1,600.00
SQL> select to_char(sal,'L9,999.99') from emp;
TO_CHAR(SAL,'L9,999
-------------------
¥800.00
¥1,600.00
SQL> --通用函数
SQL> --nvl2(a,b,c) 当a=null的时候,返回c;否则返回b
SQL> select sal*12 + nvl2(comm,comm,0) from emp;
SQL> --nvl2(a,b,c) 当a=null的时候,返回c;否则返回b
SQL> select sal*12 + nvl2(comm,comm,0) from emp;
日期可以相减但不可以相加
SQL> select sysdate+hiredate from emp;
select sysdate+hiredate from emp
*
第 1 行出现错误:
ORA-00975: 不允许日期 + 日期
select sysdate+hiredate from emp
*
第 1 行出现错误:
ORA-00975: 不允许日期 + 日期
条件表达式:
SQL> select ename,job,sal 涨前,
2 case job when 'PRESIDENT' then sal+1000
3 when 'MANAGER' then sal+800
4 else sal+400
5 end 涨后
6 from emp;
2 case job when 'PRESIDENT' then sal+1000
3 when 'MANAGER' then sal+800
4 else sal+400
5 end 涨后
6 from emp;
SQL> select ename,job,sal 涨前,
2 decode(job,'PRESIDENT',sal+1000,
3 'MANAGER',sal+800,
4 sal+400) 涨后
5 from emp;
2 decode(job,'PRESIDENT',sal+1000,
3 'MANAGER',sal+800,
4 sal+400) 涨后
5 from emp;