개발저장소
[Oracle] WHERE절 본문
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 |