1.去重查询,和mysql的一样 select distinct job from emp; select distinct job, deptno from emp; --去除job相等且deptno相等的结果
2.查询员工年薪 select ename 姓名, sal 月薪, sal*12 年薪 from emp;
3.字符串拼接 select ‘姓名’ || ename from emp; --Oracle特有的拼接方式 select concat('姓名', ename) from emp; --Mysql和Oracle都可以使用
4.查询能得到奖金的员工信息 select * from emp where comm is not null;
5.查询工资在1500~3000之间的员工信息 select * from emp where sal between 1500 and 3000;
6.查询姓名在某个范围类的员工信息 select * from emp where ename in ('WARD','SCOTT','KING');
7.查询姓名的第三个字母为o的员工信息 select * from emp where ename like '__0%';
8.查询部门编号和工资,按照编号升序,工资降序排列 select deptno, sal from emp order by deptno asc, sal desc;
1.查询工资和 select sum(sal) from emp;
2.查询平均工资 select avg(sal) from emp;
3.数值函数向上取整、向下取整和四舍五入、截断 select ceil(45.887) from dual; --向上取整 46 select floor(45.887) from dual; --向下取整 45 select round(45.826, 2) from dual; --45.83 --四舍五入 参数2 为保留小数位 select round(45.826, 1) from dual; --45.8 select round(45.826, 0) from dual; --46 select round(45.826, -1) from dual; --50 select round(45.826, -2) from dual; --0 select trunc(45.826, 2) from dual; --45.82 --截断 select trunc(45.826, 1) from dual; --45.8 select trunc(45.826, 0) from dual; --45 select trunc(45.826, -1) from dual; --40 select trunc(45.826, -2) from dual; --0
4.字符串的截取 select substr('hello_world', 3, 4) --表示从第3个字母开始截取4个字母 llo_
5.日期函数 select sysdate from dual; --当前时间 select months_between(sysdate, hiredate) from emp; --查询员工入职到现在的月数
6.转换函数 字符转数值 to_number(str) select to_number('123') from dual; 日期转字符串 to_char select to_char(hiredate, 'yyyy-mm-dd hh:mi:ss') from emp; select to_char(sysdate, 'd') from dual; --一周的第几天 select to_char(sysdate, 'dd') from dual; --一个月的第几天 select to_char(sysdate, 'ddd') from dual; --一年的第几天 字符串转日期 --to_date select * from emp where hiredate between to_date(1981, 'yyyy') and to_date(1986, 'yyyy'); --查询在1981~1986年之间入职的员工信息
7.通用函数,nvl、nvl2、nullif nvl(arg1, arg2) --如果arg1=null,返回arg2 nvl2(arg1, arg2, arg3) -- 如果arg1=null,返回arg3,否则返回arg2 nullif(arg1, arg2) -- 如果arg1==arg2,返回null,否则返回arg1 select nvl2(comm, 1, 0) from emp --查询员工是否有奖金
8.条件表达式 select --这种方法在Oracle和Mysql都适用 case deptno when 10 then '10号部门' when 20 then '20号部门' when 30 then '30号部门’ end from emp; select decode(deptno,10, '10号部门', 20, '20号部门', 30, '30号部门','其他部门') from emp; --Oracle特有的写法
1.查询工资大于12000的员工姓名和工资 select first_name,salary from employees where salary > 12000;
2.查询员工号为176的员工的姓名和部门号 select first_name, department_id from employees where employee_id=176;
3.选择工资不在5000到12000的员工的姓名和工资 select frist_name,salary from employees where salary not between 5000 and 12000;
4.选择雇用时间在1998-02-01到1998-05-01之间的员工姓名,job_id和雇用时间 select first_name, job_id, hire_date from employees where hire_date between to_date('1998-02-01', 'yyyy-mm--dd') and to_date('1998-05-01', 'yyyy-mm-dd');
5.选择在20或50号部门工作的员工姓名和部门号 select first_name, department_id from employees where department_id=20 or department_id=50;
6.选择在1994年雇用的员工的姓名和雇用时间 select first_name, hire_date from employees where to_char(hire_date, 'yyyy') = '1994';
7.选择公司中没有管理者的员工姓名及job_id select first_name, job_id from employees where manager_id is null;
8.选择公司中有奖金的员工姓名,工资和奖金级别 select first_name, salary, commission_pct from employees where commission_pct is not null
9.选择员工姓名的第三个字母是a的员工姓名 select first_name from employees where first_name like '__a%';
10.选择姓名中有字母a和e的员工姓名 select first_name from employees where first_name like '%a%' and first_name like '%e%';
11.显示系统时间 select sysdate from dual;
12.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new?salary) select employee_id, first_name, salary, salary+salary*0.2 "new salary" from employees;
13.将员工的姓名按首字母排序,并写出姓名的长度(length) select first_name, length(first_name) from employees order by first_name;
14.查询各员工的姓名,并显示出各员工在公司工作的月份数 select first_name, months_between(sysdate,hire_date) from employees;
15.查询员工的姓名,以及在公司工作的月份数(worked_month),并按月份数降序排列 select first_name, months_between(sysdate, hire_date) "worked_months" from employees order by months_between(sysdate, hiredate) desc;
转载于:https://www.cnblogs.com/zy-Luo/p/11520021.html