본문 바로가기
데이터베이스

3. 다양한 연산자

by 김마리님 2020. 3. 25.

오라클에는 다른 곳에 없는 고유한 연산자들이 있다.

 

 

1. between

A와 B사이의 값을 검색할 때 사용한다.

 

기호로 표현한 코드를 보자.

select *
from EMP
where SAL >=1500 and SAL <= 2000;

 

이를 between 연산자로 표현하면 다음과 같다

select *
from EMP
where SAL between 1500 and 2000;

같은 값이 출력된다.

 

 

2. like 

like는 함께 하는 기호가 있다.

1) _ : 이 자리에는 어떠한 글자 한 글자만 올 수 있다.
2) % : 이 자리에는 어떠한 글자, 수 제한 없이 올 수 있다.

 

예시를 보자.

 

select *
from EMP
where ENAME like 'A%';

다음과 같이 첫글자가 A, 그 위로 어떠한 글자도 오는 것을 볼 수 있다.

 

select *
from EMP
where ENAME like 'A%N';

% 기호 앞에 다른 글씨를 붙이면, 어떠한 글자가 오던 마지막 글자가 N이 오면 된다.

 

select *
from EMP
where ENAME like '%N%';

이렇게 코드하면 어디에 위치하던 N이 데이터 안에 위치하면 된다. (%자리에 값이 없어도 무방하다!)

다만 주의할점은, _나 %가 앞에 위치하게 되면 연산 인덱스에 의해 오래 걸리게 된다. 따라서 _나 %가 제일 앞에 오게 하지 않도록 한다.

 

 

3. is NULL // is NOT NULL

값이 없거나 해서 모르는 값일 경우 오라클은 null이라는 값을 반환한다.

(이 때 주의할 점은 데이터 부분이 비어서 null을 출력한다 하여, 이 부분이 빈 공간이 아니라는 점이다. null 공간엔 null이라는 데이터가 있다.)

이 null은 연산자로 찾을수가 없기 때문에(값을 모르니까) 이를 찾는 연산자이다.

is NULL : NULL을 조회
is NOT NULL : NULL이 아닌 데이터를 조회

 

다음 예시를 보자.

 

1) is NULL

select *
from EMP
where COMM is not NULL;

다음과 같이 COMM에 null값이 전혀 없는 것이 보인다. 반대로 is NULL을 써보자.

 

2) is NOT NULL

select *
from EMP
where COMM is NULL;

다음과 같이 COMM 데이터에 null만 있는 것을 볼 수 있다.

 

 

4. order by

order by는 데이터를 순서대로 정렬해주는 것이다.

정렬에는 크게 두가지 방법이 있다. 오름차순과 내림차순이다. 

 

1) ascanding : 내림차순
2) descanding : 오름차순

 

내림차순과 오름차순의 두가지 예시를 보자

 

1) ascanding(내림차순)

select *
from EMP
where SAL>1000
ORDER BY SAL ASC;

다음과 같이 가장 낮은 숫자부터 순서대로 점점 늘어나고 있는 것이 보인다.

 

2) descanding(오름차순)

select *
from EMP
where SAL>1000
ORDER BY SAL DESC;

다음과 같이 가장 높은 숫자대로 순서대로 점점 줄어들고 있는 것을 볼 수 있다.

 

3) order by 중첩

다음의 예시를 보자.

select ename,sal,comm
from emp
order by sal desc;

order by 명령어를 받고 sal이 오름차순으로 정렬되었다. 그러나 같은 sal일 때의 comm 값이 내림차순인걸 볼 수 있다. 이 것 역시 오름차순으로 함께 바꿀 수 있다.

 

select ename,sal,comm
from emp
order by sal desc, comm desc;

뒤에 comm의 차순 정렬을 넣어주면 

다음과 같이 같은 값일 때 comm이 정렬된 것을 볼 수 있다.

order by가 중첩될 때 앞의 컬럼이 먼저 정렬되고, 다음 컬럼이 순차적으로 정렬된다.

 

4) 컬럼명 지정

컬럼의 이름이 길어 입력하기 곤란할 때, 굳이 컬럼명을 다 입력할 필요 없이, 컬럼의 열의 번호를 알고 있으면 컬럼의 번호만으로 호출할 수 있다.

select ename, substr(sal,1,1)
from emp
order by 2 desc;

컬럼의 이름을 입력할 필요 없이, 번호만 입력해도 오름차순으로 정렬되는 것을 볼 수 있다.

 

그러나 order by는, 오라클 같은 경우는 정렬 자체가 아주 힘든 연산이기 때문에 많이 사용하면 할수록 연산이 늦어진다. 따라서 order by는 최대한 이용하지 말고, 인덱스를 이용하도록 한다.

반응형