반응형
SELECT

      ROUND(123.4567,1)  AS T11   /* 반올림(소수점 둘째자리 반올림) */
    , ROUND(123.4567,0)  AS T12   /* 반올림(소수점 첫째자리 반올림) */
    , ROUND(123.4567,-1) AS T13   /* 반올림(정수 첫째자리 반올림) */
    
    , CEIL(123.4567)       AS T21   /* 소수점 첫재짜리 올림 */
    , CEIL(123.4567*10)/10 AS T22   /* 소수점 둘째자리 올림 */
    
    , TRUNC(123.4567,1)  AS T31   /* 버림(소수점 둘째자리 버림) */
    , TRUNC(123.4567,0)  AS T32   /* 버림(소수점 첫째자리 버림) */
    , TRUNC(123.4567,-1) AS T33   /* 버림(정수 첫째자리 버림) */
FROM DUAL
반응형
반응형
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') T1              --20210331
     , TO_CHAR(SYSDATE, 'YYYY/MM/DD') T2            --2021/03/31
     , TO_CHAR(SYSDATE, 'YYYY-MM-DD') T3            --2021-03-31
     , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') T4 --2021-03-31 13:15:31
     , TO_CHAR(SYSDATE, 'MM/DD') T5                 --03/31
     , TO_CHAR(SYSDATE, 'FMMM/DD') T6               --3/31
     , TO_CHAR(SYSDATE,'Mon DD, YYYY','NLS_DATE_LANGUAGE=ENGLISH') T5 -- Mar 31, 2021
     , TO_CHAR(SYSDATE,'Mon-YY','NLS_DATE_LANGUAGE=ENGLISH') T6 -- Mar-21
  FROM DUAL
반응형
반응형

운영서버에서 테스트 서버로 데이터 데이터 이관시, 가끔 시퀀스가 안맞아서 중복오류가 발생하곤 한다.

시퀀스 시작 번호를 지정숫자로 변경하는 방법은 다음과 같다.

예 1-> 1000으로 변경

alter sequence SEQ_01 increment by 1000;   // 증가번호를 1000으로 변경

select SEQ_01.nextval from dual;    // 적용

alter sequence SEQ_01 increment by 1;   // 증가번호를 1로 변경

 

반응형
반응형

select

'ALTER TABLE ' || TABLE_NAME || ' ADD ( ' || COLUMN_NAME || '_TMP VARCHAR2(' || DATA_LENGTH || ')); ' ||
'UPDATE ' || TABLE_NAME || ' SET ' || COLUMN_NAME || '_TMP = ' || COLUMN_NAME || '; ' ||
'UPDATE ' || TABLE_NAME || ' SET ' || COLUMN_NAME || ' = NULL; '||
'ALTER TABLE ' || TABLE_NAME || ' MODIFY ( ' || COLUMN_NAME || ' VARCHAR2(' || DATA_LENGTH || ')); ' ||
'UPDATE ' || TABLE_NAME || ' SET ' || COLUMN_NAME || ' = ' || COLUMN_NAME || '_TMP; ' ||
'ALTER TABLE ' || TABLE_NAME || ' DROP COLUMN ' || COLUMN_NAME || '_TMP; ' AS SQL

from all_tab_columns
where data_type like 'NVARCHAR%'
and OWNER = 'LLC'
ORDER BY TABLE_NAME;

반응형

'데이터베이스 > Oracle' 카테고리의 다른 글

오라클 날짜 포멧 골라 쓰기  (0) 2021.03.31
[Oracle] 시퀀스 시작 숫자 변경  (0) 2019.05.14
Orange for Oracle 단축키  (0) 2019.01.28
[oracle]GREATEST, LEAST 함수  (0) 2018.06.22
Oracle 달력 쿼리  (0) 2016.10.13
반응형

자주 사용하는 Orange Hotkey(단축키) .

공통

F4: Object Info Ddisplay

Alt + C : Table 에서 마우스 포커스 > Column Display

.SQL-Tool : DDL, DML 가능

F5: 실행

Explain Plan 정보 View는 가능.PL/SQL Tool : PL/SQL Compile, Edit

Plan 에서 더블클릭 > Statics 정보

복사

코드 선택 > 오른쪽버튼 > copy to clipboard > 언어선택 : ctrl+shift + c

코드 선택 > 오른쪽버튼 > paste from clipboard > 언어선택 : ctrl+shift + c

실행

