'Oracle SQL'에 해당되는 글 1건

320x100

[Oracle/SQL] 테이블/인덱스/컬럼/메타데이터/DB Link/데이터형

Posted on 2009. 6. 5. 13:24
Filed Under DB

----------------------------------------------------------------------------------------------------
♠  용어
* Primary Key: 테이블의 행을 유일하게 식별할 수 있는 유일 키 칼럼(들)을 지정
* Foreign Key: 자신이나 다른 테이블의 Primary Key를 참조하는 칼럼(들)을 지정
* Constraint(제한조건) : Primery Key, Foreign Key, Unique, Check (조건식)

♠ 데이터형 상세 설명
http://www.gurubee.net/lecture/1380

----------------------------------------------------------------------------------------------------
♠ 테이블명 변경
ALTER TABLE   table1  RENAME TO  table2

----------------------------------------------------------------------------------------------------
♠ 기존 테이블의 데이터 끌어다 넣기
UPDATE    tbl1  N
SET    N.col1  =  (SELECT L.col2    FROM  tbl2  L     WHERE   N.a = L.a);

♠ 테이블 복사
CREATE TABLE  tbl_name  AS
SELECT   *    FROM target_tbl_name;

-------------------------------------------------------------------------------------------------
♠ 테이블 컬럼
1) 컬럼명 변경
ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 to 새 컬럼명;
2) 컬럼 추가

ALTER TABLE 테이블명 ADD (컬럼명 NUMBER(2) DEFAULT 디폴트값 NOT NULL);
ALTER TABLE 테이블명 ADD (컬럼명 NUMBER UNSIGNED NOT NULL AUTO_INCREMENT); 

3) 컬럼 데이터 타입 변경
ALTER TABLE 테이블명 MODIFY 컬럼명 신_데이터타입;

4) 테이블/컬럼에 코멘트 추가
COMMENT ON TABLE 테이블명 IS '코멘트';
COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트' ;

5) 컬럼 삭제
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
----------------------------------------------------------------------------------------------------
♠ 제약조건 추가/삭제
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 CHECK (컬럼명  = 0 OR (컬럼명 > 14);
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

----------------------------------------------------------------------------------------------------
♠ FK 설정하기 <출처: http://mainia.tistory.com/513>
ALTER TABLE board_free -- 설정할 테이블
ADD FOREIGN KEY (mem_no) -- 테이블에 FK 컬럼
REFERENCES members(mem_no)-- FK 연결이 되는 테이블과 PK 컬럼
ON DELETE RESTRICT -- 기본설정으로 자식에서 부모를 삭제 불가
ON UPDATE RESTRICT; -- 기본설정으로 자식에서 부모를 업데이트 불가

다음은 마지막 옵션값에 대한 설명이다.
ON DELETE RESTRICT : 기본설정으로 자식 row 에서 해당 부모 row 를 삭제하지 못한다.
ON DELETE CASCADE : 부모 테이블의 row가 삭제되면, InnoDB는 부모 row를 참조키와 동일한 외래 키를 갖는 자식 테이블의 모든 해당 row도 자동적으로 삭제한다.
ON DELETE SET NULL(?) : 자식 row도 자동적으로 update되어 외래 키에 해당하는 row는 NULL이 된다.

----------------------------------------------------------------------------------------------------
♠ INDEX 생성/삭제
CREATE (UNIQUE) INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼,..);
DROP INDEX 인덱스명;
--인덱스명 변경
ALTER INDEX    idx_name1   RENAME TO    idx_name2
----------------------------------------------------------------------------------------------------
♠ Oracle 메타 테이블 정보
-- 메타 정보 테이블 목록
SELECT * FROM DICTIONARY ORDER BY TABLE_NAME;

-- 컬럼 코멘트 정보
SELECT * FROM USER_COL_COMMENTS WHERE ROWNUM < 5; 

-- 테이블 코멘트 정보
SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = '테이블명';

-- 테이블 스키마(DATA_TYPE,NULLABLE,..)
SELECT * FROM USER_TAB_COLUMNS B WHERE ROWNUM < 5;
----------------------------------------------------------------------------------------------------
♠ DB Link 생성
 DROP DATABASE LINK DB링크명;
 CREATE DATABASE LINK DB링크명
 CONNECT TO 접속ID
 IDENTIFIED BY 패스워드
 USING '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IP주소)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=서비스명)))';

----------------------------------------------------------------------------------------------------
♠ Oracle IP정보
-- 접속자 IP정보
SELECT SYS_CONTEXT('USERENV', 'IP_ADDRESS'), SYSDATE FROM DUAL;
-- Oracle IP정보
SELECT UTL_INADDR.GET_HOST_ADDRESS, UTL_INADDR.GET_HOST_NAME FROM DUAL;

----------------------------------------------------------------------------------------------------
♠ Long한 서브쿼리 따로 빼서 보기


WITH SUBQUERY_VW AS 

   SELECT A FROM B WHERE 1=1

)
SELECT A.*

  FROM SUBQUERY_VW A

;





반응형

About

by 쑤기c

반응형