본문 바로가기
DB

[DB] WHERE절 정리

by 미소여우 2022. 8. 5.
728x90
오라클로 배우는 데이터베이스 입문을 보고 정리하였다.

백엔드 엔지니어는 DB에 대해 알아야 하기에 MySQL 쪽으로 공부하고 있었는데, sql을 세세하게 보지 않았던거 같다. 왜냐하면 DATA JPA를 통해 너무 편하게 조회했기에.. 내가 못 찾는 거일 수도 있지만 JPQL도 종종 짜줘야 하는데 쿼리를 모르니 검색하기 힘들때가 있었다. 책을 산김에 기본적인 문법들은 정리를 하려고 한다.

IN 연산자

범위 안에 있는 내용들 찾을 때는 IN을 통해서 광범위하게 찾을 수 있다.

SELECT *
FROM EMP
WHERE JOB IN ('MANAGER', 'SALESMAN', 'CLERK');

SELECT *
FROM EMP
WHERE JOB NOT IN ('MANAGER', 'SALESMAN', 'CLERK');

 

BETWEEN 연산자

범위를 찾을 때는 BETWEEN AND를 활용해서 찾을 수 있다.

SELECT * FROM EMP WHERE SAL BETWEEN 2000 AND 3000;

SELECT * FROM EMP WHERE SAL NOT BETWEEN 2000 AND 3000;

 

LIKE 연산자, 와일드 카드

일부 문자열이 포함된 데이터를 조회할 때 사용

-- ENAME 중에 대문자 S로 시작하는 데이터 조회
SELECT * FROM EMP WHERE ENAME LIKE 'S%';

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

-- 첫글자는 아무거나 두번째는 L로 시작하는 데이터 조회
SELECT * FROM EMP WHERE ENAME LIKE '_L%';

-- 어느 위치에 AM이 있는 데이터 조회
SELECT * FROM EMP WHERE ENAME LIKE '%AM%';

 

NULL

아시다시피 NULL인 것에 대해서 IS, IS NOT NULL을 활용하여 검색할 수 있다.

SELECT * FROM EMP WHERE COMM IS NULL;

SELECT * FROM EMP WHERE COMM IS NOT NULL;

 

집합 연산자

두 개 이상의 SELECT 문의 결과 값을 연결할 때 사용. 열 개수, 각 열의 자료형이 순서별로 일치해야함!

-- UNION: 중복 값 제거
-- UNION ALL: 중복 제거 없이 모두 출력

SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10
UNION
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20;

-- MINUS: 차집합 처리
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP
MINUS
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10;

-- INTERSECT: 교집합
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP
INTERSECT 
SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10;
728x90

'DB' 카테고리의 다른 글

[DB, MySQL] 트랜잭션 기초를 익혀보자  (0) 2023.07.03
[SQL] 사용자 추가  (0) 2023.01.11
[DB] 오라클 함수 정리  (0) 2022.08.06

댓글