반응형

CREATE SEQUENCE sequence_name
       [INCREMENT BY n1]
       [START WITH n2]
       [MAXVALUE n3 or NOMAXVALUE]
       [MINVALUE n4 or NOMINVALUE]
       [CYCLE or NOCYCLE]
       [CACHE or NOCACHE];


sequence_name ....... 생성하고자 하는 시퀀스 명
INCREMENT BY n1 ... 해당 시퀀스의 증가값을 지정한다. 생략하면 1로 지정됨.

                                오름차순 : 양의 정수, 내림차순 : 음의정수 사용
START WITH n2 ........ 해당 시쿼스가 처음 시작하는 값을 지정한다. 생략하면 1로 지정됨.
MAXVALUE n3 ......... 해당 시퀀스가 생성할 수 있는 최대값,
NOMAXVALUE ......... 오름차순 최대 10의 27승 까지, 내림차순 -1 까지 생성됨.
MINVALUE n4 .......... 해당 시퀀스가 생성할 수 있는 최소값
NOMINVALUE .......... 오름차순 1 까지, 내림차순 -10의 26승 까지
CYCLE ................... 해당 시퀀스가 최대값에 도달한 후 다시 처음부터 시퀀스를 생성한다.
NOCYCLE ............... 해당 시퀀스가 최대값에 도달해도 다시 생성하지 않는다.[DEFAULT]
CACHE ................... 시퀀스 값을 메모리에 할당하여 처리한다. [ORACLE DEFAULT 20]
NOCACHE ............... 시퀀스를 메모리에 할당하여 사용하지 않음.


예)

CREATE SEQUENCE  TEST_SEQ  

        INCREMENT BY 1

        START WITH 1 

        MAXVALUE 99999999999

        NOCYCLE

        NOCACHE;


SELECT TEST_SEQ.NEXTVAL FROM DUAL;


사용자가 만든 시퀀스 조회

SELECT * FROM USER_SEQUENCES;

728x90
반응형
반응형
  1. SELECT
  2.    SYS_CONNECT_BY_PATH(ITM_NM,'>>')   HRCH_FULL_NM       -- 전체계층구조(이름)
  3. FROM  TABLE
  4.  
  5. WHERE ITM_CLSF_CD = '12131804'
  6. START WITH ITM_CD IS NULL
  7. CONNECT BY PRIOR ITM_CD  =  PARENT_ITM_CD

이렇게 쿼리를 작성하면


계층구조는 
ITEM >> ITEM >>  ITEM
이런 형식으로 나오게 된다.

START WITH ITM_CD IS NULL

ITM_CD IS NULL : ITM_CD 가 NULL 인것을  ROOT로 인식한다.

CONNECT BY PRIOR ITM_CD  =  PARENT_ITM_CD 

ITM_CD  =  PARENT_ITM_CD  : 하위코드와 상위코드의 관계를 정의한다.

728x90
반응형

'Development > DataBase' 카테고리의 다른 글

SQL 문 수행단계  (0) 2013.02.12
SQL 작성시 주의사항  (0) 2013.02.12
[SQL]REGEXP_SUBSTR  (0) 2011.12.20
[Oracle]세로 data를 가로로 변형하기 - LISTAGG  (0) 2011.11.08
[Oracle]ORDER BY 절에서 NULL 값 위치 지정  (0) 2011.09.26
반응형
오라클 10g부터 정규 표현식을 사용할수 있게 되었다ㅏ. 
REGEXP_SUBSTR 란 키워드이다. 아주 간편하게 필터링 할수 있다. ㅎㅎ

WITH TEMPTABLE AS 
       (SELECT IF_FILE_NM 
         FROM 
              (SELECT 'L6D0POMTK00020111116133559.txt' AS IF_FILE_NM 
                FROM DUAL 
                  UNION 
              SELECT '1K010POMPKP1020111117134202.txt' AS IF_FILE_NM 
                FROM DUAL 
                  UNION  
              SELECT 'W100W10002POMT20111122131003.txt' AS IF_FILE_NM 
                FROM DUAL  
                  UNION 
              SELECT 'E10000SWPOMT20111114232235_7942630.txt' AS IF_FILE_NM 
                FROM DUAL 
                  UNION 
              SELECT 'H10000GJPOMT201111221532409511.txt' AS IF_FILE_NM 
                FROM DUAL 
                  UNION 
              SELECT '1M114POMT20111122-184314-487.txt' AS IF_FILE_NM 
                FROM DUAL  
                  UNION 
              SELECT '1M114POMT20111122-221352-383.txt' AS IF_FILE_NM 
                FROM DUAL  
                  UNION 
              SELECT 'POGLNTIMK0.GDS.20111114222035' AS IF_FILE_NM 
                FROM DUAL 
              )  
       ) 
SELECT SUBSTR(REPLACE((REGEXP_SUBSTR(IF_FILE_NM , '([1-9]{1}[0-9]{13}|[1-9]{1}[0-9]{13}_[0-9]{7}|[1-9]{1}[0-9]{13}[0-9]{4}|[1-9]{1}[0-9]{7}-[0-9]{6}-[0-9]{3}).[a-zA-Z]{3}|[1-9]{1}[0-9]{13}$')),'-''' ) ,0 ,14) AS FILE_CRE_YMD 
  FROM TEMPTABLE


