○ 제약조건 이름 설정 : CONSTRAINT

○ 제약조건 추가 : ALTER ~ ADD CONSTRAINT 

ALTER TABLE table1 ADD CONSTRAINT cs NOT NULL(column1);
ALTER TABLE table1 ADD CONSTRAINT cs FOREIGN KEY(column1) REFERENCES table2(column1);

○ 제약조건 수정 : ALTER ~ MODIFY ( 컬럼명 CONSTRAINT 제약조건명 제약조건)

ALTER TABLE table1
MODIFY (column1 CONSTRAINT cs NOT NULL);

○ 제약조건 이름 변경 : ALTER ~ RENAME CONSTRAINT 제약조건명 TO 바꿀제약조건명

ALTER TABLE table1
RENAME CONSTRAINT cs TO cs2;

○ 제약조건 삭제 : ALTER ~ DROP CONSTRAINT 제약조건명

ALTER TABLE table1
DROP CONSTRAINT cs;

○제약조건 확인 : USER_CONSTRAINTS (데이터 사전) 사용

 - constraint_type -> P : Primary key, U : Unique, C : Check, R : foReign key

SELECT constraint_name, constraint_type, talbe_name
FROM USER_CONSTRAINTS;

● NOT NULL (nn) : NULL값 x

 - NOT NULL 해제시 제약조건을 NULL로 하면됨

● UNIQUE (unq) : 중복값 x, NULL값은 o (NULL값들은 중복값이 아님)

● PRIMARY KEY (기본키, pk) : NULL값 x + 중복값 x

● FOREIGN KEY (외래키, fk) : REFERENCES 사용, 다른 테이블의 컬럼을 참조해서 데이터를 입력함

 - 부모 테이블의 Reference Key가 Unique이거나 기본키 여야함.           ex) table2의 deptno

CREATE TABLE table1(		-- 자식 테이블
    no NUMBER(2) CONSTRAINT table1_no_pk PRIMARY KEY 
                 CONSTRAINT table1_no_ck CHECK(no < 50),
    name VARCHAR(10),
    deptno NUMBER(2) CONSTRAINT table1_deptno_fk REFERENCES table2(deptno)
);
    

CREATE TABLE table2(		-- 부모 테이블
    deptno NUMBER(2) CONSTRAINT table2_deptno_pk PRIMARY KEY,
    deptname VARCHAR(10),
    locno NUMBER(3) CONSTRAINT table2_locno_nn NOT NULL   
);


● CHECK (ck): 값의 범위나 패턴 설정

● DEFAULT(기본값)

CREATE TABLE table1(
    no NUMBER(2) CONSTRAINT nn NOT NULL,
    name VARCHAR(10) DEFAULT 'ABC',
    deptno NUMBER(2) CONSTRAINT ck CHECK (deptno < 50)
);