select * from employees;
select first_name, last_name, hire_date from employees
where hire_date = '03/06/17';
-- where
-- job_id = 'IT_PROG'
select employee_id, job_id from employees where job_id = 'IT_PROG';
select * from employees where department_id = 90;
select * from employees where salary >= 12000;
select * from employees where hire_date = '04/10/01'; -- 날짜
select * from employees where hire_date >= '04/10/01'; -- 날짜 부등호 가능
select * from employees where department_id <> 90;
-- between ~ and ~
select * from employees where salary between 15000 and 20000;
-- 입사년도 03
select * from employees where hire_date between '03/01/01' and '03/12/31';
-- in
select * from employees where manager_id in (101, 102, 103, 104);
select first_name, last_name, job_id, department_id from employees where job_id in('IT_PROG', 'FI_MGR', 'AD_VP');
-- like (검색에 활용)
select * from employees where job_id like 'IT%';
select * from employees where job_id like '%PROG';
select * from employees where job_id like '%IT%'; -- IT가 포함된
select * from employees where hire_date like '03%'; -- 03년도로 시작하는
select * from employees where hire_date like '%15'; -- 15일로 끝나는
select * from employees where hire_date like '___05%'; -- 05월로 시작하는 (언더바는 위치)
-- null 데이터 조회
select * from employees where commission_pct = null; -- 조회가 안 됨
select * from employees where commission_pct is null; -- null인 데이터
select * from employees where commission_pct is not null; -- null이 아닌 데이터
-- end, or
select * from employees where job_id = 'IT_PROG' or salary >= 5000;
-- select * from employees where job_id = 'IT_PROG' and salary >= 5000
-- and가 of보다 우선순위
select * from employees where job_id = 'IT_PROG' or job_id = 'FI_MGR' and salary >= 6000;
select * from employees where (job_id = 'IT_PROG' or job_id = 'FI_MGR') and salary >= 6000;
-- 데이터 정렬 (구문의 마지막)
select * from employees order by hire_date asc;
select * from employees order by hire_date desc;
-- job_id = it_prog인 사람들 first_name 기준으로 이름 desc
select * from employees where job_id = 'IT_PROG' order by first_name desc;
-- manager_id가 120 이상인 사람들 중 salary 내림차순
select * from employees where manager_id >= 120 order by salary desc;
-- 여러 컬럼 정렬
select * from employees order by department_id desc, manager_id asc;
-- 엘리어스명 으로 정렬 (안되도 크게 상관X)
select employee_id, salary * 12 as 연봉 from employees order by 연봉 desc;
데이터 정렬
원하는 데이터 검색하고 정렬
SELECT 문장의 가장 뒤 ORDER BY 절
질의에 의해 검색되는 행을 정렬
ASC: 오름차순, 기본값 DESC: 내림차순
ORDER BY 절에 열 별칭을 사용 가능
SQL> SELECT first_name , salary*12 AS annsal FROM employees ORDER BY annsal;
-- 문제
-- 1. 모든 사원의 사원번호 , 이름 , 입사일 , 급여를 출력하세요
select employee_id, first_name, last_name, hire_date, salary from employees ;
-- 2. 모든 사원의 이름과 성을 붙여 출력하세요 . 열 별칭은 name 으로 하세요
select first_name || ' ' || last_name as name from employees;
-- 3. 50 번 부서 사원의 모든 정보를 출력하세요
select * from employees where department_id = 50;
-- 4. 50 번 부서 사원의 이름 , 부서번호 , 직무아이디를 출력하세요
select first_name, last_name, department_id, job_id from employees where department_id = 50;
-- 5. 모든 사원의 이름 , 급여 그리고 300 달러 인상된 급여를 출력하세요
select first_name, last_name, salary, salary + 300 as 인상된급여 from employees;
-- 6. 급여가 10000 보다 큰 사원의 이름과 급여를 출력하세요
select first_name, last_name, salary from employees where salary > 10000;
-- 7. 보너스를 받는 사원의 이름과 직무 , 보너스율을 출력하세요
select first_name, last_name,job_id, commission_pct from employees where commission_pct is not null;
-- 8. 2003 년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요 .(BETWEEN 연산자 사용)
select first_name, last_name, hire_date, salary from employees where hire_date between '03/01/01' and '03/12/31';
-- 9. 2003 년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요 .(LIKE 연산자 사용)
select first_name, last_name, hire_date, salary from employees where hire_date like '03%';
-- 10. 모든 사원의 이름과 급여를 급여가 많은 사원부터 적은 사원순서로 출력하세요
select first_name, last_name, salary from employees order by salary desc;
-- 11. 위 질의를 60 번 부서의 사원에 대해서만 질의하세요 . 컬럼 : department_id
select first_name, last_name, salary from employees where department_id = 60 order by salary desc;
-- 12. 직무아이디가 IT_PROG 이거나 , SA_MAN 인 사원의 이름과 직무아이디를 출력하세요
select first_name, last_name, job_id from employees where job_id = 'IT_PROG' or job_id = 'SA_MAN'; -- or 사용
select first_name, last_name, job_id from employees where job_id in ('IT_PROG', 'SA_MAN'); -- in 사용
-- 13. Steven King 사원의 정보를 “Steven King 사원의 급여는 24000 달러 입니다 ” 형식으로 출력하세요
select first_name || ' ' || last_name || ' 사원의 급여는 ' || salary || ' 달러 입니다' as info -- as info 사용
from employees
where first_name = 'Steven' and last_name = 'King';
-- 14. 매니저 ( 직무에 해당하는 사원의 이름과 직무아이디를 출력하세요 . 컬럼 job_id
select first_name, last_name, job_id from employees where manager_id is not null; -- 틀림
select first_name, last_name, job_id from employees where job_id like '%MAN';
-- 15. 매니저 ( 직무에 해당하는 사원의 이름과 직무아이디를 직무아이디 순서대로 출력하세요
select first_name, last_name, job_id from employees where manager_id is not null order by job_id asc; -- 틀림
select first_name, last_name, job_id from employees where job_id like '%MAN' order by job_id asc;