Oracle - WHERE(조건)

WHERE

검색할 컬럼의 조건을 설정하여 행 결정

 

WHERE 예제

 

부서 코드가 'D9'인 직원의 이름, 부서 코드 조회

SELECT 
       EMP_NAME
     , DEPT_CODE
  FROM EMPLOYEE
 WHERE DEPT_CODE = 'D9';

 

급여가 400만원 이상인 직원의 이름, 급여 조회

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

 

부서 코드가 'D9'가 아닌 사원의 사번, 이름, 부서 코드 조회

SELECT 
       EMP_ID
     , EMP_NAME
     , DEPT_CODE
  FROM EMPLOYEE
 /* WHERE DEPT_CODE != 'D9'; */
 /* WHERE DEPT_CODE ^= 'D9'; */
 WHERE DEPT_CODE <> 'D9'; --NOT연산자는 총 3개의 코드가존재함 편한거쓰면됨

 

퇴사 여부가 N인 직원을 조회하고 근무여부를 재직 중으로 표시하여 사번, 이름, 고용일, 근무 여부 조회

SELECT 
       EMP_ID
     , EMP_NAME
     , HIRE_DATE
     , '재직중' AS "근무여부"
  FROM EMPLOYEE
  WHERE ENT_YN = 'N';

 

테이블에서 SAL_LEVEL이 s1인 사원의 이름, 고용일, 연락처 조회

SELECT 
       EMP_NAME
     , HIRE_DATE
     , PHONE
     FROM EMPLOYEE
     WHERE SAL_LEVEL = 'S1';

 

 

논리(AND, OR) 연산

여러 개의 제한 조건 결과를 하나의 논리 결과로 만들어줌

부서 코드가  
   
   
   

 

 'D6'이거나 급여를 2백만 원보다 많이 받는 직원의 이름, 부서 코드, 급여 조회

SELECT
       EMP_NAME
     , DEPT_CODE
     , SALARY
     FROM EMPLOYEE
     WHERE DEPT_CODE = 'D6'
     AND SALARY > 2000000;

 

급여를 350만원 이상 600만 원 이하 받는 직원의 사번, 이름, 급여, 부서 코드, 직급 코드 조회

SELECT 
       EMP_ID
     , EMP_NAME
     , SALARY
     , DEPT_CODE
     , JOB_CODE
     FROM EMPLOYEE
     WHERE SALARY >= 3500000
     AND SALARY <= 6000000;

 

DEPT_CODE가 D9이거나 D5인 사원중
고용일이 00년 01월 01일보다 빠른 사원의 이름, 부서코드, 고용일 조회
DATE 리터럴의 경우 '00/01/01' 과 같이 표현 가능함

SELECT 
       EMP_NAME
     , DEPT_CODE
     , HIRE_DATE
     FROM EMPLOYEE
     WHERE HIRE_DATE < '00/01/01'
     AND (DEPT_CODE = 'D9'
     OR DEPT_CODE = 'D5');

 

 

BETWEEN AND

비교하려는 값이 지정한 범위에 포함되면 TRUE를 리턴하는 연산자로 상한 값과 하한 값의 경계도 포함됨

 

급여가 350만 이상, 600만 이하인 사원이름, 급여조회

SELECT
       EMP_NAME
     , SALARY
  FROM EMPLOYEE
 WHERE SALARY BETWEEN 3500000 AND 6000000;

 

반대로 급여가 350만 미만, 600만 초과인 사원이름, 급여조회

SELECT
       EMP_NAME
     , SALARY
  FROM EMPLOYEE
 WHERE SALARY NOT BETWEEN 3500000 AND 6000000;

 

고용일이 90/01/01 ~ 01/01/01인 사원의 전체내용 조회

SELECT
       *
  FROM EMPLOYEE
  WHERE HIRE_DATE BETWEEN '90/01/01' AND '01/01/01';

LIKE

비교하려는 값이 지정한 특정 패턴을 만족하면 TRUE를 리턴하는 연산자로 '%'와 '_'를 와일드카드로 사용

1. 문자 패턴

   - '글자%' : 글자로 시작하는 값

   - '%글자%' : 글자가 포함된 값

   - '%글자' : 글자로 끝나는 값

 

2. 문자 수

   - '_' : 한 글자

   - '__' : 두 글자

 

성이 전 씨인 사원의 사번, 이름, 고용일 조회

SELECT
       EMP_ID
     , EMP_NAME
     , HIRE_DATE
    FROM EMPLOYEE
    WHERE EMP_NAME LIKE '전%';

 

이름에 '하'가 포함된 사원의 이름, 주민번호, 부서 코드 조회

SELECT
       EMP_NAME
     , EMP_NO
     , DEPT_CODE
  FROM EMPLOYEE
 WHERE EMP_NAME LIKE '%하%';

 

이메일 중 _ 앞글자가 3자리인 이메일 주소를 가진 사원의 사번, 이름, 이메일 주소 조회

'ㅡ'를 데이터로 처리하기 위해서 escape option 사용 주의

SELECT 
       EMP_ID
     , EMP_NAME
     , EMAIL
    FROM EMPLOYEE
    WHERE EMAIL LIKE '___@_%' ESCAPE '@';

 

김 씨 성이 아닌 직원의 사번, 이름, 고용일 조회

SELECT 
       EMP_ID
     , EMP_NAME
     , HIRE_DATE
  FROM EMPLOYEE
  WHERE EMP_NAME NOT LIKE'김%';

 

 

IS NULL / IN NOT NULL

NULL 여부를 비교하는 연산자

 

보너스를 받지 않는 사원의 사번, 이름, 급여, 보너스 조회

SELECT
       EMP_ID
     , EMP_NAME
     , SALARY
     , BONUS
  FROM EMPLOYEE
 WHERE BONUS IS NULL;

 

보너스를 받는 사원의 사번, 이름, 급여, 보너스 조회

SELECT
       EMP_ID
     , EMP_NAME
     , SALARY
     , BONUS
  FROM EMPLOYEE
 WHERE BONUS IS NOT NULL;

 

IN

비교하려는 값 목록에 일치하는 값이 있으면 TRUE를 반환하는 연산자

 

 

비교하는 값 목록에 일치하는 값이 있으면 TRUE를 반환하는 연산자
D6, D8 부서원의 이름, 부서 코드, 급여 조회

SELECT
       EMP_NAME
     , DEPT_CODE
     , SALARY
  FROM EMPLOYEE
 WHERE DEPT_CODE IN ('D6', 'D8');

 

D6, D8, 부서 배정받지 못한 사원 조회

  SELECT
       EMP_NAME
     , DEPT_CODE
     , SALARY
  FROM EMPLOYEE
 WHERE DEPT_CODE NOT IN ('D6', 'D8')
    OR DEPT_CODE IS NULL;

 

 

개인 기록용으로 작성하는 글입니다..

 

'프로그래밍 > Database(Oracle)' 카테고리의 다른 글

Oracle - CREATE(생성, 제약조건), INSERT  (0) 2021.07.03
Oracle- JOIN  (0) 2021.06.29
오라클 - GROUP & HAVING  (0) 2021.06.29
오라클 - 함수(Function)  (0) 2021.06.28
Oracle - SELECT(조회)  (0) 2021.06.25
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유