..
DEV/DB (46)
oracle 계정 추가 삭제
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

oracle$> sqlplus '/as sysdba'


SQL>show user
USER은 "SYS"입니다

SQL> create user userid identified by password default tablespace system;
사용자가 생성되었습니다.

SQL> grant connect, resource to userid;
권한이 부여되었습니다. ( 일반 적인 모든 기능 허용 )

SQL> conn userid/password
연결되었습니다.

계정 추가
create user 계정 identified by 패스워드
default tablespace 테이블 스페이스
temporary tablespace 임시 테이블 스페이스;

grant connect to 계정;
grant resource to 계정;

계정 삭제
drop user 계정 cascade;

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

ibatis  (0) 2009.11.24
오라클 함수  (0) 2009.06.30
[oracle] 자신이 원하는 순서대로 정렬하기  (0) 2009.06.23
  Comments,     Trackbacks
오라클 함수
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
REPLACE(B.NAME,SUBSTR(B.NAME,2,1),'*')

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

oracle 계정 추가 삭제  (0) 2009.09.22
[oracle] 자신이 원하는 순서대로 정렬하기  (0) 2009.06.23
날짜관련 쿼리  (0) 2009.04.15
  Comments,     Trackbacks
[oracle] 자신이 원하는 순서대로 정렬하기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
ORDER BY DECODE(OWNER,724,'01',OWNER)

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

오라클 함수  (0) 2009.06.30
날짜관련 쿼리  (0) 2009.04.15
select 문  (0) 2009.03.24
  Comments,     Trackbacks
날짜관련 쿼리
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. char -> date로 변경

쿼리

select to_date(substr('20140101113010123',0,14), 'yyyymmddhh24miss')
from dual;

설명 

17자리 문자를 substr 함수를 이용하여 14자리로 자르고 date 타입으로 변환


2. date -> char 변경

쿼리

select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS')
from dual;

설명
현재 날짜를 원하는 포맷으로 변경하기


3. 매달의 마지막 날 구하기

쿼리문

select LAST_DAY(TO_DATE(200902, 'YYYYMM'))
from dual;

결과

2009/02/28 00:00:00

4. Lpad : 왼쪽에 특정 문자 끼어 넣기

쿼리문

select LPAD(ROWNUM, 2, '0')  -- 두자리로 세팅하고 남으면 0으로
from dual;

5. 매달 모두 출력하기

쿼리문

SELECT 200902 || LPAD(ROWNUM, 2, '0') CHKDATE
        FROM   DUAL CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE(200902, 'YYYYMM')), 'DD');

결과

20090201
20090202
20090203
20090204
20090205
.
.
.

6. 선데이터를 점데이터로 변환 하기 위해서는 조인을 해야 한다.

조건1
copyt 테이블 이용 (숫자용/날짜용)

조건2
where sdate <= sysdate
and edate >= sysdate

7. CONNECT BY LEVEL < = 숫자

숫자보다 적은 수 뿌리기


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

[oracle] 자신이 원하는 순서대로 정렬하기  (0) 2009.06.23
select 문  (0) 2009.03.24
[sql] update join  (0) 2009.03.24
  Comments,     Trackbacks
select 문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

select 문을 만들 경우 필요한 값만 가져오는데 그러지 말고 다가져오자

왜냐면 나중에 쓸 경우도 있기 때문이다.

그때마다 select  문을 변경하는 경우 유지 보수가 힘들어 진다.

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

날짜관련 쿼리  (0) 2009.04.15
[sql] update join  (0) 2009.03.24
[sql] to_number()함수  (0) 2009.03.24
  Comments,     Trackbacks
[sql] update join
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[출처] http://piyoro.tistory.com/search/update%20join
 
A table 과  b table 를 조인하여 A table의 특정필드에 b table의 특정 필드의 값을
Update 할경우

/*+ bypass_ujvc */ 힌트를 사용한다. 어려워 ㅠㅠ

update  /*+ bypass_ujvc */
  (
    SELECT
          a.colnm ra
         ,b.colnm rb  
      FROM a
         , b
     WHERE a.key= b.key
) set ra = rb; 

update문으로 조인할 경우가 있을 경우 매우 유용하다. 꼭 기억해야 하는 쿼리~!!


UPDATE book a1
SET ( name, date ) = ( SELECT name, date FROM a2 WHERE a1.bookid = a2.bookid )
WHERE a1.bookid IS NOT NULL

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

select 문  (0) 2009.03.24
[sql] to_number()함수  (0) 2009.03.24
트리거  (0) 2009.03.13
  Comments,     Trackbacks
[sql] to_number()함수
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

숫자지만 varchar 타입의 데이터를 비교할 경우

꼭 to_number()함수로 변환해 주자

10 < 3 (10보다 3을 큰수로 생각한다.)

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

[sql] update join  (0) 2009.03.24
트리거  (0) 2009.03.13
DB 스키마  (0) 2009.03.09
  Comments,     Trackbacks
트리거
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[개념] 트리거(trigger)란?
 
단어 뜻 그대로 "방아쇠" 입니다.

예전에 톰과 제리란 만화 아시죠?
톰이 제리를 괴롭히기 위해서 치츠를 얹어놓고 줄로 연결하여 사실은 치즈를
짚으면 거대한 망치가 제리를 내려치도록 장치를 만들었습니다.
여기서 치즈에 연결된 장치를 "트리거"(방아쇠) 라고 생각하시면 됩니다.
즉 치즈를 집으므로 해서 방아쇠가 격발되어 이와 연계된 다른 것이 작동하는
것입니다.

