oracle sql中查询语句where中字段不为空用if怎么写_Oracle XE中的查询功能

Oracle数据库是java程序员必修的一门课,刚入门的小白一开始无法驾驭的了Oracle,所以推荐先从Oracle XE(简易版)开始练习。首先要了解Oracle XE里面的三张表格,dept部门表、emp雇员信息表以及salgrade工资等级表。如下图

dept 部门表

6f1edb23b217f7b137bfa5fbddafd1d6.png

emp 雇员信息表

2ec2574963536a815074b5120c226ec0.png

salgrade 工资等级表

b85bcada824e8f3cbef595b031391a1c.png

这三张表格是基础,后面的很多表格可以说是这三张的衍生物。今天就简单看一下select查询功能。在SQL语句中,是不区分大小写的,可以根据自己的习惯写小写或者是大写,但是要注意,要么全部小写,要么全部大写。select ename from emp; 这种全部小写是正确的,SELECT ENAME FROM EMP;这种全部大写也是可以的,切记不要大小写混搭。SELECT ENAME from EMP; 这种就是错误的。这里推荐大家小写。首先要了解语法规则

--select是查询功能   ename是表中字段名 from是来自的意思,后面+表名字 emp就是表名
select ename from emp; 
--这行代码的意思就是查询所有员工的名字
--如果嫌ename不是很直观,可以给这个字段起个别名,只需要再ename后面+空格+名字即可,不需要
--加" "或者' ' ,如果你想在员工姓名中间添加空格或者别的符号 ,就需要写成"员 工¥姓 名",
--不能直接写员 工¥姓 名," "的作用是原样输出
select ename 员工姓名 from emp; 
--譬如想查询多个字段名,中间需要用逗号,隔开
select empno, ename, sal from emp;
--查询所有员工的编号,名字,薪资
--如果想查找表格中所有的内容,可以使用*, 也可以把全部的字段名打出来,*属于模糊查找,
--效率较低,在表格内容少的时候推荐使用全部字段名。
--查询所有部门的部门信息
select * from emp;

--在以后可能会出现这种情况,两条信息相同,这时候就需要使用distinct来去重
--这样的话会输出所有部门编号,会重复出现,如果在deptno前面加上distinct
select deptno from emp;
--这样有几个部门就会输出几个,达到了去重的效果
select distinct deptno from emp;

--如果想在表格中指定查找某些字。可以使用字符串 字符串需要用' '包裹
--在emp表格中查找' 张三',这个张三可能是名字,也可能是部门,只要表格中出现就可以找到
select '张三'  from emp;

--字符串也可以拼接,比如想在每个员工的名字前加上XXX公司,使用||拼接
select 'XXX公司'||ename 员工姓名 from emp; 
--这样就可以达到添加字符串的功能了

以上是最基础的查询功能,还可以用select查询每个员工的年工资,这里先不计算奖励。怎么查呢

--可以直接在sal(工资)后面*12, 即可
select ename,sal*12 from emp;
--说到这里,select还可以当计算器使用,可以直接得到结果,这也算一个小黑科技 
select distinct 123*456*789 from emp;
--那么,查询所有员工的名字,工种,年薪(带12月奖金的) 该怎么写代码呢,有人会说像下面代码一样
select ename,sal*12+comm 年薪 from emp;
--对,是这样,但是有的人是没有奖金的,没有奖金就是null空值,这里到提一下null值和数字运算
--还是null,所以没有奖金的那些人的年薪是空的,是null。这里就要进入一个内置函数nvl,它是
--专门用来处理null值的,格式是nvl (参数1,参数2)。翻译过来就是如果参数1为null,函数最终的
--结果为参数2 ,如果参数1不为null,结果还是参数1,这里可以写成
select ename,sal*12+nvl(comm,0) from emp;
--先把没有奖金的人,也就是奖金为null值的给改成0,再参与运算,这样就可以得到每个人的年薪

当然,查询功能不仅仅这么简单,还可以添加过滤(筛选)条件,类似于java中的if判断语句,这里使用的是where,where紧跟在表格后面。那么相应的比较条件= 、>、 <、 >=、 <=、 !=、 <>(这个是不等于的意思,既不大于也不小于),也有且 或 非and、 or、 not


未完待续,持续更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值