show user
desc 'table'
SELECT DISTINCT
SELECT * FROM emp WHERE comm is NOT NULL;
SELECT * FROM emp WHERE NOT (sal > 1500 AND comm is NOT NULL);
NOT IN
LIKE %通配符
<> 或者 !=
ASC 升序, DESC 降序
GROUP BY
数据库系统中,每个数据库之间区别最大的就是在函数的支持上。
UPPER | LOWER
INITCAP
CONCAT 不如 || 好用
SUBSTR()
LENGTH()
substr('text',1,3)
oracle中字符串截取从0和从1开始是一样的
截取倒数的方法:
substr('text',length('text')-2)
or substr('text',-3,3)
<b>数值函数:</b>
round()
trunc()
mod()
<b>日期函数:</b>
当前日期:
select sysdate from dual;
months_between() 求出给定日期范围的月数
add_months()
next_day()
last_day()
to_char()
to_number()
to_date() to_date('2011-7-11','yyyy-mm-dd')
通用函数 :
nvl:
nvl(comm,0) 将null值转换为具体内容
decode(): 类似 if...elseif...else
例:
select empno,ename,hiredate DECODE(job,'CLERK','业务员','SALESMAN') 职位 FROM emp;
多表查询起别名
表的自关联
左连接右连接(+在等号左边表示右连接)
cross join
使用using子句直接关联操作列
select * from emp join dept using(deptno) where depteno = 30;
组函数及分组统计:
count()
max()
min()
avg()
sum()
where子句中不能出现分组函数的条件,要使用having子句,having子句不能使用别名
select job,sum(sal) totalsal
FROM emp
WHERE job<>'SALESMAN'
GORUP BY job
HAVING SUM(sal)>5000
ORDER BY totalsal;
rownum, union, intersect, minus
.
source:
http://wenku.baidu.com/link?url=rW-bT6ghz-Uw-tF8nL4fMGlKIbqQSXcDHjCgKkdvipi2pEiuMsYIG6pphVDrEyJGKOwB-QKiDm5oNhDbuF8HskCHMA3ku32-w_zhICfrZu3