테이블에서 어떤 특정한 변경이 있을때 그게 반응하여 다른 작업을 하도록
설치된 것이 트리거 입니다. (어떠한 action이 들어오면 어떠한 action을 해주겠다.)


A란 작업이 일어났을때 부수적으로 꼭 따라다니는 B란 작업이 있다면 별개로
따로따로 작업을 하는것보다 A작업이 일어났을때마다 자동으로 B란 작업이
일어나도록 트리거를 심어주는 것이 더 편리할 것입니다.

이런 것을 위해서 트리거가 있는 것입니다.

트리거는 톰과 제리에서 톰이 만든 복잡한 장치처럼... 한번만 걸릴수도 있지만
A의 변경으로 인해서 트리거작동 -> B의 변경 -> B에 걸린 또 다른 트리거에 의해서
-> C의 변경... 이런식으로 얽힐 수도 있습니다.

참고 하십시요.

[DB_oracle] 트리거(Trigger)

트리거는
특정 테이블이나 뷰에 대해 Update, Insert 또는 Delete문을 실행 할 때
자동으로 다른 테이블 혹은 뷰에 Update, Insert 또는 Delete문을 실행되는 특수한 루틴입니다.

생성구문 :
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
     { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
         [ WITH APPEND ]
         [ NOT FOR REPLICATION ]
         AS
         [ { IF UPDATE ( column )
             [ { AND | OR } UPDATE ( column ) ]
                 [ ...n ]
         | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                 { comparison_operator } column_bitmask [ ...n ]
        } ]
         sql_statement [ ...n ]
    }
}

[출처] 트리거란?|작성자 death4you


 
ps.
트리거를 더 자세히 알기 위해서는 PL/SQL을 따로 공부해야 겠다.
그리고 다시 한번 트리거에 대해서 정리 해야 겠다.

오늘 트리거에 대해서 알게 된 것은

어떤 특정 한 테이블에 insert가 일어나면 다른 계정의 테이블에도 연달아 insert 가 일어나도록
해주는 것이 트리거라고 느꼈다.
작성 언어는 PL/SQL이고 (조건)
그 조건 안에는 sql 문이 였다.

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

[sql] to_number()함수  (0) 2009.03.24
DB 스키마  (0) 2009.03.09
[sql] 자주 사용하는 쿼리문 정리  (0) 2009.03.02
  Comments,     Trackbacks
DB 스키마
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

DB 스키마 백업 작업

스키마

사전지식, 배경지식, 지식 구조(knowledge structure), 본(scripts), 틀(frames) 이라고 부르기도 하는데 우리의 기억 속에 저장되어 있는 경험의 총체를 말한다.

DB 스키마


1. create table 문법
2. 칼럼명/ 타입/ 제약조건

DB 구조를 추출 해야하는 작업임. Test DB에 테이블을 생성하기 위해서



DB Data

1. orange를 통해 엑셀파일로 추출한다(Loader기능)
2. export시킨다.




테이블 스키마 예시

create table zipcode (
    seq     int(5)      not null comment '일련번호',
    zipcode varchar(7)  not null comment '우편번호',
    sido    varchar(4)  not null comment '특별시/광역시/도',
    gugun   varchar(15) not null comment '시/구/군',
    dong    varchar(26) not null comment '읍/면/동',
    ri      varchar(45) comment '리/건물명',
    bunji   varchar(17) comment '번지/아파트동/호수',
    constraint zipcode_pk primary key (seq)
) engine=InnoDB, comment='우편번호';

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

트리거  (0) 2009.03.13
[sql] 자주 사용하는 쿼리문 정리  (0) 2009.03.02
export/import  (0) 2008.10.31
  Comments,     Trackbacks
[sql] 자주 사용하는 쿼리문 정리
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[테이블 구조 보기]

DESC 테이블명;

[칼럼 변경]

1. 칼럼 추가
ALTER TABLE 테이블명 ADD (칼럼명 자료타입 [Defualt 값]);

2. 칼럼 수정
ALTER TABLE 테이블명 MODIFY(칼럼명 자료타입 제약조건 ) ;

3. 칼럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 칼럼이름

[테이블 변경]

1. 테이블 복사
CREATE TABLE 백업테이블명 AS 쿼리문(복사할 테이블);

2. delete 하고 commit 할 경우 데이터 살리기
SELECT * FROM AAA
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);

=> 10분전의 데이터를 보여준다.

[검색 쿼리]

1. like 연산자

조건절에    A.USERID||A.name||D.part_name||a.NICKNAME like '%kang%'
'||' 연산자를 사용하여 여러 개의 칼럼값을 검색 가능하다.

2. where 절에 DECODE와 NVL을 적극 활용할것!

3. IN연산자 NOT IN 연산자 대신 사용하는 쿼리

MSSQL 서버에서 NOT IN을 사용하면 인덱스를 피해간다.
다음과 같이 사용하면 NOT IN을 사용하지 않고 속도 향상을 볼 수 있다.

select * from pwp where [ID] not in (select cn from [USER])
을 아래와 같이 쓰면 좋다.
select count(*) from pwp a where (select count(*) from [user] where cn = a.[id]) = 0


[출처] http://moogi.tistory.com/31
http://soulfly.tistory.com/entry/나의-남편은-개발자

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

DB 스키마  (0) 2009.03.09
export/import  (0) 2008.10.31
10g 에서 테이블 완전 삭제하기.  (0) 2008.09.22
  Comments,     Trackbacks