개발저장소

[Oracle] WHERE절 본문

Database/Database

[Oracle] WHERE절

개발소 2024. 5. 27. 22:17

WHERE절은 SELECT문으로 데이터를 조회할 때 특정 조건을 기준으로 원하는 행을 출력하기 위해 사용한다.

SELECT [열1 이름, 열2 이름 ... ]
FROM [테이블 이름]
WHERE [조회할 행을 선별하기 위한 조건식];

 

 

DEPTNO의 값이 30인 행만 출력하기 위해서는 다음과 같다.

SELECT *
FROM EMP
WHERE DEPTNO = 30;

 

 

논리 연산자 AND, OR

SELECT *
FROM EMP
WHERE DEPTNO = 30
	AND JOB = 'SALESMAN';
    
SELECT *
FROM EMP
WHERE DEPTNO = 30
	OR JOB = 'CLERK';

 

산술 연산자

SELECT *
FROM EMP
WHERE SAL * 12 = 36000;

SAL에 12를 곱한 값이 36000인 행을 출력

 

 

비교 연산자

SELECT *
FROM EMP
WHERE SAL >= 3000;

SAL이 3000보다 크거나 같은 행을 모두 출력

 

비교 연산자는 문자열이나 날짜도 비교가 가능하다.

 

 

IN 연산자

데이터들 중에 하나라도 해당되는 것이 있다면 조회한다.

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

 

 

 

BETWEEN A AND B 연산자

A와 B 사이의 데이터를 조회한다.

SELECT *
FROM EMP
WHERE SAL BETWEEN 2000 AND 3000;

 

 

 

LIKE 연산자와 와일드 카드

SELECT *
FROM EMP
WHERE ENAME LIKE 'S%';

ENAME이 S로 시작하는 행을 구하는 데이터를 조회한다는 뜻이다.

_는 하나의 문자 데이터를 의미하고, %는 길이와 상관없이 모든 문자 데이터를 의미한다.

 

_나 %를 문자로서 사용하고 싶은 경우, ESCAPE절을 사용하면 문자로 다루는 것이 가능해진다.

SELECT *
FROM SOME_TABLE
WHERE SOME_COLUMN LIKE 'A\_A%' ESCAPE '\';

 

 

IS NULL 연산자

NULL은 데이터베이스에서 중요한 의미가 있다. NULL은 0이나 공백이 아니라, 데이터 값이 완전히 비어있는 상태이다. 

NULL과 연산을 수행하는 경우, 무의미해지는 경우가 많다. 예를 들어, WHERE COMM = NULL; 을 수행한다면 NULL 데이터가 나오는 것이 아니라 아무런 행도 출력되지 않는다.

그렇기 때문에 NULL인 데이터만 출력하기 위해서는 IS NULL을, 아닌 데이터는 IS NOT NULL을 사용하면 된다.

SELECT *
FROM EMP
WHERE COMM IS NULL;

 

 

집합 연산자

두 개 이상의 SELECT문의 결과를 연결할 때 사용된다. 이때, 몇 가지 지켜야 할 규칙이 존재한다.

출력 열의 개수가 같아야 하고, 출력 열의 자료형이 모두 같아야 한다. 출력 열의 자료형이 같다면 다른 컬럼이라도 데이터가 출력된다.

 

집합 연산자의 종류

종류 설명
UNION 연결된 SELECT문 결과를 합집합으로 묶는다. 중복 제거 O
UNION ALL 연결된 SELECT문 결과를 합집합으로 묶는다. 중복 제거 없이 모두 출력된다.
MINUS 앞선 SELECT문의 결과에서 다음 SELECT문의 결과를 차집합 한다.
INTERSECT 앞선 SELECT문과 다음 SELECT문의 결과가 같은 데이터만 출력된다. 교집합과 같다.

 

ORDER BY는 쿼리문의 제일 마지막에서 한번만 사용된다. 개별 쿼리에서는 사용이 불가능하고, 첫번째 쿼리의 컬럼만 인식한다.

 

 

 

 

 

'Database > Database' 카테고리의 다른 글

[Oracle] 오라클 함수  (0) 2024.05.28
[Oracle] SELECT절  (0) 2024.05.27
[Oracle] 관계형 데이터베이스란?  (0) 2024.05.20