데이터베이스/Oracle

[Oracle] 비교연산자, ALL, ANY, IN, NOT IN, BETWEEN, LIKE 연습

반응형
Oracle에서 교육용으로 제공하는 HR계정으로 실습 [EMPLOYEES 테이블]

 

 

SELECT
FROM
WHERE 조건절 -> IF

비교연산자( > < >= <= != <>)
NULL, IS NULL( =NULL) -> 문법상 Oracle에선 사용이 안된다
IS NOT NULL( !=NULL)
AND(&&), OR(||)


이름이 Julia
SELECT first_name, last_name FROM EMPLOYEES WHERE first_name = 'Julia';

급여가 $9000 이상인 사원
SELECT first_name, salary FROM employees where SALARY >= 9000;

이름이 Shanta 보다 큰 이름
SELECT first_name FROM employees WHERE first_name > 'Shanta'; --이름의 첫 스펠링만 비교하는 게 아니다.

이름의 첫 스펠링이 J보다 큰 이름
SELECT first_name FROM employees where first_name >= 'J';

매니저가 없는 사원
SELECT first_name
FROM employees
WHERE manager_id IS NULL;
--WHERE manager_id = NULL;
--WHERE manager_id = '';

조건이 2개 이상일 경우
AND, OR
SELECT
*
FROM employees
WHERE first_name = 'Shanta'
AND first_name = 'Vollman'; --당연히 아무도 안 나온다. first_name Shanta AND Vollman

SELECT
*
FROM employees
WHERE first_name = 'Shanta'
OR first_name = 'Volman'; -- first_name 'Shanta' 이거나 'Volman'인 사람

복합 조건
이름 John 그리고 월급은 50005000 이상
SELECT
*
FROM employees
WHERE first_name = 'John'
AND salary >= 5000;

날짜에 대한 조건
--2007 12월 3131일 이후에 입사한 사원을 출력
SELECT
first_name, hire_date
FROM employees
WHERE hire_date > '07/12/31';

SELECT
first_name, hire_date
FROM employees
WHERE hire_date > TO_DATE('20071231', 'YYYYMMDD'); --> TO_DATE(A, B) A를 BB의 형식으로 시간을 변경

ALL(= AND), ANY(= OR)
--전체 데이터가 여러 개 일 때..
SELECT
*
FROM employees
WHERE first_name = ALL('Julia', 'John'); --> WHERE first_name = 'Julia' AND first_name = 'John'

ANY 각각의 데이터가 달랐을 때 주로 사용..
SELECT
*
FROM employees
WHERE first_name = ANY('Julia', 'John'); -- OR조건 결과가 제대로 출력이 된다.

--급여 8000, 3200, 6000 인 사람을 출력
SELECT
salary
FROM employees
WHERE salary = ANY(8000, 3200, 6000);

IN, NOT IN
SELECT first_name, salary
FROM employees
WHERE salary IN(8000, 3200, 6000); --급여가 8000, 3200, 6000 인 사람

SELECT first_name, salary
FROM employees
WHERE salary NOT IN(8000, 3200, 6000); --급여가 8000, 3200, 6000이 아닌 사람

SELECT first_name
FROM employees
WHERE first_name IN('Julia', 'John'); -- 이름이 'John' 이거나 'Julia'인 사람

BETWEEN 범위 연산자
SELECT first_name, salary
FROM employees
WHERE salary BETWEEN 3200 AND 9000;
-- WHERE salary >= 3200 AND salary <= 9000; --급여가 3200 이상 9000이하인 사람

SELECT first_name, salary
FROM employees
WHERE salary NOT BETWEEN 3200 AND 9000; -- 3200보다 작거나 9000보다 큰 사람

 

LIKE
SELECT first_name
FROM employees
WHERE first_name LIKE 'G_ra_d'; -- _ 한 글자가 어떠한 문자든 허용

SELECT first_name
FROM employees
WHERE first_name LIKE 'K%y'; -- % 글자 수에 제한 없이 모두 허용
-- %의 위치에 따라 포함되는 게 달라질 수 있다.
SELECT first_name
FROM employees
WHERE first_name LIKE 'K%'; -- K로 시작하는 사람 전부 출력

SELECT first_name
FROM employees
WHERE first_name LIKE '%a%'; -- a가 포함되어있는 사람 모두 출력 %A(맨 끝에 A인 사람 출력)

--06년도에 입사한 사람 전부 뽑고 싶을 때
SELECT first_name, hire_date
FROM employees
WHERE hire_date >= '06/01/01' AND hire_date <= '06/12/31';

SELECT first_name, hire_date
FROM employees
WHERE hire_date LIKE '06%';

SELECT first_name, phone_number
FROM employees
WHERE PHONE_NUMBER LIKE '590%'; --지역번호가 590에 해당하는 사람

반응형