YSHUSH

조건절 (where, in, between, like) 본문

Coding/SQL

조건절 (where, in, between, like)

코딩; 2022. 1. 22. 12:44

SELECT
FROM 
WHERE → 조건절 if문에 해당
    
비교연산자 ( < > >= <= != = <> ) 사용 가능
NULL, IS NULL, IS NOT NULL
&& AND

|| OR, ( )

 

˙DUAL 가상테이블, 임시테이블용

SELECT 1, 'A' FROM DUAL;		// 결과 : 1, A
SELECT 'A' FROM DUAL;			// 결과 : A
SELECT TO_DATE('20211222','YYYYMMDD') FROM DUAL;	// 결과 : 21/12/22

˙where절 연습(employee table)

-- 이름 -> Julia
SELECT first_name, last_name, salary
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;   --> = NULL 은 JAVA문법임

-- 보너스가 있는 사람
SELECT first_name, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;

-- 2007년도 12월 31일 이후에 입사한 사원
SELECT first_name, hire_date
FROM employees
WHERE hire_date > '07/12/31';

SELECT first_name, hire_date
FROM employees
WHERE hire_date > '071231'; -- 되는데 비추

SELECT first_name, hire_date
FROM employees
-- WHERE hire_date > '20071231';    // 이렇게 해도 된다
WHERE hire_date > TO_DATE('20071231', 'YYYYMMDD');  -- 정석

-- 06년도에 입사한 사원을 검색
SELECT first_name, hire_date
FROM employees
WHERE hire_date > '05/12/31' AND hire_date < '07/01/01';
-- 06년도에 입사한 사원을 검색(LIKE)
SELECT first_name, hire_date
FROM employees
WHERE hire_date LIKE '06%';
-- phone_number 앞이 590인 사람을 찾아라
SELECT first_name, phone_number, salary
FROM employees
WHERE phone_number LIKE '590%' AND salary > 5000;

˙where...and절 연습(employee table)

    -- ALL(=AND), ANY(=OR)

SELECT first_name, last_name
FROM employees
WHERE first_name = 'Shanta'
    AND last_name = 'Vollman';
    
-- 이름 John, 월급이 5000이상인 사원
SELECT first_name, salary
FROM employees
WHERE first_name = 'John'
    AND salary >= 5000;
    
SELECT *
FROM employees
-- WHERE first_name = ALL('Julia', 'John');
WHERE first_name = 'Julia' AND first_name = 'John';

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

-- 월급이 8000이거나 3200이거나 6000인 경우 조건이 3 ~ 4가지라도 된다.
SELECT first_name, salary
FROM employees
WHERE salary = ANY(8000, 3200, 6000);

˙IN, NOT IN (포함되어 있는지 아닌지)

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

SELECT first_name
FROM employees
WHERE first_name IN('Julia', 'John');
-- WHERE first_name = 'Julia' OR first_name = 'John';

˙BETWEEN 범위 연산자

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

SELECT first_name, salary
FROM employees
WHERE (salary NOT BETWEEN 3200 AND 9000);   -- BETWEEN과 함께 AND연산자를 쓸때는 괄호를 쓰는게 좋다

˙LIKE로 찾기

  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 'A%';     -- 첫글자가 A인 사람만 찾아라

SELECT first_name
FROM employees
WHERE first_name LIKE '%y';     -- 맨끝에 y라고 끝나는 사람을 찾아라

SELECT first_name
FROM employees
WHERE first_name LIKE '%e%';    -- 철자 사이에 e가 들어간 사람을 찾아라

 

'Coding > SQL' 카테고리의 다른 글

join  (0) 2022.01.22
order by, group by 예제  (0) 2022.01.22
정렬(order by)과 통계(count, sum, avg, max, min)  (0) 2022.01.22
조건절 예제  (0) 2022.01.22
SQL이란?  (0) 2022.01.22