查询:
1.Select * 尽量不要使用,这样会影响效率。所要要什么查什么。
2.去除重复行:select distinct 列 from 表;
3.nvl 函数判断是否为null :表达式nvl(列名,0) 当列名为空时,用0代替。
4.分页查询:select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rn>5;
5.
%表示任意多个任意字符
SQL> select * from emp where ename like 'S%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
Executed in 0 seconds
_表示一个任意字符
SQL> select * from emp where ename like '__O%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
Executed in 0 seconds
6. In 表示 在这个集合中的select * from emp where empno in (7844);
7.别名order 排序:select ename,(sal+nvl(comm,0))*13 as "年薪" from emp order by "年薪" desc;
8. 分组查询group by 。分组必须显示出来。
SQL> select avg(sal),max(sal),deptno from emp group by deptno;