.Plan Tool : Explain Plan, Trace , Schema Display

F5: Plan 보기

F9: Trace 보기

ctrl + L : 선택만

ctrl + M : 현재라인 아래로

ctrl + J : 현재라인

ctrl + K : 현재커서

화면분할

Alt + Down : script editore 전체

Alt + Up : 밑에 정보만

Alt + Right : ..

Alt + Shift + 방향키 : 블럭 복사

Ctrl + D : 현재 라인 복사(아래로)

반응형
반응형
MAX, MIN은 한 컬럼의 최대값 최소값

GREATEST, LEAST는 복수 컬럼중 최대값, 최소값

Ex)
MAX(COL) or MIN(COL)
GREATEST(COL1,COL2,COL3) or LEAST(COL1,COL2,COL3)

반응형

'데이터베이스 > Oracle' 카테고리의 다른 글

[ORACLE] 테이블 컬럼 유형 변경시 참고 쿼리  (0) 2019.04.09
Orange for Oracle 단축키  (0) 2019.01.28
Oracle 달력 쿼리  (0) 2016.10.13
[오라클]그룹별 순번 만들기  (0) 2013.06.21
[오라클]유저생성  (0) 2013.04.09
반응형

년도와 월이 주어졌을 경우, 해당 월의 달력을 생성해주는 쿼리를 만들어 보자.
쿼리는 아래와 같다. (2000년 01월이 주어졌을 경우)


SELECT   MIN (DECODE (TO_CHAR (days, 'd'), 1, TO_CHAR (days, 'fmdd'))) 일,
         MIN (DECODE (TO_CHAR (days, 'd'), 2, TO_CHAR (days, 'fmdd'))) 월,
         MIN (DECODE (TO_CHAR (days, 'd'), 3, TO_CHAR (days, 'fmdd'))) 화,
         MIN (DECODE (TO_CHAR (days, 'd'), 4, TO_CHAR (days, 'fmdd'))) 수,
         MIN (DECODE (TO_CHAR (days, 'd'), 5, TO_CHAR (days, 'fmdd'))) 목,
         MIN (DECODE (TO_CHAR (days, 'd'), 6, TO_CHAR (days, 'fmdd'))) 금,
         MIN (DECODE (TO_CHAR (days, 'd'), 7, TO_CHAR (days, 'fmdd'))) 토
    FROM (SELECT     base_mon + LEVEL - 1 days,
                         (  TRUNC (base_mon + LEVEL - 1, 'd')
                          - TRUNC (TRUNC (base_mon + LEVEL - 1, 'y'), 'd')
                         ) / 7 + 1 week_grp
                FROM (SELECT TO_DATE ('200001', 'yyyymm') base_mon
                        FROM DUAL)
          CONNECT BY base_mon + LEVEL - 1 <= LAST_DAY (base_mon))
GROUP BY week_grp
ORDER BY week_grp 



connect by level 절을 사용하지 못하는 버전일 경우에는, 아래와 같이 dict 테이블을 이용한다.
아래 예는 위의 쿼리 와는 다르게 오늘로부터 몇달 후인지를 나타내는 변수 :n에 따라 달력을 생성한다.
(:n=-1 일 경우 지난달, 0은 이번달, 1은 다음달, 2는 다다음달,...)


SELECT   MIN (DECODE (TO_CHAR (days, 'd'), 1, TO_CHAR (days, 'fmdd'))) 일,
         MIN (DECODE (TO_CHAR (days, 'd'), 2, TO_CHAR (days, 'fmdd'))) 월,
         MIN (DECODE (TO_CHAR (days, 'd'), 3, TO_CHAR (days, 'fmdd'))) 화,
         MIN (DECODE (TO_CHAR (days, 'd'), 4, TO_CHAR (days, 'fmdd'))) 수,
         MIN (DECODE (TO_CHAR (days, 'd'), 5, TO_CHAR (days, 'fmdd'))) 목,
         MIN (DECODE (TO_CHAR (days, 'd'), 6, TO_CHAR (days, 'fmdd'))) 금,
         MIN (DECODE (TO_CHAR (days, 'd'), 7, TO_CHAR (days, 'fmdd'))) 토
    FROM (SELECT base_mon + ROWNUM - 1 days,
                     (  TRUNC (base_mon + ROWNUM - 1, 'd')
                      - TRUNC (TRUNC (base_mon + ROWNUM - 1, 'y'), 'd')
                     )
                   / 7
                 + 1 week_grp
            FROM (SELECT TRUNC (ADD_MONTHS (SYSDATE, :n), 'mm') base_mon
                    FROM DUAL), dict
           WHERE base_mon + ROWNUM - 1 <= LAST_DAY (base_mon))
