성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

DATABASE, DB 데이터베이스 WHERE 조건절 (BETWEEN A AND B, IN, MOD), LIKE 본문

백엔드개발/DATABASE

DATABASE, DB 데이터베이스 WHERE 조건절 (BETWEEN A AND B, IN, MOD), LIKE

hyemi_flora 2023. 10. 31. 09:16

1027 수업내용

 

--컬럼명 BETWEEN A AND B해당 컬럼 값이 A와 B 사이인 경우 true ( BETWEEN  A < AND  <= B A 이상, B 이하)

SELECT first_name, salary FROM employees WHERE salary BETWEEN 2000 AND 3000; 


-- 컬럼명 IN(A, B, C...) : () 안의 내용에 해당 값이 있으면 true;

SELECT first_name, job_id FROM employees WHERE job_id IN('ST_CLERK', 'SH_CLERK');

SELECT first_name, department_id FROM employees WHERE department_id IN(30,60,100);

 

-- ()안의 값을 나열하는 장소에 다른 쿼리문을 활용할 수 있다. (서브 쿼리)

-- ()값을 먼저 실행한 후에 () 밖의 값을 실행한다.

SELECT first_name, department_id

    FROM employees WHERE department_id IN (

        SELECT department_id FROM departments WHERE location_id = 1700);


-- null은 크기 비교가 불가능하기 때문에 일반적인 비교 연산자를 사용하면 false가 나온다.

SELECT * FROM employees WHERE commission_pct = null; -- 조회 안됨

 

 -- NULL 행들을 조회하고 싶을 때

SELECT * FROM employees WHERE commission_pct IS null;

SELECT * FROM employees WHERE nvl(commission_pct, 0) = 0;

 

 

 -- NULL이 아닌 행들을 조회하고 싶을 때

SELECT * FROM employees WHERE NOT commission_pct IS null;

SELECT * FROM employees WHERE commission_pct IS NOT null;


-- 사원번호가 홀수인 사원들만 조회하기(java에서 사용하던 % 와 다르게

-- mod(value, divisor) 함수를 사용해 나머지를 구할 수 있다.)

SELECT * FROM employees WHERE mod(employee_id, 2) = 1;

 


    # Like

    - 데이터의 일부분이 일치하는 행을 조회할 수 있다.

    - % : 문자가 있어도 되고 없어도 되는 자리 (정규표현식 * 와 유사)

    - _ : 반드시 한 글자가 있어야 하는 자리

 

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

-- 이름이 S로 시작하는 사람

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

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

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

-- r로 끝나는 이름

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

-- 뒤에서 3번째 자리 e인 사람

 

SELECT hire_date FROM employees WHERE hire_date LIKE '%/02/%';

-- 입사한 월이 2월


QUIZ

-- 연습 1> first_name에 a가 포함된 모든 사원들의 이름 조회

SELECT first_name FROM employees WHERE first_name LIKE '%a%' OR first_name LIKE '%A%';

-- 연습 2> first_name에 e가 2개 포함된 모든 사원들의 이름 조회

SELECT first_name FROM employees WHERE first_name LIKE '%e%e%' OR first_name LIKE '%E%e%';

-- 연습 3> first_name이 5글자 이면서 r로 끝나는 모든 사원들의 이름 조회

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

-- 연습 3> 8월에 입사한 사원들의 이름과 고용일 조회

SELECT first_name, last_name, hire_date FROM employees WHERE hire_date LIKE '%/08/%'