1. 테이블 생성
CREATE TABLE 테이블명 (
[컬럼명] [데이터타입] [DEFAULT 값] [NULL/NOT NULL],
[컬럼명] [데이터타입] [DEFAULT 값] [NULL/NOT NULL],
[컬럼명] [데이터타입] [DEFAULT 값] [NULL/NOT NULL],
CONSTRAINT [PK명] PRIMARY KEY ([PK 컬럼명]),
CONSTRAINT [FK명] FOREIGN KEY ([FK 컬럼명]) REFERENCES [연결 테이블명] ([연결 컬럼명]) [ON CASCADE 옵션]
) ;
생성 예)
CREATE TABLE TEST(
TST_NO VARCHAR2(8) NOT NULL,
TITLE VARCHAR2(100) NULL,
CONT VARCHAR2(1000) NULL,
VIEW_CNT NUMBER NULL,
RGST_ID VARCHAR2(100) NOT NULL,
RGST_DT DATE DEFAULT SYSDATE NOT NULL,
CONSTRAINT PK_TEST1 PRIMARY KEY (TST_NO)
);
-- 테이블 주석 생성 예)
COMMENT ON TABLE TEST IS '테스트';
COMMENT ON COLUMN TEST.TST_NO IS '일련번호';
CREATE TABLE TEST_CHLD(
TST_NO VARCHAR2(8) NOT NULL,
CHLD_NO VARCHAR2(8) NOT NULL,
CHLD_CONT VARCHAR2(1000) NULL,
RGST_ID VARCHAR2(100) NOT NULL,
RGST_DT DATE DEFAULT SYSDATE NOT NULL,
CONSTRAINT PK_TEST_CHLD1 PRIMARY KEY (TST_NO, CHLD_NO),
CONSTRAINT FK_TEST_CHLD1 FOREIGN KEY (TST_NO) REFERENCES TEST (TST_NO)
)
2. 테이블 삭제
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
삭제 예)
DROP TABLE TEST_CHLD
3. 테이블 데이터 삭제
TRUNCATE TABLE 테이블명
삭제 예)
TRUNCATE TABLE TEST_CHLD
4. 테이블 정보 조회
DESC 테이블명
조회 예)
DESC TEST_CHLD
DROP, DELETE, TRUNCATE 비교
DROP - 테이블 자체를 삭제하기 때문에 데이터 복구가 불가능하며 저장공간 또한 삭제되고 처리속도가 빠르다.
DELETE - 삭제된 데이터가 차지하던 공간은 그대로 유지되며 데이터만 삭제되고 처리속도가 느리다.
삭제된 데이터는 복구가 가능하다.
TRUNCATE - 테이블 최초 생성된 상태로 돌린다고 보면 된다.
삭제된 데이터가 차지하던 공간까지 삭제되며 처리속도가 빠르며 삭제된 데이터는 복구가 불가능하다.
전체 데이터를 삭제한다면 TRUNCATE를 사용하는게 좋다.
CASCADE 설명
DROP에 CASCADE CONSTRAINT 없이 FK로 연결된 부모 테이블을 삭제하려 하면 에러가 발생한다.
CASCADE CONSTRAINT 옵션을 입력하면 FK 관계가 끊어지고 테이블이 삭제된다.
DROP TABLE 테이블명 CASCADE CONSTRAINT;
FK 생성하는 스크립트에 ON DELETE SET NULL과 ON DELETE CASCADE를 사용할 수 있다.
CONSTRAINT FK_TEST_CHLD1 FOREIGN KEY (TST_NO) REFERENCES TEST (TST_NO) ON DELETE CASCADE
ON DELETE CASCADE - 자식테이블 FK컬럼과 연결된 부모테이블의 컬럼 데이터가 삭제되면 자식테이블의 데이터도 삭제된다.
ON UPDATE CASCADE - 자식테이블 FK컬럼과 연결된 부모테이블의 컬럼 데이터가 수정되면 자식테이블의 데이터도 수정된다.
ON DELETE SET NULL - 자식테이블 FK컬럼과 연결된 부모테이블의 컬럼 데이터가 삭제되면 자식테이블의 데이터는 NULL로
수정된다.
ON UPDATE SET NULL - 자식테이블 FK컬럼과 연결된 부모테이블의 컬럼 데이터가 수정되면 자식테이블의 데이터는 NULL로
수정된다.
첫댓글 CASCADE 가 이런거였네 . 이제까지 일일이 테이블 찾아가며 자식부터 삭제 했는데 자식 무시하고 삭제 할수 있다는 거군!!
근데 아랫부분 "FK 생성하는 스크립트에 ON DELETE SET NULL과 ON DELETE CASCADE를 사용할 수 있다." 이부분 부터 이해 안돼....