Database/Oracle

[Oracle] WHERE 절

21종 2023. 6. 28. 17:33

  <WHERE 절>

조회하고자 하는 테이블로부터 특정 조건에 만족하는 데이터만을 조회하고자 할 때 사용
이때 WHERE절에 조건식을 제시 하게 됨
조건식에서는 다양한 연산자를 사용 가능!
    
    [표현식]
    SELECT 컬럼1, 컬럼2, ...
    FROM 테이블명
    WHERE 조건식;
    
    [비교연산자]
    >, <, >=, <=    --> 대소비교
    =               --> 동등비교
    !=, ^=, <>      --> 동등하지 않은지 비교


EMPLOYEE 에서 부서코드가 "D9"인 사원들만 조회(이때, 모든 컬럼 조회)

SELECT *
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9';

 

EMPLOYEE에서 부서코드가 'D1'인 사원들의 사원명, 급여, 부서코드만 조회

SELECT EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE = 'D1';

 

EMPLOYEE에서 부서코드가 'D1'이 아닌 사원들의 사번, 사원명, 부서코드 조회

SELECT EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
--WHERE DEPT_CODE != 'D1';
--WHERE DEPT_CODE ^= 'D1';
WHERE DEPT_CODE <> 'D1';	-- 위에 셋다 됨

 

급여 400만원 이상인 사원들의 사원명, 부서코드, 급여 조회

SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE SALARY > 4000000;

 

EMPLOYEE에서 재직중(EMT_YN 컬럽값이 'N')인 사원들의 사번, 이름, 입사일

SELECT EMP_ID, EMP_NAME, HIRE_DATE
FROM EMPLOYEE
WHERE ENT_YN = 'N';


실습 문제

1. 급여가 300만원 이상인 사원들의 사원명, 급여, 입사일, 연봉(보너스 미포함) 조회

SELECT EMP_NAME, SALARY, HIRE_DATE, SALARY * 12
FROM EMPLOYEE
WHERE SALARY >= 3000000;

 

2. 연봉이 5000만원 이상인 사원들의 사원명, 급여, 연봉, 부서코드 조회

SELECT EMP_NAME, SALARY, SALARY * 12 || '원' AS "연봉(원)" , DEPT_CODE
FROM EMPLOYEE
WHERE SALARY * 12 >= 50000000;
--WHERE SALARY >= 3000000; 오류 !! (WHERE절 에서는 SELECT 절에 작성된 별칭 사용 불가!!)
-- 이유는 ORACLE의 쿼리실행 순서를 보면 알 수 있다.

-- 쿼리 실행 순서
-- FROM절 => WHERE절 => SELECT절

 

3. 직급코드 J3'이 아닌 사원들의 사번, 사원명, 직급코드, 퇴사여부 조회

SELECT EMP_ID, EMP_NAME, SAL_LEVEL, ENT_YN
FROM EMPLOYEE
WHERE JOB_CODE != 'J3';

 

4. 부서코드가 'D9' 이면서 급여가 500만원 이상인 사원들의 사번, 사원명, 급여, 부서코드 조회

SELECT EMP_ID, EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9' AND SALARY >= 5000000;

 

5. 부서코드가 'D6' 이거나 급여가 300만원 이상인 사원들의 사원명, 부서코드, 급여 조회

SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE = 'D6' OR SALARY >= 3000000;

 

6. 급여가 350만원 이상 600만원 이하를 받는 사원들의 사원명, 사번 급여 조회

SELECT EMP_NAME, EMP_ID, SALARY
FROM EMPLOYEE
--WHERE 3500000 <= SALARY <= 6000000; 오류발생 !! 자바랑 마찬가지임!
--WHERE 3500000 >= SALARY AND SALARY <= 6000000;
WHERE SALARY >= 3500000 AND SALARY <= 6000000;  -- 위에도 가능하지만 일반적으로는 이 순서로 !!