Oracle

5. WHERE절과 연산자

minjibbang 2022. 11. 8. 12:37

5-1. 필요한 데이터만 출력하는 WHERE절

SELECT문으로 데이터를 조회할 때 특정 조건기준으로 원하는 행출력할 때 사용

EMP 테이블 모든 열 출력
부서번호가 30인 사람들의 데이터만 출력
사원 번호가 7782인 사원 정보만 출력

5-2. 여러 개 조건식을 사용하는 논리 연산자(AND, OR )

AND 연산자로 여러 개의 조건식 사용하기

- 비교하는 데이터가 문자열일 경우에는 작은따옴표('')로 묶어 준다.
- 테이블 안에 들어있는 문자 또는 문자열 데이터는 대,소문자를 구별하기 때문에 반드시 내용에 맞게 작성한다.

사원번호가 7499이고 부서 번호가 30인 사원 정보만 출력
부서 번호가 30이거나 직업이 CLERK인 사원 정보 출력
부서 번호가 20이거나 직업이 SALESMAN인 사원 정보 출력

5-3. 연산자 종류와 활용 방법

산술 연산자( +, -, *, /)

곱셈 산술 연산자를 사용한 예

비교 연산자

대소 비교 연산자( >, >=, <, <=)

급여가 3,000 이상인 사원 조회
급여가 2500 이상이고 직업이 ANALYST인 사원 정보 출력

비교 대상인 데이터가 숫자가 아닌 문자열일 때도 사용 가능하다.

사원 이름의 첫 문자가 F와 같거나 뒤쪽인 것만 조회
비교 문자열이 문자 여러 개일 경우

등가 비교 연산자(=, !=, <>, ^=)

연산자 양쪽 항목이 같은지 다른지 확인해주는 연산자

급여가 3000이 아닌 사원의 데이터 조회

논리 부정 연산자(NOT)

NOT 위치 알아두자

IN 연산자

특정 열에 해당하는 조건 여러 개 지정할 수 있다.

IN 연산자 앞에 부정 연산자 NOT 사용
IN 연산자를 사용하여 부서 번호가 10, 20번인 사원 정보만 나오도록 해보기

BETWEEN A AND B 연산자

WHERE 열 이름 BETWEEN 최솟값 AND 최댓값
급여가 2000 ~ 3000 사이 외의 값을 가진 데이터만 출력

LIKE 연산자와 와일드 카드

LIKE 연산자검색 기능처럼 일부 문자열이 포함된 데이터를 조회할 때 사용

와일드 카드 : 특정 문자 또는 문자열을 대체하거나 문자열 데이터의 패턴을 표기하는 특수 문자

종류 의미
_ 어떤 값이든 상관없는 "한 개"의 문자 데이터
% 길이와 상관없이(문자 없는 경우도 포함) "모든" 문자 데이터

사원 이름의 두 번째 글자가 L인 사원만 출력
사원 이름에 AM 이 포함되어 있는 사원 데이터만 출력
사원 이름에 AM이 포함되어 있지 않은 사원 데이터 출력

와일드 카드 문자가 데이터 일부일 경우

    => ESCAPE 문자 \  사용

별칭 사용하여 열 이름 출력하기

별칭을 사용하는 네 가지 방법이 있는데 AS를 가장 많이 사용

IS NULL 연산자

NULL 의미
값이 존재하지 않음 통장을 개설한 적 없는 은행 고객의 계좌번호
해당 사항 없음 미혼인 고객의 결혼기념일
노출할 수 없는 값 특정 개인 정보
확정되지 않은 값 미성년자의 출신 대학

IS NULL 연산자를 사용하여 NULL 데이터 출력하기
IS NOT NULL 연산자를 사용하여 NULL이 아닌 데이터만 조회

집합 연산자

종류 설명
UNION 합집합, 결과 값의 중복 제거
UNION ALL 합집합, 결과 값의 중복 제거 없이 모두 출력
MINUS 차집합
INTERSECT 교집합

주의할 점) SELECT문이 출력하려는 열 개수와 각 열의 자료형이 순서별로 일치해야 한다.
                  데이터 타입이 순사일 경우 에러가 발생하지 않아 나중에 오류가 발생할 수 있으니 반드시 주의가 필요하다.

EMP 테이블 전체 행을 조회한 첫 번째 SELECT문의 결과에서 10번 부서에 있는 사원 데이터를 제외한 결과 값이 출력됨
EMP 테이블 전체 행을 조회한 첫 번째 SELECT문의 결과와 10번 부서에 있는 사원 데이터의 교집합 결과 값을 출력

 

 

기본 예제

 

Q1. EMP 테이블을 사용하여 사원의 이름이 S로 끝나는 사원 데이터를 모두 출력하는 SQL문을 작성해 보세요.

Q2. EMP 테이블을 사용하여 30번 부서에서 근무하고 있는 사원 중에 직책이 SALESMAN인 사원의 사원 번호, 이름 직책, 급여, 부서 번호를 출력하는 SQL문을 작성해 보세요.

Q3. EMP 테이블을 사용하여 20번, 30번 부서에 근무하고 있는 사원 중 급여가 2000 초과인 사원을 다음 두 가지방식의 SELECT 문을 사용하여 사원 번호, 이름, 급여, 부서 번호를 출력하는 SQL문을 작성해 보세요.

- 집합 연산자를 사용하지 않은 방식
- 집합 연산자를 사용한 방식

집합 연산자를 사용하지 않은 방식
집합 연산자를 사용한 방식

Q4. 이번에는 NOT BETWEEN A AND B 연산자를 쓰지 않고, 급여 값이 2000 이상 3000 이하 범위 이외의 값을 가진 데이터만 출력하도록 SQL 문을 작성해 보세요.

Q5. 사원 이름에 E가 포함되어 있는 30번 부서의 사원 중 급여가 1000 ~ 2000 사이가 아닌 사원 이름, 사원 번호, 급여, 부서 번호를 출력하는 SQL문을 작성해 보세요.

Q6. 추가 수당이 존재하지 않고 상급자가 있고 직책이 MANAGER, CLERK인 사원 중에서 사원 이름의 두 번째 글자가 L이 아닌 사원의 정보를 출력하는 SQL문을 작성해 보세요.

'Oracle' 카테고리의 다른 글

6-3. 날짜 데이터를 다루는 날짜 함수  (0) 2022.11.16
6-2. 숫자 함수  (0) 2022.11.16
6-1. 문자 데이터를 가공하는 문자 함수  (0) 2022.11.09
4. SELECT문의 기본 형식  (0) 2022.11.07
1. 데이터베이스  (0) 2022.11.03