Oracle过滤和排序

Posted 学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle过滤和排序相关的知识,希望对你有一定的参考价值。

 
 1 SQL> --字符串大小写敏感
 2 SQL> --查询名叫KING的员工
 3 SQL> select *
 4   2  from emp
 5   3  where ename =‘KING‘;
 6  
 7 SQL> --日期格式敏感
 8 SQL> --查询入职日期是17-11月-81的员工
 9 SQL> select *
10   2  from emp
11   3  where hiredate=‘17-11月-81‘;
 1  
 2 查询的过程中,要使用符合数据库存储的日期格式,不符合会报出错误
 3 SQL> --查看数据格式
 4 SQL> select * from v$nls_parameters;
 5 SQL> --修改日期格式
 6 SQL> alter session set NLS_DATE_FORMAT=‘yyyy-mm-dd‘;
 7 测试新格式可用
 8 SQL> select *
 9   2  from emp
10   3  where hiredate=‘1981-11-17‘;
11 另一种格式:之前的格式
12 SQL> alter session set NLS_DATE_FORMAT=‘DD-MON-RR‘;
1  
2 SQL> --between  and 在。。。。之间
3 SQL> --查询薪水1000~2000之间的员工
4 SQL> select *
5   2  from emp
6   3  where sal between 1000 and 20
7 SQL>  --between  and: 1. 含有边界  2. 小值在前 大值在后;
8 前后的大小值不能调换顺序
 1 SQL> --in 在。。。之中
 2 SQL> --查询部门号是10和20的员工
 3 SQL> select *
 4   2  from emp
 5   3  where deptno in (10,20);
 6 SQL> --查询部门号不是10和20的员工
 7 SQL> ed
 8 已写入 file afiedt.buf
 9   1  select *
10   2  from emp
11   3* where deptno not in (10,20)
 1 SQL> --null值 3. 如果集合中含有null,不能使用not in;但可以使用in
 2 SQL> select *
 3   2  from emp
 4   3* where deptno not in (10,20,null)
 5 SQL> /
 6  
 7 未选定行
 8  
 9 SQL>select *
10   2  from emp
11   3* where deptno in (10,20,null)
 
关于not in和null的关系,这篇博客进行了详细的介绍:
 
 1 SQL> --模糊查询 %代表任意个任意字符,_代表一个任意字符
 2 SQL> --查询名字以S打头的员工
 3 SQL> select *
 4   2  from emp
 5   3  where ename like ‘S%‘;
 6 SQL> --查询名字是4个字的员工
 7 SQL>select *
 8   2  from emp
 9   3* where ename like ‘____‘
10 SQL> --转意字符 ,用escape关键字表示此符号后面的字符为转义字符,\处使用的符号可以自定义
11 SQL>select *
12   2  from emp
13   3* where ename like ‘%\_%‘ escape ‘\‘
14 SQL> rollback;如果对表进行了修改操作,可以使用此进行回滚。
 1 SQL> --order by后面 + 列、表达式、别名、序号 ,默认是升序排列,desc是降序
 2 SQL> select empno,ename,sal,sal*12
 3   2  from emp
 4   3  order by sal*12 desc;
 5 也可以使用别名
 6 SQL>select empno,ename,sal,sal*12 年薪
 7   2  from emp
 8   3* order by 年薪 desc
 9 order中的列名可以用序号代替,但是必须是存在的
10 SQL>select empno,ename,sal,sal*12 年薪
11   2  from emp
12   3* order by 4 desc
13 SQL> --order by作用于后面所有的列;desc只作用于离他最近的列
14 null值得默认为最大
15 SQL> --多个列排序
16 SQL> select *
17   2  from emp
18   3  order by deptno,sal;意思是:如果部门号相同,那么把部门号相同的部分按照工资排序
19 SQL>select *
20   2  from emp
21   3* order by deptno,sal desc;只按照工资进行排序,desc只能作用于工资
22 SQL>select *
23   2  from emp
24   3* order by deptno desc,sal desc;意思是:按照两个列进行排序,分别添加desc
25  
26 SQL>select *
27   2  from emp
28   3  order by comm desc
29   4  nulls last将null设置为显示在最后
拓展:
设置单页显示的行数
SQL> set pagesize 14

以上是关于Oracle过滤和排序的主要内容,如果未能解决你的问题,请参考以下文章

Oracle系列三 过滤和排序

Oracle过滤和排序

过滤和排序数据-oracle

中继片段变量

sql Oracle代码片段

如何在 Toad for Oracle 中使用自定义代码片段?