본문 바로가기

3-1/데이터베이스 (실습)

[데이터베이스 실습] DDL

CREATE 연습

 

DROP TABLE TESTTABLE;
DROP TABLE TEST2TABLE;

CREATE TABLE TEST2TABLE (
    TEST2ID     CHAR(5) NOT NULL,
    TEST2DATE   DATE,
    
    CONSTRAINT TEST2TABLE_PK PRIMARY KEY (TEST2ID)
);

CREATE TABLE TESTTABLE (
    TESTID      CHAR(5) NOT NULL,
    TESTNAME    VARCHAR(20) NOT NULL,
    TEST2ID     CHAR(5) NOT NULL,
    TESTDEFAULT CHAR(10) DEFAULT '0000000000' NOT NULL,
    TESTOTHER   NUMBER(5,2),
    
    CONSTRAINT TESTTABLE_PK PRIMARY KEY (TESTID),
    CONSTRAINT TESTTABLE_UK UNIQUE (TESTNAME),
    CONSTRAINT TESTTABLE_FK FOREIGN KEY (TEST2ID) 
    REFERENCES TEST2TABLE(TEST2ID) ON DELETE CASCADE,
    /*CONSTRAINT OTHERCHECK 안 쓰면 익명으로 구현*/ CHECK (TESTOTHER > 5)
);

 


ALTER 연습

 

ALTER TABLE TESTTABLE 
ADD (TESTADD CHAR(5), TESTADD2 CHAR(5));

--ALTER TABLE TESTTABLE
--DROP COLUMN TESTADD;

ALTER TABLE TESTTABLE
DROP (TESTADD, TESTADD2);

ALTER TABLE TESTTABLE
MODIFY (TESTOTHER NUMBER(5,2) DEFAULT 100.55,
        TESTDEFAULT CHAR(5) DEFAULT '12345');
        
ALTER TABLE TESTTABLE
RENAME COLUMN TESTOTHER TO TESTNUMBER;

ALTER TABLE TESTTABLE
RENAME COLUMN TESTNUMBER TO TESTOTHER;

ALTER TABLE TESTTABLE
ADD CONSTRAINT OTHERCONST CHECK (TESTOTHER > 50.55);

ALTER TABLE TESTTABLE
DROP CONSTRAINT OTHERCONST;

RENAME TESTTABLE TO TESTTABLE3;

RENAME TESTTABLE3 TO TESTTABLE;

--DROP TABLE TESTTABLE

TRUNCATE TABLE TESTTABLE;

 


메모

 

CREATE에서 제약 조건 설정 시 조건의 이름을 명시해도 되고 안 해도 된다.

명시 한다면 [CONSTRAINT] [CONS_NAME] [PRIMARY KEY / FOREIGN KEY, CHECK 등]과 같은 식으로 명시하면 된다.

 

오라클에서는 ON UPDATE를 지원하지 않는다. 트리거라는 것을 사용하여 참조 무결성을 지켜야 하는데, 이건 따로 알아볼 것.

 

DEFAULT 제약조건은 CONSTRAINT로 접근하는 것이 아닌 칼럼에 접근해서 생성 및 수정 가능. 변경 및 삭제 시에는 MODIFY, 생성 시에는 그냥 NOT NULL 앞에.

 

ALTER에 대한 모든 것. https://jujudywithsw.tistory.com/20

 

ORACLE에서는 ALTER SCHEMA는 작동하지 않으므로 MODIFY를 사용할 것.