• 분류 전체보기 (160)
    • 개인프로젝트 (5)
      • 시연영상모음 (4)
      • 주저리주저리.. (1)
    • 자바스크립트이야기 (69)
      • ExtJS (30)
      • ExtJS 유의사항 (3)
      • HTML5 (1)
      • jQuery (17)
      • jQuery플러그인소개 (9)
      • jQuery UI 소개 (9)
    • 스프링연동하기 (23)
      • spring3 mvc 설정 (4)
      • spring3 mybatis 설정 (4)
      • spring3 기타설정 (11)
      • ibatis and mybatis (4)
    • DB (26)
      • MySQL vs MS-SQL vs O.. (5)
      • MySQL (10)
      • MSSQL (5)
      • Oracle (6)
    • 서버에웹환경구축하기 (13)
      • 1.VirtualBox+CentOS .. (5)
      • 2.JAVA(JDK) 설치 (1)
      • 3.Apache+Tomcat 설치 (3)
      • 4,SVN Server 설치 (1)
      • 5.마리아DB(MariaDB) 설치 (2)
      • 6.몽고DB(MongoDB)설치 (1)
    • 샘플소스 (14)
      • 샘플소스(JAVA) (7)
      • 샘플소스(JSTL) (4)
      • 샘플소스(jQuery/스크립트) (3)
    • 에디터연동 (5)
      • NAVER-스마트에디터 (4)
      • DAUM-다음에디터 (1)
    • 블로그팁 (3)
    • 디지털이야기 (2)
댓글
DB/Oracle
6
/161
2014. 8. 24. 13:33
Oracle - if ~ else 조건문 사용하기 : DECODE


2014/08/24 - [DB/MySQL] - MySQL - if ~ else 조건문 사용하기 : if



이번 포스팅은 Oracle 단일 조건문에 대하여 설명하고자 한다.


Oracle에서 제공하는 DECODE를 이용하여 조건에 따른 데이터를 변경해 보겠음

테이블은 이전에 포스팅한 ORACLE - NULL_TABLE 기준으로 설명을 진행하겠음


2014/08/23 - [DB/Oracle] - 오라클 - 널체크(NVL 사용하기)


DECODE 적용

사용법 : DECODE(비교컬럼명,비교값,'참일경우','거짓일경우')


SELECT null_text,DECODE(null_text,null,'널입니다','널이아닙니다') null_str 
  FROM null_table




요약


NULL_TEXT 컬럼의 값이 조건이               

TRUE 일 경우 - '널입니다' 문자열 치환

FALSE일 경우 - '널이아닙니다' 문자열 치환


널체크일 경우는 NVL을 이용하도 가능하지만 

널체크 외에 다른 조건을 비교할경우에는 DECODE를 사용하면 되겠다.


※ 단일 조건문의 경우 DECODE를 사용해도 되지만

    다중조건일 경우는 CASE를 사용하면 되겠다


슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!



저작자표시 비영리 변경금지 (새창열림)

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

오라클 - 널체크(NVL 사용하기)  (0) 2014.08.23
ORACLE 오라클 rownum을 이용하여 페이징 처리하기  (0) 2014.08.15
오라클(Oracle) 데이터를 일괄로 다른테이블에 INSERT 하기 (INSERT INTO ... SELECT ... FROM ...)  (2) 2014.08.13
오라클 계층형 트리구조 쿼리 (재귀호출) - START WITH .. CONNECT BY PRIOR  (0) 2014.08.12
오라클(Oracle) sequence 생성, 등록, 최종 시퀀스값 조회하기  (2) 2014.08.11
/159
2014. 8. 23. 20:52
오라클 - 널체크(NVL 사용하기)


2014/08/23 - [DB/MySQL] - MySQL - 널체크(IFNULL 사용하기)


2014/08/23 - [DB/MSSQL] - MS-SQL - 널체크(ISNULL 사용하기)


이어서 ORACLE 널체크(NVL)에 대하여 포스팅을 해보고자 한다.


1. CREATE TABLE


CREATE TABLE NULL_TABLE(
   NULL_TEXT NVARCHAR2(20)
)

2. INSERT DATA


insert into null_table(null_text)
values('test1');
insert into null_table(null_text)
values(null);
insert into null_table(null_text)
values('test2');
insert into null_table(null_text)
values(null);
insert into null_table(null_text)
values('test3');

3. SELECT TABLE


SELECT * 
FROM null_table



4. NVL 적용

   사용법 : NVL(컬럼,'컬럼이 NULL일경우 대체값')


select null_text, NVL(null_text,'널입니다') null_check
from null_table




슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!

저작자표시 비영리 변경금지 (새창열림)

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

Oracle - if ~ else 조건문 사용하기 : DECODE  (0) 2014.08.24
ORACLE 오라클 rownum을 이용하여 페이징 처리하기  (0) 2014.08.15
오라클(Oracle) 데이터를 일괄로 다른테이블에 INSERT 하기 (INSERT INTO ... SELECT ... FROM ...)  (2) 2014.08.13
오라클 계층형 트리구조 쿼리 (재귀호출) - START WITH .. CONNECT BY PRIOR  (0) 2014.08.12
오라클(Oracle) sequence 생성, 등록, 최종 시퀀스값 조회하기  (2) 2014.08.11
/147
2014. 8. 15. 18:21
ORACLE 오라클 rownum을 이용하여 페이징 처리하기


