oracle ogc y,Oracle单表查询(一)

1.1获取表中所有的行与列

若领导要看所有员工的信息,大家应该都会用,直接select * 就可以了。

fdf9936bc14ed0fd63720336d2cab6f5.png

1.2从表中检索出部分行

例如我们只想看job是‘salesman’的员工,则增加判断条件 where job='SALESMAN'(此处必须是大写,oracle的关键字、表名、用户名、密码是不区分大小写的,但是此处是具体的字段值,区分大小写~!),为了方便大小写的两种情况都附上

22f16143144e44a0794ab48fdf7d2250.png

a5c7491718ca891f8ce5bf6691554819.png

1.3查找空值

oracle中查找某一列为空的方法是用 ‘is null’,而非'= null',例如我们要查询没有提成的员工信息

1f5c1e3e0b38a2d5558490ae687eb880.png

null不支持加减乘除以及大小比较、相等比较,否则只能返回空

1.4将空置转换为实际的值

比如我们要查询所有的员工姓名以及他们的提成,并把提成为空的置为0,在这里有两种写法,第一种是使用nvl

select ename,nvl(comm) from EMP;

497a3f15458fae8f7e267af6e909a72f.png

第二种是使用coalesce

6993f9722ce31fc9ee9041e6f7c0cd7c.png

相对于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;

a89203cb6f855ed652b7612ba1320e26.png

这时我们去查询,每一行不为空的第一个元素,直接

SELECT coalesce(C1,C2,C3,C4,C5,C6)FROM v;

12837876daf6645b94ba8da8cddf7735.png

如果要用nvl完成这个功能(嵌套好多层)

SELECT nvl(nvl( nvl( nvl(nvl(c1,c2),c3),c4),c5),c6) as 第一个不为空的 from v;

51d47cca213032f5b98712770859f277.png

1.5查询满足多个条件的行

查询部门10中所有没有提成的员工

SELECT * FROM EMP WHERE DEPTNO=10 AND comm is null

9634c59b1cd40c693e356ee92ef47230.png

查询部门20中工资不超过2000的员工

SELECT * from EMP WHERE DEPTNO=20 AND SAL<=2000

fc148d6811fa2a9f5f995e98ece7968a.png

只需要用‘and’ 拼接where的条件就可以了

1.6从表中检索部分列

之前查询的列都是直接  * 全出查出,这样会导致效率低下,一般我们需要什么字段就去查什么字段,例如我们想查看部门20的员工编号、姓名、上级编号

select EMPNO,ENAME,MGR FROM EMP WHERE DEPTNO=20;

985e1b7f1101af2fae509759fea90207.png

1.7给列取别名

在1.6的查询中,我们想把EMPNO显示为‘编号’,ENAME显示为‘姓名’,‘MGR’显示为上级,则需要使用AS

select EMPNO as 编号,ENAME as 姓名,MGR as 上级 FROM EMP WHERE DEPTNO=20;

bf675a367cfa7ffe63c966834904c45d.png

其实as是可以省略的

select EMPNO 编号,ENAME 姓名,MGR 上级 FROM EMP WHERE DEPTNO=20;

5275ecf3094e494eb11c1734ae9c0bfb.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值