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 |