1.1获取表中所有的行与列
若领导要看所有员工的信息,大家应该都会用,直接select * 就可以了。
1.2从表中检索出部分行
例如我们只想看job是‘salesman’的员工,则增加判断条件 where job='SALESMAN'(此处必须是大写,oracle的关键字、表名、用户名、密码是不区分大小写的,但是此处是具体的字段值,区分大小写~!),为了方便大小写的两种情况都附上
1.3查找空值
oracle中查找某一列为空的方法是用 ‘is null’,而非'= null',例如我们要查询没有提成的员工信息
null不支持加减乘除以及大小比较、相等比较,否则只能返回空
1.4将空置转换为实际的值
比如我们要查询所有的员工姓名以及他们的提成,并把提成为空的置为0,在这里有两种写法,第一种是使用nvl
select ename,nvl(comm) from EMP;
第二种是使用coalesce
相对于nvl来说coalesce支持多个参数,可以直接返回第一个不为空的值,例如我们先创建一个视图(以后会介绍)
CREATE or REPLACE VIEW v as
(SELECT null as c1,null as c2, 1 as c3, null as c4,2 as c5, null as c6 FROM dual)
UNION ALL
(SELECT null as c1,null as c2,null as c3,3 as c4,null as c5,2 as c6 from dual);
select * from v;
这时我们去查询,每一行不为空的第一个元素,直接
SELECT coalesce(C1,C2,C3,C4,C5,C6)FROM v;
如果要用nvl完成这个功能(嵌套好多层)
SELECT nvl(nvl( nvl( nvl(nvl(c1,c2),c3),c4),c5),c6) as 第一个不为空的 from v;
1.5查询满足多个条件的行
查询部门10中所有没有提成的员工
SELECT * FROM EMP WHERE DEPTNO=10 AND comm is null
查询部门20中工资不超过2000的员工
SELECT * from EMP WHERE DEPTNO=20 AND SAL<=2000
只需要用‘and’ 拼接where的条件就可以了
1.6从表中检索部分列
之前查询的列都是直接 * 全出查出,这样会导致效率低下,一般我们需要什么字段就去查什么字段,例如我们想查看部门20的员工编号、姓名、上级编号
select EMPNO,ENAME,MGR FROM EMP WHERE DEPTNO=20;
1.7给列取别名
在1.6的查询中,我们想把EMPNO显示为‘编号’,ENAME显示为‘姓名’,‘MGR’显示为上级,则需要使用AS
select EMPNO as 编号,ENAME as 姓名,MGR as 上级 FROM EMP WHERE DEPTNO=20;
其实as是可以省略的
select EMPNO 编号,ENAME 姓名,MGR 上级 FROM EMP WHERE DEPTNO=20;