Oracle查询

NVL()

查询员工的编号,姓名,入职时间,月薪,年薪,年收入(年薪+奖金)

select empno "编号",ename "姓名",hiredate "入职时间",sal "月薪",sal*12 "年薪",sal*12+comm "年收入" from emp;
如果结果为null,在sqlplus客户端工具中,是不显示null这个值的,解决null的问题,使用NVL()函数,NVL(a,b):

如果a是NULL,用b替代;如果a是非NULL,就不用b替代,直接返回a的值。

select empno "编号",ename "姓名",hiredate "入职时间",sal "月薪",sal*12 "年薪",sal*12+NVL(comm,0) "年收入" from emp;
注意:null与具体数字运算时,结果为null

列别名

使用列别名,查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金),AS大小写都可且可以省略AS,别名用双引号

select empno AS "编号",ename as "姓名",sal "月薪" from emp;

select empno AS 编号,ename as 姓名,sal 月薪 from emp;
区别:

不加双引号的别名不能有空格,加了双引号的别名可以有空格

select empno AS "编号",ename as 姓名,sal "月 薪" from emp;
要加只能加双引号,不能加单引号,因为在oracle中单引号表示字符串类型或者是日期类型

连接符||

使用dual哑表或者伪表,使用字符串连接符号||,输出"hello world",在oracle中from是必须写的

select 'hello' || ' world' "结果" from dual;
使用字符串连接符号||,显示如下格式信息:****的薪水是****美元

select ename || '的薪水是' || sal || '美元' from emp;

当前时间

使用sysdate,显示系统当前时间,在默认情况下,oracle只显示日期,而不显示时间,格式:26-4月-15

select sysdate from dual;

范围查询

查询薪水在1300到1600之间的员工,包括1300和1600

select * from emp where (sal>=1300) and (sal<=1600);

select * from emp where sal between 1300 and 1600;
查询薪水不在1300到1600之间的员工,不包括1300和1600

select * from emp where sal not between 1300 and 1600;
查询入职时间在"1981-2月-20"到"1982-1月-23"之间的员工

select * from emp where hiredate between '20-2月-81' and '23-1月-82';
注意:

1)对于数值型,小数值在前,大数值在后

2)对于日期型,年长值在前,年小值在后

escape转义处理

插入一条姓名为'T_IM'的员工,薪水1200

insert into emp(empno,ename) values(1111,'T_IM');
查询员工姓名中含有'_'的员工,使用\转义符,让其后的字符回归本来意思【like '%\_%' escape '\'】

select * from emp where ename like '%\_%' escape '\';
插入一个姓名叫'的员工

insert into emp(empno,ename) values(2222,'''');
插入一个姓名叫''的员工

insert into emp(empno,ename) values(2222,'''''');

is null和is not null

查询佣金为null的员工

select * from emp where comm is null;
注意:

null不能参与=运算

null能参与number/date/varchar2类型运算

查询佣金为非null的员工

select * from emp where comm is not null;

in

查询工资是1500或3000或5000的员工

select * from emp where sal in (1500,3000,5000);
in查询后根据查询条件排序

select * from emp where sal in (1500,3000,5000) order by decode(sal,1500,1,3000,2,5000,3);
 
select * from 表名 where 字段名 in (字段值1,字段值2...) order by decode(字段名,字段值1,1,字段值2,2,...);

不等于

查询工资不等于1500的员工(!=或<>)

select * from emp where sal <> 1500;
查询职位是"MANAGER"或职位不是"ANALYST"的员工(方式一,使用!=或<>)

select * from emp where (job='MANAGER') or (job<>'ANALYST');
查询职位是"MANAGER"或职位不是"ANALYST"的员工(方式二,使用not)

select * from emp where (job='MANAGER') or (not(job='ANALYST'));

order by

order by后面可以跟列名、别名、表达式、列号(从1开始,在select子句中的列号)

列名:

select empno,ename,sal,hiredate,sal*12 "年薪" from emp order by hiredate desc;
别名:

select empno,ename,sal,hiredate,sal*12 "年薪" from emp order by "年薪" desc;
表达式:

select empno,ename,sal,hiredate,sal*12 "年薪" from emp order by sal*12 desc;
列号,从1开始:

select empno,ename,sal,hiredate,sal*12 "年薪" from emp order by 5 desc;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle查询练习考试是一种用于测试学生对Oracle数据库查询语言的掌握程度的考试。该考试通常包含一系列的问题和练习题,要求学生使用SQL语言来查询数据库中的数据。 在考试中,学生需要根据提供的数据库模式和题目的要求,编写查询语句来获取相应的数据结果。这些查询语句可能包括基本的SELECT语句,也可能涉及到联接查询、聚合函数、子查询等复杂操作。 考试的题目通常会设计一些真实场景的查询需求,学生需要通过理解问题背景和数据模式,分析题目要求,并运用自己对Oracle查询语言的知识,来编写相应的查询语句。 完成这样的考试对学生来说具有一定的挑战性和难度。学生需要熟悉Oracle数据库查询语言的基本语法和函数,同时还需要理解数据库的结构和关系模式,以及如何运用查询语言来处理和获取数据。 通过Oracle查询练习考试,学生能够加深对Oracle数据库查询语言的理解和实践,提高自己的数据库查询能力和技巧。同时,这样的考试也有助于学生发现自己在查询过程中存在的问题和不足,从而提升自己的学习和进步空间。 总之,通过Oracle查询练习考试,学生可以提高自己在Oracle数据库查询方面的能力和熟练度,为将来的工作和学习打下坚实的基础。同时,这样的考试也能够通过实践和挑战,完善和提升学生的知识,促进他们在数据库领域的专业发展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值