Oracle select 基础查询语句 day02

学习目标

** 查询中过滤行**
** 查询中对行进行排序**

select employee_id, last_name from employees;

-- 查询工号大于200的
select employee_id, last_name
from employees
where employee_id > 200;


-- 查询员工工资大于五千的员工姓名、工号和工资
select last_name, employee_id, salary
from employees
where salary > 5000;

select last_name, hire_date
from employees
where hire_date = '7-6月-1994';

select last_name, hire_date
from employees
where to_char(hire_date, 'yyyy-mm-dd') = '1994-06-07';

-- 其他值比较
-- 操作符
-- between ... and ... 再两个值之间(包含边界)
select last_name, hire_date, salary
from employees
where salary >= 4000 and salary <= 7000;

select last_name, hire_date, salary
from employees
where salary between 4000 and 300


-- in
select last_name, department_id, salary
from employees
where department_id = 90;

select last_name, department_id, salary
from employees
where department_id = 90 or department_id = 80 or department_id = 70;

select last_name, department_id, salary
from employees
where department_id in(70, 80, 90);

-- 模糊查询
-- 员工中字符含有a的
select last_name, department_id, salary
from employees
where last_name like '%a%';
-- 员工中字符末尾是含有a的
select last_name, department_id, salary
from employees
where last_name like '%a';
-- 员工中名字的第二位字符是a的 _是一个字符
select last_name, department_id, salary
from employees
where last_name like '_a%';
-- 员工名字中含有下划线的员工
-- 数据库中没有_的名字,所以修改了一个人的名字
update employees
set last_name = 'Wha_len'
where last_name = 'Whalen';
--查询 需要用到转义字符
select last_name, department_id, salary
from employees
where last_name like '%\_%' escape '\`'; --多加一个编译器有问题其实是不加的

--空值 is null
-- 查询公司员工的奖金率是否为空值
select last_name, department_id, salary, commission_pcy
from employees
where commission_pcy is null;
-- 查询公司员工的奖金率是非空值
select last_name, department_id, salary, commission_pcy
from employees
where commission_pcy is not null;

--排序 order by

--查询80号部门的工资,让工资从高往低排
select last_name, department_id, salary
from employees
where department_id = 80
order by salary desc;
--查询80号部门的工资,让工资从低往高排
select last_name, department_id, salary
from employees
where department_id = 80
order by salary asc;

--多层排序
-- 先按照工资来排序,在按照部门,最后按照姓名排序
select last_name, department_id, salary
from employees
order by salary asc, department_id asc, last_name asc;
--按照年工资来排序,可以使用别名
select last_name, department_id, salary, salary * 12 as "annual"
from employees
order by "annual" desc;

-- practise
--1.查询工资大于12000 的员工
select last_name
from employees
where salary > 12000;
--2.查询工号为176的员工的姓名和部门号
select last_name, department_id
from employees
where department_id = 176;
--3.选择工资不在5000 到12000的员工的姓名和工资
select last_name, salary
from employees
where salary not between 5000 and 12000;
--4.选择雇佣时间在1998-02-01 到1998-05-01之间的员工姓名,job_id 和雇佣时间
select last_name, job_id, hire_date
from employees
where to_char(hire_date, "yyyy-mm-dd") between  = '1998-05-10' and '1998-05-10';
--5.选择在20或50号部门工作的员工姓名和部门号
select last_name, department_id
from employees
where department_id = 20 or department_id = 50;
-- where department_id in (20, 50);
6.选择在1994年雇佣的员工姓名和雇佣时间
select last_name, department_id
from employees
where tochar(hire_date, 'yyyy') = '1994';
--where tochar(hire_date, 'yyyy-mm-dd') like '1994%';
-- where hire_date like '%94';
7.选择公司中没有管理者的员工姓名及job_id
select last_name, job_id
from employees
where manager_id = null;
8.选择公司中有奖金的员工姓名,工资和奖金级别
select last_name, salary, commission_pcy
from employees
where commission_pcy is not null;
9.选择员工姓名的第三个字母是a的员工姓名
select last_name
from employees
where last_name like '__a%';
10.选择姓名中有a和e的员工姓名
select last_name
from employees
where between last_name like '%a%e%' or last_name like '%e%a%';

猜你喜欢

转载自blog.csdn.net/god953/article/details/109324601