티스토리 뷰

back/Oracle Database

Oracle Database(Function)

devel0per 2022. 8. 23. 20:18

.BETWEEN ~ AND

: 하나의 컬럼의 값이 범위 내에 속하는지 알아보기 위한 연산자이다. 숫자형, 문자형, 날짜형에 사용가능하다.

 

.와일드 카드

- % : 문자가 없거나, 하나 이상의 문자에 어떤 문자가 와도 상관없다.

- _ : 하나의 문자에 어떤 값이 와도 상관없다.

. LIKE : 검색하려는 값을 정확히 모를 경우에도 검색 할 수 있도록 와일드 카드와 함께 사용하여 결과를 얻는다.

 

.NULL의 정의

빈 공간이 아님

미확정(해당 상황 없음), 알 수 없는(unknown)값을 의미

어떤 값인지 알 수 없지만 값은 존재함

? 혹은 oo(무한)을 의미

연산, 할당, 비교가 불가능

오라클에서는 컬럼에 NULL값이 저장되는 것을 허용한다.

 

IS NULL / IS NOT NULL

임의의 컬럼이 NULL인지 아닌지를 비교 / 검색 한다.

특정 컬럼값이 NULL값인지를 비교할 경우 IS 연산자를 사용한다.

 

Concatenation 연산자 사용

: Select 다음에 2개 이상의 컬럼이 올 경우 이들을 ' , ' 로 연결하지만 영어 문장 처럼 보이게 하기 위해 Concatenation 연산자( || )를 사용한다. 

 

DISTINCT

: 동일한 값들이 중복되어 출력되지 않도록 하기 위해 사용하는 키워드

 

Oracle 데이터 타입

: 데이터 베이스에 저장되는 데이터는 다양한 형식으로 표현됩니다.

 

데이터 타입 의미
CHAR(size) size 크기 고정 길이 문자 데이터 타입
최대 크기 : 2000 byte
최소 크기 : 1 byte
VARCHAR2(size) size 크기 가변길이 문자 데이터 타입
최대 크기 : 4000 byte
최소 크기 : 1 byte
NVARCHAR2(size) 국가별 문자 집합에 따른 size 크기의 문자
또는 바이트의 가변 길이 문자 데이터 타입
최대 크기 : 4000 byte
최소 크기 : 1byte
LONG 가변 길이의 문자형 데이터 타입 최대 크기는 2GB이다.
NUMBER(p,s) 정밀도(p)와 스케일(s)로 표현되는 숫자 데이터 타입
NUMBER(p) 정밀도(p)와 스케일(s)로 표현되는 숫자 데이터 타입
P : 1 ~ 38
S : -84 ~ 127
DATE 날짜 형식을 저장하기 위한 데이터 타입
ROWID 테이블내 행의 고유 주소를 가르키는 64byte 문자 타입
CLOB 대용량의 텍스트 데이터를 저장하기 위한 데이터 타입
최대 크기 : 4GB
BLOB 대용량의 텍스트 데이터를 저장하기 위한 데이터 타입
최대 크기 : 4GB
BFILE 대용량의 바이너리 데이터를 화일 형태로 저장하기
위한 데이터 타입
최대 크기 : 4GB
TIMESTAMP(n) DATE 데이터 타입의 확장된 형태
n : milli second 자릿수 최대 9자리 까지 표현
INTERVAL YEAR TO MONTH 년과 월을 이용하여 기간을 지정
INTERVAL DAY TO SECOND 일, 시, 분을 이용하여 시간을 지정
두 날짜 값의 정확한 차이를 표현하는데 사용
BINARY_FLOAT 32bit 부동 소수 4byte
BINARY_DOUBLE 64bit 부동 소수 8byte

 

ORDER BY 절

: 정렬은 크기 순서대로 나열하는 것을 의미한다.

  정렬 방식에는 두가지 방식이 있다.

  작은 값이 위에 출력되고 아래로 갈 수록 큰 값이 출력되는 오름차순 정렬과(ASC)

  큰 값이 위에 출력되고 아래로 갈 수록 작은 값이 출력되는 내림차순 정렬 방식이 있습니다.(DESC)

 

  ASC(오름차순) DESC(내림차순)
숫자 작은 값 부터 정렬 큰 값 부터 정렬
문자 사전 순서로 정렬 사전 반대 순서로 정렬
날짜 빠른 날짜 순서로 정렬 늦은 날짜 순서로 정렬
NULL 가장 마지막에 나옴 가장 먼저 나옴

   

 

 

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nannayabyc&logNo=220142618110 

 

오라클 scott / tiger 연습문제

후배 교육겸 긁어모은 오라클 연습문제 2014 09 11 1. 사원의 번호, 이름, 급여, 부서 번호를 출력하여라. ...

blog.naver.com

 

 

 

 

 


 

○ 문제

 

 

※ 주의할 점

 

1. 커미션이 NULL인 사원들을 0으로 계산해야 한다.

 

 

 

[ 테스트 코드 및 결과 ]

select deptno 사원번호, sal 급여, nvl(comm, 0) 커미션, (nvl(comm, 0 )+ sal)*12 연봉
from emp
ORDER BY (nvl(comm, 0 )+sal)*12;

 

nvl 함수를 이용해서 굉장히 손쉽게 원하는 값을 출력할 수 있었다.

 


 

○ 문제

 

 

 

※ 주의할 점

 

1. 6개월이라는 시간을 더해줄 때 무슨 함수를 적절하게 써야할 지 생각해야한다.

 

 

 

[ 테스트 코드 및 결과 ]

 

select ename 이름, hiredate 입사일, add_months(hiredate, 6)"6개월후"
from emp;

이 문제도 add_months 함수를 통해서 hiredate(입사일)에 6개월을 더해 원하는 값을 출력하는 데 성공했다.

 


 

○ 문제

 

※ 주의할 점

1. 급여가 적은 것부터 출력해야 하므로 적절한 ORDER BY를 사용

2. 커미션이 없는 사원은 0이 아니라 'NO Commission' 이라는 말이 출력되어야 하므로 decode() 사용.

 

 

[ 테스트 코드 및 결과 ]

 

select ename 이름, sal 급여, decode(nvl(comm, 0), 0, 'No Commission', comm) 커미션
from emp
order by sal asc;

 

decode() 함수를 통해서 comm 컬럼에 존재하는 0의 값들을 'No Commission' 으로 출력되게 만들어서 원하는 값을 출력했다.

 


○ 문제

 

 

 

※ 주의할 점

1. decode 함수를 얼마나 센스 있게 사용하는게 관건.

 

 

 

[ 테스트 코드 및 결과 ]

 

select ename 이름, job 직무, sal 급여,
decode(job, 'CLERK', sal * 1.2, 'SALESMAN', sal * 1.15, 'ANALYST', sal * 1.1, 'MANAGER', sal * 1.05, sal) "인상 후의 급여"
from emp;

다소 복잡하다고 생각할 수 있지만, decode 함수의 단순한 형태를 숙지하고 실수하지 않게 천천히 작성하면 무난히 출력이 가능하다.

 


 

'back > Oracle Database' 카테고리의 다른 글

Oracle Database(서브 쿼리, DDL)  (0) 2022.08.30
Oracle Database(Function 4)  (0) 2022.08.27
Oracle Database(Function 3)  (0) 2022.08.25
Oracle Database(Function 2)  (0) 2022.08.24
Oracle Database(데이터 형, SQL 명령문)  (0) 2022.08.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크