2015. 4. 21. 17:07



[SQL]

SELECT *
  FROM
      (
       SELECT A.OWNER
            , A.TABLE_NAME
            , B.COMMENTS AS TABLE_NAME_CO
            , C.COLUMN_ID
            , C.COLUMN_NAME
            , D.COMMENTS AS COLUMN_NAME_CO
            , C.DATA_TYPE || CASE WHEN C.DATA_TYPE IN ('VARCHAR2','CHAR')          THEN ' (' || C.CHAR_LENGTH || ' Byte)'
                                  WHEN C.DATA_TYPE = 'NUMBER' AND C.DATA_SCALE > 0 THEN ' (' || C.DATA_PRECISION ||','|| C.DATA_SCALE ||')'
                                  WHEN C.DATA_TYPE = 'NUMBER' AND C.DATA_SCALE = 0 THEN ' (' || C.DATA_PRECISION ||')'
                                  ELSE C.DATA_TYPE END AS DATA_TYPE
            , C.NULLABLE
            , (SELECT POSITION
                 FROM ALL_CONS_COLUMNS Y
                    , ALL_CONSTRAINTS Z
                WHERE Y.OWNER           = Z.OWNER
                  AND Y.TABLE_NAME      = Z.TABLE_NAME
                  AND Y.CONSTRAINT_NAME = Z.CONSTRAINT_NAME
                  AND Z.CONSTRAINT_TYPE = 'P'
                  AND Y.OWNER           = A.OWNER
                  AND Y.TABLE_NAME      = A.TABLE_NAME
                  AND Y.COLUMN_NAME     = C.COLUMN_NAME) AS COL_PK
            , C.DATA_DEFAULT AS COL_DEFAULT
         FROM ALL_TABLES       A
            , ALL_TAB_COMMENTS B
            , ALL_TAB_COLUMNS  C
            , ALL_COL_COMMENTS D
        WHERE A.OWNER       = B.OWNER
          AND A.TABLE_NAME  = B.TABLE_NAME
            AND C.OWNER       = A.OWNER
          AND C.TABLE_NAME  = A.TABLE_NAME
          AND D.OWNER       = A.OWNER
          AND D.TABLE_NAME  = A.TABLE_NAME
          AND D.COLUMN_NAME = C.COLUMN_NAME
      )
 WHERE OWNER LIKE '%'
   AND TABLE_NAME LIKE '%'
 ORDER BY TABLE_NAME, COLUMN_ID



엑셀 문서작업 한다고 필요해서 작업했던 것인데 나중에 또 써먹을 것 같아서 보관...



Posted by 해비
2013. 3. 11. 08:58


ALTER TABLE 테이블명 (+ 아래 옵션)

 ADD              (컬럼 속성(길이));
 RENAME        COLUMN 컬럼 TO 컬럼;
 MODIFY        (컬럼 속성(길이));
 
MODIFY        (컬럼 속성(길이) DEFAULT 'Value');
 DROP            (컬럼);
 CONSTRAINT PK_테이블명 PRIMARY KEY(컬럼명)

*속  성 : NUMBER, VARCHAR2, DATE 등
*길  이 : 정수값
*테이블 : 테이블명
*컬  럼 : 컬럼명
*DEFAULT : 값 (값이 입력되지 않을 경우, 디폴트로 들어가는 값)


구문 예)

 ALTER TABLE 테이블 ADD (컬럼 속성(길이));
 ALTER TABLE TBLTEST ADD(UNICOST NUMBER(10));
 ALTER TABLE TBLTEST MODIFY(USE_YN VARCHAR2(1) DEFAULT 'Y');



좀 더 보기 쉽게 표로 정리 하였습니다.



Posted by 해비
2013. 3. 11. 08:50


INSERT

 INSERT INTO 테이블 VALUES (값, 값, 값...);
 INSERT INTO 테이블 (컬럼, 컬럼, 컬럼...) VALUES (값, 값, 값...);


UPDATE

 UPDATE 테이블 SET 컬럼=값 WHERE 컬럼=값

- WHERE 이하 생략가능
   (단, 생략시 모든 ROW를 대상으로 값을 세팅하므로 주의)