728x90
반응형
반응형
기존에 세로로 나온 DATA를 가로로 바꿀때에는 쿼리가 복잡했었지만 오라클 11g에서는 LISTAGG라는 함수를 사용해서 간단하게 만들수 있다. 

WITH RGN AS 
       (SELECT RGN_CD 
         FROM 
              (SELECT 'A' AS RGN_CD 
                FROM DUAL 
                  UNION 
              SELECT 'B' AS RGN_CD 
                FROM DUAL 
                  UNION 
              SELECT 'C' AS RGN_CD 
                FROM DUAL 
                  UNION 
              SELECT 'D' AS RGN_CD 
                FROM DUAL 
                  UNION 
              SELECT 'E' AS RGN_CD 
                FROM DUAL 
              ) 
       )  
SELECT LISTAGG(RGN_CD, ',') WITHIN GROUP (ORDER BY RGN_CD)AS RGN_CD 
  FROM RGN

결과
RGN_CD
--------
A,B,C,D,E 

쿼리도 복잡하지 않고 정말 한줄에 끝난다.!! 


728x90
반응형
반응형
DB : Oarcle

SELECT A.TABLE_NAME as 테이블명
     , B.COMMENTS as 테이블한글명
     , A.COLUMN_NAME as 컬럼명
     , C.COMMENTS as 컬럼한글명
     , A.DATA_LENGTH
     , A.DATA_TYPE     
     , A.NULLABLE
     , D.CONSTRAINT_NAME
     , D.CONSTRAINT_TYPE
FROM   ALL_TAB_COLUMNS A
, ALL_TAB_COMMENTS B
     , ALL_COL_COMMENTS C
     , ALL_CONSTRAINTS  D
WHERE  A.TABLE_NAME = B.TABLE_NAME
  AND  A.TABLE_NAME = C.TABLE_NAME
  AND  A.TABLE_NAME = D.TABLE_NAME
  AND  A.COLUMN_NAME = C.COLUMN_NAME
  AND  A.TABLE_NAME = :tableNm

CONSTRAINT_TYPE 을 'P' 로 설정해주면 입력한 테이블의 PK만 조회 가능하다. !

 
  
728x90
반응형
반응형
Column              DatatypeNULLDescription
OWNER VARCHAR2(30) NOT NULL Owner of the constraint definition
CONSTRAINT_NAME VARCHAR2(30) NOT NULL Name of the constraint definition
CONSTRAINT_TYPE VARCHAR2(1)   Type of the constraint definition:
  • C - Check constraint on a table

  • P - Primary key

  • U - Unique key

  • R - Referential integrity

  • V - With check option, on a view

  • O - With read only, on a view

  • H - Hash expression

  • F - Constraint that involves a REF column

  • S - Supplemental logging

TABLE_NAME VARCHAR2(30) NOT NULL Name associated with the table (or view) with the constraint definition
SEARCH_CONDITION LONG   Text of search condition for a check constraint
R_OWNER VARCHAR2(30)   Owner of the table referred to in a referential constraint
R_CONSTRAINT_NAME VARCHAR2(30)   Name of the unique constraint definition for the referenced table
DELETE_RULE VARCHAR2(9)   Delete rule for a referential constraint:
  • CASCADE

  • SET NULL

  • NO ACTION

STATUS VARCHAR2(8)   Enforcement status of the constraint:
  • ENABLED

  • DISABLED

DEFERRABLE VARCHAR2(14)   Indicates whether the constraint is deferrable (DEFERRABLE) or not (NOT DEFERRABLE)
DEFERRED VARCHAR2(9)   Indicates whether the constraint was initially deferred (DEFERRED) or not (IMMEDIATE)
VALIDATED VARCHAR2(13)   Indicates whether all data obeys the constraint (VALIDATED) or not (NOT VALIDATED)
GENERATED VARCHAR2(14)   Indicates whether the name of the constraint is user-generated (USER NAME) or system-generated (GENERATED NAME)
BAD VARCHAR2(3)   Indicates whether this constraint specifies a century in an ambiguous manner (BAD) or not (NULL). To avoid errors resulting from this ambiguity, rewrite the constraint using the TO_DATE function with a four-digit year.

See Also: the TO_DATE function in Oracle Database SQL Language Reference and Oracle Database Advanced Application Developer's Guide

RELY VARCHAR2(4)   Indicates whether an enabled constraint is enforced (RELY) or unenforced (NULL)

See Also: the constraints in Oracle Database SQL Language Reference

LAST_CHANGE DATE   When the constraint was last enabled or disabled
INDEX_OWNER VARCHAR2(30)   Name of the user owning the index
INDEX_NAME VARCHAR2(30)   Name of the index (only shown for unique and primary-key constraints)
INVALID VARCHAR2(7)   Indicates whether the constraint is invalid (INVALID) or not (NULL)
VIEW_RELATED VARCHAR2(14)   Indicates whether the constraint depends on a view (DEPEND ON VIEW) or not (NULL)


테이블의 PK, FK등을 찾을수 있다. 테이블에서 지정되어있는 not null 여부도 이 테이블을 조회해보면 확인할 수 있다.

출처 : ORACLE DOCUMENTATION LIBRARY
728x90
반응형

+ Recent posts