몰입하며 나아가는 개발이란

Language/SQL

Oracle SQL DML : SELECT 02(WHERE)

류하을 2019. 12. 17. 22:03

WHERE 절

WHERE절은 JAVA에서 if문과 동일한 조건절이라고 보는것이 이해하기 쉽다.

그러므로 논리연산자나 비교 연산자를 사용할 수 있다.

 

연산자의 종류는 아래와 같다.
    비교 연산자( >, <, >=, <=, =, !=, <> )   (!=  <>)같은 처리
    NULL, = NULL, IS NULL, IS NOT NULL
    ( ), NOT, AND, OR

 

WHERE 절의 위치는 FROM 아래에 위치 할 수 있다.     
    SELECT (값)
    FROM (테이블)
    WHERE (조건)

WHERE 비교 연산자 예제1 ( = )

first_name 이 Julia 인 조건 SELECT

SELECT first_name, last_name, salary
FROM employees
WHERE first_name = 'Julia';

WHERE 비교 연산자 예제2 ( <= )

salary 가 9000 이상인 SELECT

SELECT first_name, salary
FROM employees
WHERE salary <= 9000;

WHERE 비교 연산자 예제3 ( >= )

first_name 이 Shanta 보다 같거나 큰 SELECT

SELECT first_name, salary
FROM employees
WHERE first_name >= 'Shanta';

ASCII CODE 값으로 비교연산 하여 SELECT 이 되어진다.

 

WHERE 비교 연산자 예제4 (IS NOT NULL)

manager_id 가 NULL 이 아닌 SELECT

SELECT first_name, salary
FROM employees
WHERE manager_id IS NOT NULL;

WHERE 논리연산자 예제1 (AND)

first_name 이 Shanta 이며, first_name 이 John 인 SELECT

SELECT *
FROM employees
WHERE first_name = 'Shanta'
AND first_name = 'John'; 

둘다 조건이 first_name 으로 연산하기 때문에 테이블 항목명만 등장하고 값은 나오지 않는다.

 

WHERE 논리연산자 예제2 (OR)

first_name 이 Shanta 또는, first_name 이 John 인 SELECT

SELECT *
FROM employees
WHERE first_name = 'Shanta'
OR first_name = 'John'; 

WHERE 논리연산자 예제3 (ALL)

first_name 이 Shanta 이며, first_name 이 John 인 SELECT = 예제 1번과 동일

SELECT *
FROM employees
WHERE first_name = ALL('Julia', 'John');

WHERE 논리연산자 예제4 (ANY)

first_name 이 Shanta 또는, first_name 이 John 인 SELECT = 예제 2번과 동일

SELECT *
FROM employees
WHERE first_name = ANY('Julia', 'John');

WHERE 논리연산자 예제5 (IN)

salary 가 8000 또는 3200 또는 6000 인 SELECT = OR의 연속

SELECT first_name, salary
FROM employees
WHERE salary IN(8000, 3200, 6000);

WHERE 논리연산자 예제6 (NOT IN)

salary 가 8000, 3200, 6000 을 포함 하지 않는 SELECT = 예제5 반대로 적용.

SELECT first_name, salary
FROM employees
WHERE salary NOT IN(8000, 3200, 6000);

WHERE 논리연산자 예제7(BETWEEN)

하나의 COLUMN 대상으로 하는 범위를 AND 와 OR(NOT 을 붙였을때)으로 사용 가능하다.

SELECT first_name, salary
FROM employees
-- WHERE salary BETWEEN 3200 AND 9000;
WHERE salary >= 3200 AND salary <= 9000;

SELECT first_name, salary
FROM employees
WHERE salary NOT BETWEEN 3200 AND 9000;
-- WHERE salary < 3200 OR salary > 9000;

WHERE 논리연산자 예제8 (LIKE)

하나의 COLUMN 대상으로 같은 값을 SELECT 한다. (NOT LIKE 로 해당하는 같은 값은 제외한 SELECT도 가능하다)

SELECT first_name, last_name
FROM employees
WHERE first_name LIKE '%Al%';