Oracle基础学习之空值排序

新建表:

 1 -- Create table
 2 create table EMP
 3 (
 4   empno    NUMBER(4),
 5   ename    VARCHAR2(10),
 6   job      VARCHAR2(9),
 7   mgr      NUMBER(4),
 8   hiredate DATE,
 9   sal      NUMBER(7,2),
10   comm     NUMBER(7,2),
11   deptno   NUMBER(2)
12 )
13 tablespace USERS
14   pctfree 10
15   initrans 1
16   maxtrans 255
17   storage
18   (
19     initial 64K
20     next 1M
21     minextents 1
22     maxextents unlimited
23   );
24 -- Add comments to the columns
25 comment on column EMP.empno
26   is ‘编码‘;
27 comment on column EMP.ename
28   is ‘名称‘;
29 comment on column EMP.job
30   is ‘工作‘;
31 comment on column EMP.mgr
32   is ‘主管‘;
33 comment on column EMP.hiredate
34   is ‘聘用时间‘;
35 comment on column EMP.sal
36   is ‘工资‘;
37 comment on column EMP.comm
38   is ‘提成‘;
39 comment on column EMP.deptno
40   is ‘部门编码‘;

初始化数据:

 1 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
 2 values (7369, ‘SMITH‘, ‘CLERK‘, 7902, to_date(‘27-12-1980‘, ‘dd-mm-yyyy‘), 800.00, null, 20, 7369, ‘SMITH‘);
 3
 4 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
 5 values (7499, ‘ALLEN‘, ‘SALESMAN‘, 7698, to_date(‘20-02-1981‘, ‘dd-mm-yyyy‘), 1600.00, 300.00, 30, 7499, ‘SALESMAN‘);
 6
 7 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
 8 values (7521, ‘WARD‘, ‘SALESMAN‘, 7698, to_date(‘22-02-1981‘, ‘dd-mm-yyyy‘), 1250.00, 500.00, 30, 7521, ‘WARD‘);
 9
10 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
11 values (7566, ‘JONES‘, ‘MANAGER‘, 7839, to_date(‘02-04-1981‘, ‘dd-mm-yyyy‘), 2975.00, null, 20, 7566, ‘MANAGER‘);
12
13 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
14 values (7654, ‘MARTIN‘, ‘SALESMAN‘, 7698, to_date(‘28-09-1981‘, ‘dd-mm-yyyy‘), 1250.00, 1400.00, 30, 7654, ‘SALESMAN‘);
15
16 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
17 values (7698, ‘BLAKE‘, ‘MANAGER‘, 7839, to_date(‘01-05-1981‘, ‘dd-mm-yyyy‘), 2850.00, null, 30, 7698, ‘MANAGER‘);
18
19 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
20 values (7782, ‘CLARK‘, ‘MANAGER‘, 7839, to_date(‘09-06-1981‘, ‘dd-mm-yyyy‘), 2450.00, null, 10, 7782, ‘MANAGER‘);
21
22 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
23 values (7788, ‘SCOTT‘, ‘ANALYST‘, 7566, to_date(‘19-04-1987‘, ‘dd-mm-yyyy‘), 3000.00, null, 20, 7788, ‘SCOTT‘);
24
25 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
26 values (7839, ‘KING‘, ‘PERSIDENT‘, null, to_date(‘17-11-1981‘, ‘dd-mm-yyyy‘), 5000.00, null, 10, 7839, ‘PERSIDENT‘);
27
28 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
29 values (7844, ‘TURNER‘, ‘SALESMAN‘, 7698, to_date(‘28-09-1981‘, ‘dd-mm-yyyy‘), 1500.00, 0.00, 30, 7844, ‘TURNER‘);
30
31 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
32 values (7876, ‘ADAMS‘, ‘CLERK‘, 7788, to_date(‘23-05-1987‘, ‘dd-mm-yyyy‘), 1100.00, null, 20, 7876, ‘CLERK‘);
33
34 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
35 values (7900, ‘JAMES‘, ‘CLERK‘, 6798, to_date(‘03-12-1981‘, ‘dd-mm-yyyy‘), 950.00, null, 30, 7900, ‘JAMES‘);
36
37 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
38 values (7902, ‘FORD‘, ‘ANALYST‘, 7566, to_date(‘03-12-1981‘, ‘dd-mm-yyyy‘), 3000.00, null, 20, 7902, ‘FORD‘);
39
40 insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, GREATEST(T.SAL,T.EMPNO), GREATEST(T.ENAME,T.JOB))
41 values (7934, ‘MILLER‘, ‘CLERK‘, 7782, to_date(‘23-01-1982‘, ‘dd-mm-yyyy‘), 1300.00, null, 10, 7934, ‘MILLER‘);

示例一:

1 select t.empno, t.sal, comm, nvl(t.comm, -1) from emp t order by 4;

结果:

示例二:

1 select t.empno, t.sal, comm, nvl(t.comm, -1) from emp t order by 3 nulls first

结果:

