KH/Oracle

# 4 데이터 타입 ,ORDER BY(정렬)

오늘의 진 2022. 8. 23. 14:18

데이터 타입 

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

데이터 타입 의미
CHAR(size) size 크기 고정 길이 문자 데이터 타입
최대크기 : 2000byte
최소크기 : 1byte
VARCHAR2(SIZE) size 크기 가변길이 문자 데이터 타입
최대크기 : 4000byte
최소크기 : 1byte
NAVERCHAR2(size) 국가별 문자 집합에 따른 size
qkdlxm rkqus rlfdl answk epdlxj xkdlq
최대크기 : 4000byte
최소크기 : 1byte

가변길이의 유니코드 문자형 데이터 타입으로 그 크기는 최대 size 값이 되며 UTF8의 경우 3배, AL16,UTF16엔코딩의 경우 2배의 byte가 된다. 
최대 크기는 4000byte 이며 size값을 생략 할 수 없다.
LONG 가변 길이의 문자형 데이터 타입 
최대 크기 : 2GB
NUMBER(p,s)

NUMBER(p)
정밀도(p)와 스케일(s)로 표현되는 숫자 데이터 타입
p : 1~38
s : -84~127

DATE 날짜 형식을 저장하기 위한 데이터 타입
2019 12 14
"YY/MM/DD"  >  "19/12/14"
"DD/MON/YY" > "14/DEC/19"
ROWID 테이블 내 행의 고유 주소를 가르키는 64byte 문자 타입
BLOB 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입
최대크기 : 4GB
CLOB 대용량의 텍스트 데이터를 저장하기 위한 데이터 타입
최대크기 : 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

 

 

 

 


 

 

(Q) emp 테이블에서 이 회사의 사장의 이름과 부서번호 직급을 출력하는 쿼리를 작성하시오 

     >>select ename,deptno,job from emp where mgr is null;

 

(Q) emp 테이블의 사원중에서 커미션을 받지 않는 사원의 월급을 15% 인상한 금액을 이름, 월급, 인상한 월급으로 출력하시오. 

>>select ename 이름,sal 월급,sal*1.15 "인상된 월급" from emp where comm is null ;

 

(Q) emp 테이블의 사원중에서 커미션을 받지 않는 사원과 0원인 사원의 월급을 15% 인상한 금액을

이름, 월급, 인상한 월급으로 출력하시오. 

>>select ename 이름,sal 월급,sal*1.15 "인상된 월급",comm from emp where comm=0 or comm is null;

>>select ename 이름,sal 월급,sal*1.15 "인상된 월급",comm from emp where nvl(comm,0) =0;

 

 

(Q) emp 테이블에서 이름이 'LA'가 들어있지 않은 사원의 이름과 월급, 입사일을 출력하는 쿼리문을 작성하시오.

>> select ename,sal,hiredate from emp where ename not like '%LA%';

 

(Q)  emp 테이블 이름의 세번째 글자가 'R'이고 다섯번째 글자가 'E'인 사원의 이름과 월급, 그리고 연봉을 35% 인상한 금액을 추출하는 쿼리문을 작성하시오 

>>  select ename,sal,(sal*12+nvl(comm,0))*1.35  from emp where ename like '__R_E%';

 

(Q) 사원이름에 'TI'가 있는 사원과 첫번째 글자가 'S'로 시작하는 사원의 이름, 월급, 직급을 출력하시오 

>>  select ename,sal,job  from emp where ename like '%TI%' or ename like 's%' ; 

 

 


 

 

ORDER BY  절 (정렬)

정렬은 크기 순서대로 나열하는 것을 의미한다. 
정렬 방식에는 두가지 방식이 있다. 
1.오름차순 방식 : 작은 값이 위에 출력되고 아래로 갈수록 큰 값이 출력되는 정렬 방식
2.내림차순 방식 : 큰값이 위에 출력되고 아래로 갈수록 작은 값이 출력되는 정렬 방식

 

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

로우를 정렬하려면 SELECT문에 ORDER BY절을 추가해야한다. 

 

[형식]
SELECT *
FROM  table_name
WHERE 조건
ORDER BY 컬럼명   정렬방식

 

예시) 사원들의 급여를 오름차순으로 정렬하는 쿼리문을 작성하시오 

 

null은 오름차순 기준 가장 마지막 줄에 정렬된다. 

 

(Q)  emp테이블에서 급여가 많은 사원부터 출력하되 급여가 1600이상인 사람들만 출력

>> select * from emp where sal>=1600 order by sal desc ;

 

(Q)  부서번호가 빠른 사원부터 출력하되 같은 부서내의 사원들은 최근에 입사한 사원부터 나오도록 쿼리를 작성하시오

>>  select * from emp order by deptno asc ,hiredate desc ;   (2중 정렬)

 

(Q) 입사일이 81/6/1 이후인 사원들을 출력하되 최근에 입사한 사원을 먼저나오게 하시오.

>> select * from emp where hiredate>='81/06/01' order by hiredate desc;

 

(Q) emp에서 사번, 이름, 급여를 출력하는데 이름이 빠른 사람 부터 츨력하시오.

>> select empno,ename,sal from emp order by ename (asc 생략 가능);

 

 

 

 

'KH > Oracle' 카테고리의 다른 글

# 6 오라클 숫자, 문자 함수  (0) 2022.08.24
# 5 DUAL 테이블  (0) 2022.08.24
# 3 between , in , %,_  (0) 2022.08.23
# 2 비교연산자, 논리연산자  (0) 2022.08.22
# 1 오라클의 데이터형과 몇가지 명령어들  (0) 2022.08.22