GROUP BY week_grp
ORDER BY week_grp

반응형

'데이터베이스 > Oracle' 카테고리의 다른 글

Orange for Oracle 단축키  (0) 2019.01.28
[oracle]GREATEST, LEAST 함수  (0) 2018.06.22
[오라클]그룹별 순번 만들기  (0) 2013.06.21
[오라클]유저생성  (0) 2013.04.09
행을 열로 표시하기  (0) 2011.10.14
반응형


SELECT

MASTER_CODE

,CODE

,VALUE

,RANK() OVER(PARTITION BY MASTER_CODE ORDER BY MASTER_CODE, CODE)

from NAME_MT

ORDER BY MASTER_CODE, CODE ;



반응형

'데이터베이스 > Oracle' 카테고리의 다른 글

Orange for Oracle 단축키  (0) 2019.01.28
[oracle]GREATEST, LEAST 함수  (0) 2018.06.22
Oracle 달력 쿼리  (0) 2016.10.13
[오라클]유저생성  (0) 2013.04.09
행을 열로 표시하기  (0) 2011.10.14
반응형

oracle DB 를 설치하고, instance 를 만들어서 start 를 했다면 이제 유저를 생성할 차례..
(oracle 11g 에서 테스트 해봄)

1. tablespace 를 생성
SQL> create tablespace 테이블스페이스_네임 datafile '데이타파일위치(절대경로)' size 용량;
SQL> create tablespace test_ts01 datafile '/data1/oradata/test_ts01_data01.dbf' size 1024M;

-> 인덱스용 테이블 스페이스도 미리 생성하자
SQL> create tablespace test_ti01 datafile '/data1/oradata/test_ti01_indx01.dbf' size 1024M;

2. 유저 생성
SQL> create user 아이디 identified by 패스워드 default tablespace 테이블스페이스_네임 temporary tablespace temp;
SQL> create user test identified by testpassword default tablespace test_ts01 temporary tablespace temp;

3. 권한 부여
SQL> grant connect, resource to 아이디;
SQL> grant connect, resource to test;

ps. 참고로 각 내용들의 조회 방법

유저 조회
select username, default_tablespace, temporary_tablespace, account_status, profile from dba_users order by 1;

테이블스페이스 상태 조회
select tablespace_name, status, contents, extent_management, segment_space_management from dba_tablespaces order by 1;

데이터파일 상태 조회
select tablespace_name, bytes, file_name from dba_data_files order by 1;

사용자에게 할당된 시스템 권한 조회
select grantee, privilege from dba_sys_privs where lower(grantee) in ('아이디') order by 1;

권한의 묶음인 롤 확인
select grantee, granted_role from dba_role_privs where lower(grantee) in ('아이디') order by 1;

반응형

'데이터베이스 > Oracle' 카테고리의 다른 글

Orange for Oracle 단축키  (0) 2019.01.28
[oracle]GREATEST, LEAST 함수  (0) 2018.06.22
Oracle 달력 쿼리  (0) 2016.10.13
[오라클]그룹별 순번 만들기  (0) 2013.06.21
행을 열로 표시하기  (0) 2011.10.14
반응형

http://blog.naver.com/nanandayo?Redirect=Log&logNo=60094984184

http://blog.naver.com/xxeno?Redirect=Log&logNo=150073442665

계층형 쿼리 ( START WITH ..... CONNECT BY PRIOR ) ORACLE
http://www.cyworld.com/ajkwin79/2741234

SELECT LEVEL, EMPNO, MGR

  FROM  EMP

START  WITH MGR IS NULL

CONNECT BY PRIOR EMPNO = MGR;

http://cyhome.cyworld.com/?home_id=a1672930&postSeq=1882815

반응형

'데이터베이스 > Oracle' 카테고리의 다른 글

Orange for Oracle 단축키  (0) 2019.01.28
[oracle]GREATEST, LEAST 함수  (0) 2018.06.22
Oracle 달력 쿼리  (0) 2016.10.13
[오라클]그룹별 순번 만들기  (0) 2013.06.21
[오라클]유저생성  (0) 2013.04.09

+ Recent posts