2009년 5월 31일 일요일

외부 DATA 불러오기

== 외부파일 불러오기
--F52 53


CREATE  TABLE  TBL_STUDENT01
(NO NUMBER,
NAME VARCHAR2(10)
,HAKGUA VARCHAR2(10)
);

SELECT *
FROM TBL_STUDENT01;
--F54

--F55 56 57 58 59



SELECT *
FROM TBL_STUDENT01;
--F60

--F61~67

SELECT *
FROM TBL_STUDENT01;
--F70

--F68~69

전부 삭제하고 다시 넣을 때는
REPLACE를 사용
--F78 79

NULL 값이 있을때는 TRAILING NULLCOLS 를 CTL의 COLUMN 지정앞에 넣음!
--F80 81


CREATE TABLE TBL_MEMBER(
NO NUMBER,
NAME VARCHAR2(10),
JUBUN VARCHAR2(13),
GENDER VARCHAR2(2),
JIK VARCHAR(10)
)

SELECT * FROM TBL_MEMBER;

-F 71~74

 

CREATE TABLE TBL_MEMBER2(
NO NUMBER,
NAME VARCHAR2(10),
JUBUN VARCHAR2(13),
GENDER VARCHAR2(2),
JIK VARCHAR2(10),
AGE NUMBER
);
SELECT * FROM TBL_MEMBER2;
--F82

SELECT CASE WHEN SUBSTR('0012313234567',1,1) = '0' AND SUBSTR('0012313234567',7,1) 
IN ('3','4') THEN TO_CHAR(SYSDATE,'YY') - (SUBSTR('0012313234567',1,2)) +1
 ELSE TO_CHAR(SYSDATE,'YY') - (SUBSTR('0012313234567',1,2)) +101 END  "TEST"
FROM DUAL;

SELECT CASE WHEN SUBSTR('7812312234567',1,1) = '0' AND SUBSTR('7812312234567',7,1) 
IN ('3','4') THEN TO_CHAR(SYSDATE,'YY') - (SUBSTR('7812312234567',1,2)) +1
 ELSE TO_CHAR(SYSDATE,'YY') - (SUBSTR('7812312234567',1,2)) +101 END  "TEST"
FROM DUAL;
--F83

--F84-86


SELECT * FROM TBL_MEMBER2;




CREATE TABLE TBL_ZIP
(ZIPCODE VARCHAR2(10),
 SIDO VARCHAR2 (200),
 GUGUN VARCHAR2(200),
 DONG VARCHAR2(200),
 RI VARCHAR2(200),
 BLDG VARCHAR2(200),
 BUNJI VARCHAR2(200),
 SEQ NUMBER);

SELECT * FROM TBL_ZIP;

--F2

SELECT * FROM TBL_ZIP;
COMMIT;
--F3~8

제약 조건의 연기 (DELAY) & 테이블 삭제와 제약조건

=======제약 조건의 연기 (DELAY)
-------
SELECT  *
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'TBL_EMP';
--F40 41


데이터의 양이 많을 때에 입력할때 마다 검사하는 것 보다 추후 일괄 처리하는 것이 좋다.
연장시킴으로 데이터를 받은 후, COMMIT 시에 일괄 검사하도록 수정
제약 조건의 수정은 기존의 제약조건을 삭제하고 다시 생성하는 방식으로 수정하여야 한다.

ALTER TABLE TBL_EMP
DROP CONSTRAINT TBL_EMP_EMAIL_CK;

ALTER TABLE TBL_EMP
ADD CONSTRAINT TBL_EMP_EMAIL_CK
    CHECK ( INSTR (EMAIL,'@',1,1)>1 AND INSTR (EMAIL,'@',1,2)=0  AND INSTR(EMAIL,'@',1,1) != LENGTH(EMAIL)
       AND  SUBSTR( REVERSE(EMAIL),1, INSTR(REVERSE(EMAIL),'.',1,1)) IN ('MOC.','TEN.','RK.') )
DEFERRABLE INITIALLY DEFERRED;

SELECT  *
FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'TBL_EMP';
-- F42, 43

SELECT *
FROM TBL_EMP;
 
INSERT INTO TBL_EMP VALUES (0004,'BMD','4112191181818','MADCOW@2MB.JAP',0002,10);
INSERT INTO TBL_EMP VALUES (0005,'꺽정','8010101234567','LIMNAVER.COM',0003,20);

SELECT * FROM TBL_EMP;
-- F44

COMMIT;
--F45


SELECT *
FROM TBL_EMP;
--F46

INSERT INTO TBL_EMP VALUES (0005,'꺽정','8010101234567','LIM@NAVER.COM',0003,20);

COMMIT;

SELECT *
FROM TBL_EMP;

-- F47

-------
==== 테이블의 삭제 시 주의점
------

DROP TABLE TBL_DEPT;

--F48

SELECT *
FROM USER_CONSTRAINTS
WHERE TABLE_NAME ='TBL_EMP' AND CONSTRAINT_TYPE ='R' ;

-- F49

SELECT *
FROM USER_CONSTRAINTS
WHERE CONSTRAINT_TYPE ='R' AND R_CONSTRAINT_NAME LIKE 'TBL_DEPT%';

--F50

DROP TABLE TBL_DEPT CASCADE CONSTRAINT;
테이블을 삭제 & 참조하는 제약들을 삭제

SELECT *
FROM TBL_DEPT;
--F51