오라클에는 다른 곳에 없는 고유한 연산자들이 있다.
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는 최대한 이용하지 말고, 인덱스를 이용하도록 한다.
'데이터베이스' 카테고리의 다른 글
5. 일반함수 (0) | 2020.03.25 |
---|---|
4. 숫자 함수, 날짜 함수 (0) | 2020.03.25 |
오라클 날짜 데이터 포맷 변경하기 (0) | 2020.03.25 |
오라클 실습 2. length와 RPAD를 이용해 이름의 빈 칸 채우기. (0) | 2020.03.19 |
오라클 실습 1. 지역번호 블러처리 하기. (0) | 2020.03.19 |