DB/SQL - Oracle

[SQL] 연산자 - 수식, 문자, 논리, 집합 연산자

생각많은 프로그래머 2024. 2. 9. 00:40

 

연산자(Operator)는 말그대로 연산을 수행하는 역할을 한다. 

오라클에서는 다양한 연산자를 제공하고 있는데 

크게 다음과 같이 분류할 수 있다.

 

  • 수식 연산자
  • 문자 연산자
  • 논리 연산자
  • 집합 연산자
  • 계층형 쿼리 연산자

이번 글에서는 수식,문자, 논리연산자를 다루고,

추가로 집합 연산자에서 MINUS만 다뤄보고자 한다. 

계층형 쿼리 연산자도 다른 설명이 많이 필요해서 별도의 글에 다루고자 한다. 

 

 

수식 연산자 : +, - , *,  /
연산자 기능 예시
+ 단항 연산자 : 양수   / 이항 연산자 : 덧셈 +1 은 양수 1을 의미함, 
1 + 1 = 2 에서 +는 덧셈 기능
단항 연산자 : 음수   / 이항 연산자 : 뺄셈 -1 은 음수 -1을 의미함, 
1 - 1 = 0 에서 -는 뺄셈 기능
* 곱셈 2 * 2 = 4
/ 나눗셈 4 / 2 = 2

 

문자 연산자 : ||

 

'||'는 두 문자를 붙이는 연산을 수행한다. and와 유사하다.

select id || '-' || name
from member;

 위와 같이 select문을 실행하면

member 테이블에서 id 컬럼의 값과 name 컬럼의 값이 조회되는데

두 값 사이에 -가 함께 와서 출력된다. >> id-name

 

 

참고) || 입력방법 

Shift + ₩표시 키(보통 엔터 위에 있음)를 두 번 누르면 된다.

 

논리 연산자 : > , < , >= , <= , <> , != , ^=
연산자 기능/예시
 > 
>=
A > B        : A는 B보다 크다. 
A >= B      : A는 B와 같거나 크다. 
<
<=
A < B        : A는 B보다 작다. 
A <= B      : A는 B와 같거나 작다. 
= A =  B       : A와 B는 같다.
<> 
!= 
^=
A <>  B
A !=   B
A ^=  B     : A와 B는 다르다.

 

 

집합 연산자 : UNION, UNION ALL, INTERSECT, MINUS

 

UNION : 합집합

UNION ALL : 합집합(중복 포함)

INTERSECT : 교집합

MINUS : 차집합

 

데이터를 그룹화/집합화하여 데이터로 사용되기도 하는데

집합 연산자는 이때 이러한 집합(set)을 대상으로 연산을 수행할 때 사용한다. 

 

집합 연산자는 Select문과 자주 쓰이는데 주로 아래의 형태와 같이 사용된다.

A집합에 대한  select문 
UNION
B집합에 대한 select문

 

 

 

예를 들어서 A MINUS B라고 하면 A집합에는 있고 B집합에는 없는 데이터를 말한다.

 

mymember라는 테이블에서 점수(point)가 높은 10~15번째 튜플 출력한다고 가정해보자.

여러 방법이 있겠지만 MINUS를 사용한다면,
1번째부터 15번째까지의 집합(A)에서 1번째부터 9번째까지의 집합(B)을 빼면
10번째부터 15번째에 해당하는 튜플이 모인 집합만 출력될 것이다.
*** A집합에는 있지만 B집합에는 없는 데이터 : 10번째부터 15번째에 해당하는 튜플

 

select rownum, m.*
from (select * from mymember order by point desc) m
where rownum <= 15
​
MINUS
​
select rownum, m.*
from (select * from mymember order by point desc) m
where rownum <= 9;​

 

위 select문의 결과값은 point컬럼의 값이 10번째~15번째에 해당하는 튜플이 조회된다.

결과적으로 rownum컬럼과 mymember테이블의 모든 컬럼의 값이 함께 출력된다.

 

집합 연산자에 대해서는 별도의 글에 좀 더 상세히 다뤄보겠다!