코딩항해기

[DBMS/Oracle] WHERE절과 연산자 본문

DBMS/Oracle

[DBMS/Oracle] WHERE절과 연산자

miniBcake 2024. 7. 28. 11:43

 

WHERE절

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

이때 연산자를 사용하면 더욱 세밀한 데이터 조회가 가능하다.

SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 >= 30;
-- 대상 컬럼의 수가 30보다 크거나 같은 데이터만 조회된다. (true 결과물만 출력)
-- 즉, WHERE절에는 조건식이 온다.

 

 

 

연산자

AND (+BETWEEN), OR (+ IN)

WHERE절에서 사용되는 연산자 중 AND, OR은 '그리고', '또는'의 역할로 사용된다.

여러 조건을 '그리고', '또는'으로 연결하고 싶을 때 사용한다.

AND (+BETWEEN)

SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 >= 30 AND 대상컬럼 <= 50;
-- 대상 컬럼의 수가 30 이상, 50 이하인 데이터만 조회된다. 

 

이처럼 특정 범위를 조회할 때는 BETWEEN연산자를 사용할 수 있다.

SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 BETWEEN 30 AND 50; 
--30과 50을 포함해 조회된다. 즉, 이상 이하의 조건이다.

 

OR (+ IN)

SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 = 30 OR 대상컬럼 = 40 OR 대상컬럼 = 50 ;
-- 대상 컬럼의 수가 30이거나, 40이거나, 50인 데이터만 조회된다. 

 

여러 OR을 사용해 =연산자를 사용할 때는 IN 연산자를 활용하여 가독성을 높여줄 수 있다.

SELECT 컬럼1, 컬럼2 FROM 테이블 WHERE 대상컬럼 IN (30, 40, 50) ;

 

 

 

산술 연산자

+ 더하기
- 빼기
* 곱하기
/ 나누기

 

 

 

비교 연산자

A = B A와 B가 같다. (다른 언어에서 사용되는 ==. ===과 다르게 SQL에서는 =을 사용한다.)
A <> B A와 B가 같지 않다. (!=으로도 조회된다.)
A >= B A가 B보다 크거나 같다.
A <= B A가 B보다 작거나 같다.
A > B A가 B보다 크다.
A < B A가 B보다 작다.

 

 

 

집합 연산자

UNION 위 아래의 SELECT문의 결과 값을 합집합으로 묶어주며, 중복값은 제외된다.
UNION ALL 위 아래의 SELECT문의 결과 값을 합집합으로 묶어주며, 중복값도 전부 보여준다.
MINUS 위 아래의 SELECT문의 결과 값을 차집합으로 묶어주며,
상단 테이블의 결과 값 중 존재하지 않는 데이터만 하단 테이블에서 조회된다.
INTERSECT 위 아래의 SELECT문의 결과 값을 차집합으로 묶어 조회된다.

 

컬럼(가로)으로 합쳐지는 JOIN과 달리 로우(세로)로 합쳐진다.

그 때문에 두 SELECT문의 컬럼 개수와 자료형이 순서대로 일치해야 가능하다.

상단의 컬럼명은 상단의 위치한 SELECT문을 기준으로 보여진다.

SELECT 컬럼1, 컬럼2 FROM 테이블
UNION ALL
SELECT 컬럼1, 컬럼2 FROM 테이블; 
--위 아래의 SELECT문의 결과 값을 세로로 합쳐 합집합으로 묶어주며, 중복값도 전부 보여준다.

 

 

 

그 외 연산자

IS NULL IS NULL NULL값은 비교연산자로 비교할 수 없기 때문에 IS NULL을 사용한다.
= 연산자가 IS로 대체되고 != 연산자가 IS NOT으로 대체된다고 생각하면 된다.
논리 부정 연산자 NOT (조건) 뒤에 오는 조건의 반대로,  조건식의 TRUE, FALSE가 서로 바뀌게 된다.
LIKE 연산자 LIKE '%N%' 대상 컬럼의 값에 대문자 N이 포함되어있다면 조회된다.
(%는 와일드 카드라고 한다.) 

 

와일드카드

_ 어떤 값이든 상관없이 한 개의 문자 데이터를 의미한다. 자리 수를 표현할 때 사용된다.
% 길이와 상관없이 (문자가 없는 경우도 포함) 모든 문자데이터를 의미한다.
%N 이라면 N으로 끝나는 모든 문자,
N%이라면 N으로 시작하는 모든 문자,
%N%이라면 N을 포함하고 있는 모든 문자가 된다.