2014/08/15 - [DB/MySQL] - MySQL LIMIT를 사용하여 페이징쿼리를 동작시켜보자


2014/08/15 - [DB/MSSQL] - MS-SQL 2005 이상 row_number() over(order by 정렬조건) 을 이용하여 페이징쿼리를 동작시켜보자



이번에는 ORACLE의  rownum 을 이용하여 페이징 처리를 다루도록 보도록 하자



1.  create table 생성

CREATE TABLE PAGE_TABLE (
	"IDX" NUMBER,
 	"TITLE" VARCHAR2(100),
 	"CONTENT" VARCHAR2(200)
) 

2. 가상의 데이터 IMPORT


page_table_data.sql



그렇다면 이제 페이징 테스트를 해보도록 하겠음.

각 페이징 처리를 할때마다 20개씩 출력해보도록 하겠다.


쿼리는 다음과 같다.

-- 1페이지 
select *
from (SELECT *
		FROM (
  			SELECT rownum rnum,idx,title,content
    		FROM page_table
			) pagetable
		where rnum <= 20
	)
where rnum >= 1;
-- 2페이지
select *
from (SELECT *
		FROM (
  			SELECT rownum rnum,idx,title,content
    		FROM page_table
			) pagetable
		where rnum <= 40
	)
where rnum >= 21;
.
.
.
-- 5페이지
select *
from (SELECT *
		FROM (
  			SELECT rownum rnum,idx,title,content
    		FROM page_table
			) pagetable
		where rnum <= 100
	)
where rnum >= 81;

3, 실 행 하 기

1페이지





2페이지





5페이지









ROWNUM


쉽게 생각해서 테이블 데이터아 rownum이라는 컬럼을 추가해서 1부터 출력된 테이블의 갯수를 

순차적으로 증가 시켜주는거라고 생각하면 될것이다.



슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!

저작자표시 비영리 변경금지 (새창열림)

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

Oracle - if ~ else 조건문 사용하기 : DECODE  (0) 2014.08.24
오라클 - 널체크(NVL 사용하기)  (0) 2014.08.23
오라클(Oracle) 데이터를 일괄로 다른테이블에 INSERT 하기 (INSERT INTO ... SELECT ... FROM ...)  (2) 2014.08.13
오라클 계층형 트리구조 쿼리 (재귀호출) - START WITH .. CONNECT BY PRIOR  (0) 2014.08.12
오라클(Oracle) sequence 생성, 등록, 최종 시퀀스값 조회하기  (2) 2014.08.11
/144
2014. 8. 13. 10:43
오라클(Oracle) 데이터를 일괄로 다른테이블에 INSERT 하기 (INSERT INTO ... SELECT ... FROM ...)


2014/08/12 - [DB/MySQL] - MySQL SELECT 쿼리로 한꺼번에 다른 테이블에 INSERT 하기 (INSERT ... SELECT ... FROM ...)


2014/08/13 - [DB/MSSQL] - MS-SQL SELECT 쿼리로 다른 테이블로 INSERT (INSERT SELECT FROM , SELECT INTO FROM)


오라클에서 데이터 이관하는 작업과 같은 일괄로 다른 테이블에 INSERT해야하는 경우가 생긴다.

이럴경우 INSERT INTO .. SELECT ... FROM 을 이용하여 다른 테이블에 데이터를 

일괄 등록이 가능하다


간단하게 진행을 해보도록 하자


1. original_table 생성 (기존 테이블)

create table original_table (
  id varchar(10),
  title varchar(20),
  flag varchar(1)
)

2. new_table 생성(데이터 이관하기 위한 신규 테이블)

create table new_table (
  id varchar(10),
  title varchar(20)
)

3. original_table에 임의 데이터 생성

insert into original_table (id,title,flag) values('1','제목11','Y');
insert into original_table (id,title,flag) values('2','제목22','Y');
insert into original_table (id,title,flag) values('3','제목33','Y');
insert into original_table (id,title,flag) values('4','제목44','Y');
insert into original_table (id,title,flag) values('5','제목55','Y');
insert into original_table (id,title,flag) values('6','제목66','Y');
insert into original_table (id,title,flag) values('7','제목77','Y');
insert into original_table (id,title,flag) values('8','제목88','N');
insert into original_table (id,title,flag) values('9','제목99','Y'); 

4. original_table -> new_table 로 flag값이 N인 데이터만 이관

    (예상 결과 = id값이 8인 데이터만 insert 되겠지? ㅎㅎ)

INSERT INTO new_table(id,title)
SELECT id,title
  FROM original_table 
WHERE flag = 'N'

5. 신규 테이블에 INSERT 데이터 확인

SELECT * FROM new_table

- 실행결과



역시 예상대로 ID값이 8인 데이터만 INSERT 되었다.

일괄로 모든 데이터 넣고 싶을경우에는 WHERE 조건만 빼면 될것이다.




슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!

저작자표시 (새창열림)

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

Oracle - if ~ else 조건문 사용하기 : DECODE  (0) 2014.08.24
오라클 - 널체크(NVL 사용하기)  (0) 2014.08.23
ORACLE 오라클 rownum을 이용하여 페이징 처리하기  (0) 2014.08.15
오라클 계층형 트리구조 쿼리 (재귀호출) - START WITH .. CONNECT BY PRIOR  (0) 2014.08.12
오라클(Oracle) sequence 생성, 등록, 최종 시퀀스값 조회하기  (2) 2014.08.11
/139
2014. 8. 12. 00:30
오라클 계층형 트리구조 쿼리 (재귀호출) - START WITH .. CONNECT BY PRIOR


2014/08/12 - [DB/MSSQL] - MS-SQL 계층형 트리구조 쿼리 (재귀호출) - with ...(col 1, col 2 ...,col n) as ... union .


이번 포스팅은 계층형 트리구조 쿼리를 이요하여 트리구조 출력을 하려한다.


오라클에서 계층형 트리는


START WITH .. CONNECT BY PRIOR 구문을 이용하여 트리구조를 심플하게 출력할 수 있다.


데이터 예를 들도록 해보자


1. 테이블 생성

create table tree_table(
	id number not null,
    parent_id number not null,
    name nvarchar2(30) not null
);

2. 트리쿼리 출력을 위한 임의의 데이터 생성

-- 1depth 
insert into tree_table(id,parent_id,name)
values(1,0,'1depth 1');
insert into tree_table(id,parent_id,name)
values(2,0,'1depth 2');
insert into tree_table(id,parent_id,name)
values(3,0,'1depth 3');

-- 2depth 1
insert into tree_table(id,parent_id,name)
values(4,1,'2depth 1-1');
insert into tree_table(id,parent_id,name)
values(5,1,'2depth 1-2');
insert into tree_table(id,parent_id,name)
values(6,1,'2depth 1-3');

-- 2depth 2
insert into tree_table(id,parent_id,name)
values(7,2,'2depth 2-1');
insert into tree_table(id,parent_id,name)
values(8,2,'2depth 2-2');
insert into tree_table(id,parent_id,name)
values(9,2,'2depth 2-3');

-- 3depth 1
insert into tree_table(id,parent_id,name)
values(10,4,'3depth 1-1');
insert into tree_table(id,parent_id,name)
values(11,4,'3depth 1-2');
insert into tree_table(id,parent_id,name)
values(12,4,'3depth 1-3');

3. 재귀쿼리로 트리목록 출력

SELECT id,parent_id,name, LTRIM (SYS_CONNECT_BY_PATH (name, ' > '), ' > ') AS depth_fullname
 FROM tree_table 
 START WITH parent_id = 0
 CONNECT BY PRIOR id=parent_id

위의 재귀쿼리 실행결과를 확인해 보도록 하자 






※ ORACLE 11g 에서 ms-sql 2005에서 제공되는 재귀쿼리가 동일하게 동작된다. 

    다음과 같이 쿼리문을 주어서 실행 하더라도 같은 결과가 출력된다.


WITH tree_query(id,parent_id,name,sort, depth_fullname)  AS 
(
  SELECT  
         id
       , parent_id
       , name
       , ''||id as sort
       , ''||name as depth_fullname
    FROM tree_table
    WHERE parent_id = 0
    UNION ALL 
    SELECT
          B.id
        , B.parent_id
        , B.name
        , C.sort || ' > ' || B.id as sort
        , C.depth_fullname || ' > ' || B.name as  depth_fullname
    FROM  tree_table B, tree_query C
    WHERE B.parent_id = C.id
) 
SELECT id, parent_id, name,depth_fullname FROM tree_query order by sort



위와같이 트리구조로 잘 조회되었다.


   1depth 1

   |

   -------- 2depth 1-1

   |                 |

   |                 ---- 3depth 1-1

   |                 |

   |                 ---- 3depth 1-2

   |                 |

   |                 ---- 3depth 1-3

   -------- 2depth 1-2

   |

   -------- 2depth 1-3

   |

   1depth 2

   |

   -------- 2depth 2-1

   |

   -------- 2depth 2-2

   |

   -------- 2depth 2-2

   |   

   1depth 3


위와같은 구조로 출력된 셈이다.

잘 활용해서 실무에 적용해보도록 합시다~ 파이팅

   


슈퍼맨슈퍼맨슈퍼맨



도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!

저작자표시 (새창열림)

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

Oracle - if ~ else 조건문 사용하기 : DECODE  (0) 2014.08.24
오라클 - 널체크(NVL 사용하기)  (0) 2014.08.23
ORACLE 오라클 rownum을 이용하여 페이징 처리하기  (0) 2014.08.15
오라클(Oracle) 데이터를 일괄로 다른테이블에 INSERT 하기 (INSERT INTO ... SELECT ... FROM ...)  (2) 2014.08.13
오라클(Oracle) sequence 생성, 등록, 최종 시퀀스값 조회하기  (2) 2014.08.11
이전 1 2 다음

티스토리툴바