DELETE

 DELETE FROM 테이블 WHERE 컬럼=값

- WHERE 이하 생략가능
  (주의점은 UPDATE문과 동일)



Posted by 해비
2009. 12. 8. 17:22


Microsoft Office 2007 삭제 후 ODAC설치.



Posted by 해비
2009. 12. 2. 16:01

ORA-01861 literal does not match format string 

원인 : 문자 형식이 일치 하지 않음으로 발생하는 문제.

예) DATE 형식의 칼럼에 String 형식의 값을 대입할 경우... 등

해결) TO_DATE('2009-12-02','YYYY-MM-DD')




그러나 같은 소스파일인데 다른곳에서는 잘 되는 경우...

즉 한 곳에서는 그냥 정상적으로 실행되는 쿼리가 그대로 가져왔는데 안된다면 문자셋을 확인해 보기 바랍니다.


[환경변수] (instant client 10g 기준)

변수 이름 : NLS_LANG // 변수 값 :  KOREAN_KOREA.KO16MSWIN949
변수 이름 : TNS_ADMIN // 변수 값 : C:\Ora\instantclient

* TNS_ADMIN 경로는 자신의 컴퓨터에 오라클 instantclient 가 설치되어있는 경로를 지정합니다.


레지스트리 부분 

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
키 : NLS_LANG // 값 : KOREAN_KOREA.KO16MSWIN949


Posted by 해비
2009. 11. 17. 09:37

REPLACE
값을 치환합니다.


구문
REPLACE(String, str1, str2)
String 치환할 값이 들어있는 칼럼 입니다.
str1 치환할 대상 값 입니다.
str2 바뀔 값 입니다.


예)
SELECT REPLACE('2001-01-01','-','') FROM DUAL 의 결과값은 
20010101 입니다.

REPLACE()를 붙여서 '-'를 ''로(제거)한 예시 입니다.

Posted by 해비
2009. 11. 13. 15:23

TRUNC
수의 소수점 이하를 버리고 정수로 변환합니다.

구문
TRUNC(number,num_digits)
number 소수점 이하를 버릴 수입니다.
num_digits 소수점 이하를 무시할 정밀도를 나타내는 수입니다. 기본값은 0입니다.


구문2
TRUNC(SYSDATE)
SYSDATE 현재 시스템 날짜&시간 입니다.

예)
시스템 날짜 SELECT SYSDATE FROM DUAL 의 결과값은 
2009-11-16 오후 3:06:53 입니다.

TRUNC()를 붙이게 되면 시간부분은 잘려나가게 됩니다.

SELECT TRUNC(SYSDATE) FROM DUAL 의 결과값은
2009-11-16 입니다.

Posted by 해비
2009. 11. 13. 15:22

SUBSTR
지정한 범위의 문자를 잘라서 추출합니다.


구문
SUBSTR("string",num_start,num_end)
string 문자열 입니다.
num_start 잘라낼 시작 위치 입니다.
num_end 잘라낼 마지막 위치 입니다.

예문
substr("abcdef",1,4) 또는 substr("abcdef",1,-1)
"bcde"를 반환

문자열 adcdef에서 a(0), b(1), c(2), d(3), e(4), f(5) 가됩니다.
Posted by 해비
2009. 11. 13. 15:21

DECODE
값을 비교하여 해당하는 값을 리턴


구문
DECODE(column,조건,실행,조건2,실행2,...기본값)

예문
select decode(i_name, "홍길동", 1, 0) VALUE
from table1
where i_no = "12345678"

table1 에서 i_no의 값이 "12345678"인 필드의값을 추출해서 i_name이 홍길동이면 1, 아니면 0 을 VALUE로 리턴

결과 (i_name = "홍길동")
VALUE
1
Posted by 해비
2009. 11. 13. 15:21

NVL
값이 NULL일 경우 기본값으로 치환 합니다.

구문
NVL(column, default_value)
column 칼럼입니다.
default_value 지정되어질 기본값 입니다.

예문
NVL(num1, 10)
num1이 Null 일 경우, 10으로 치환
Posted by 해비