结论:

  order by nulls first 表示空值在前

  order by nulls last 表示空值在后

原文地址:https://www.cnblogs.com/sxyu2018/p/9895374.html

时间: 2024-10-03 15:48:59

Oracle基础学习之空值排序的相关文章

Oracle基础学习3--Oracle创建用户并授权

Oracle服务器端的操作一般如下: 1)       安装Oracle服务器软件 2)       创建数据库(安装时自动创建) 3)       配置监听(安装时自动配置) 4)       启动Oracle实例 5)       创建用户表空间 6)       创建新用户并授权 下面就开始讲创建用户表空间.创建新用户并授权两项: 首先要用系统管理员登陆Oracle(sqlplus/as sysdba) ?  创建用户表空间(D盘根目录创建名为ts_zhangsan的表空间) create

Oracle基础学习1--Oracle安装

安装过程较简单,按着步骤走即可.这里需要提醒如果要使用PL/SQL来操作Oracle,那么最好安装32位Oracle程序.原因是网上说PL/SQL只对32位Oracle进行支持,如果用64为Oracle+PL/SQL协同工作,会出现许多问题,例如无法加载oci.dll等.自己当然也亲自经历过,64位的Oracle单独使用很好,但相应的PL/SQL Developer却较难配置. 安装过程需要注意两个地方: ?  全局数据库名: ?  系统用户的密码(一般默认即可) 如何验证安装成功?按着自己的经

Oracle基础学习5-- Oracle权限之”角色”

任何与权限相关的东西都少不了"角色"的概念,Java如此,.Net如此,Oracle当然也不例外. 角色其实就是权限的集合,将多个权限打包到一个角色中,这样每个角色有特定的权限.当需要给某个对象赋予某种权限时,就找到具有相应权限的角色,然后将它加到这个集合当中.下面就简单看看Oracle中角色的运用. 上篇文章讲到,为了给多用户授予各种权限,我们用到了"权限传递"来代替给用户们一个个授权,简化了授权过程.但这种方式较之用"角色"方式授权还是有很多

Oracle基础学习4--Oracle权限传递

下面将用一个实例来讲解: 首先用oracle系统用户(sysdba身份)连接到Oracle 然后创建两个用户"lisi"和"zhangsan" 然后为lisi授权,授创建表的权限 lisi连接到数据库,并创建一个表mytable 为zhangsan授予连接到数据库.创建表等权限,并连接到Oracle 我们要知道,lisi创建的表mytable的操作权限只有lisi(还有系统用户)自己拥有,其它用户(比如zhangsan)是不拥有权限的,下面我们以将lisi的表myt

oracle菜鸟学习之 分析函数-排序

oracle菜鸟学习之 分析函数-排序 排序函数 1.row_number:返回连续的排序,无论值是否相等2.rank:具有相等值得行排序相同,序数值随后跳跃3.dense_rank:具有相等值得行排序相同,序号是连续得 实验表 create table chengji(sno number,km varchar2(10),score number); insert into chengji values(1,'YW',60); insert into chengji values(1,'SX'

关于Oracle数据库中SQL空值排序的问题

在Oracle中进行查询排序时,如果排序字段里面有空值的情况下,排序结果可能会达不到自己想要的结果. 如 select * from tableTest order by VISITS desc 将原来的sql语句改写为:select * from tableTest order by VISITS desc nulls last,"nulls last"控制将空值记录放在后面,当然,你也可以用"nulls first"将控制记录放在前面. oracle 空值处理,

Oracle基础学习2--Oracle登录与三种验证机制

首先,Oracle安装完毕有三个默认用户 ?  Sys:数据库对象的拥有者.权限最高.password在安装的时候(口令管理)能够改变 ?  System:数据库管理员,password为manager ?  Scott:一个普通用户,password为tiger 再看连接Oracle的三种验证机制 ?  操作系统验证(具体解释见以下) ?  password文件验证 ?  数据库验证 注:前两者适用于系统用户,比方:Sys.System等:最后一个适用于普通用户.比方:Scott. 再看Ora

Oracle基础学习登陆SQLPLUS(一)

SQLPLUS是ORACLE公司开发的很简洁的管理工具,SQLPLUS是最好的,最核心的ORACLE管理工具.SQLPLUS简洁而高效,舍弃浮华,反璞归真.使用sqlplus,进入sqlplus并进行简单的操作目的是熟悉oracle的小工具sqlplus的使用. 通过系统用户登陆SQLPLUS: 系统用户: sys,system:权限最高,sys的高于system. sysman:用于操作企业管理器 scott:密码:tiger 1.如何进入SQLPLUS界面 进入DOS,然后键入如下命令 C:

oracle基础学习(1)

-解锁用户,需要使用dba权限conn sys/1234 as dba; alert user scott account unlock;/ --initcap方法,实现字符串首字符大写,其余字符小写,受空格,逗号等非字母符号限制 select initcap('hello word,da jia hao!') Hello from dual; --平均工资大于2000的分组select avg_sal,deptno from (select avg(sal) avg_sal,deptno fr