22.05.13

오혜원·2022년 5월 13일

SQL

목록 보기
3/7

CONSTRAINTS

: 테이블에 오류 DATA가 입력되는 것을 막기 위한 최소한의 규칙

▶ PRIMARY KEY : 각 행을 구분지어주는 역할
→ NOT NULL + UNIQUE
→ INDEX 기본 생성
SEQUENCE를 사용하면 쉽게 PRIMARY KEY 생성 가능

▶ FORIEGN KEY : 다른 테이블을 연결 / 참조 / 참고 하는 속성

▶ NOT NULL : 데이터를 반드시 입력

▶ UNIQUE : 다른 행의 데이터와 중복 X (NULL 입력, 중복 가능)

▶ CHECK : 연산을 통해 입력되는 데이터를 검사

CREATE TABLE PRODUCT( PRDT_NO NUMBER(5, 0)
                    , PRDT_NAME VARCHAR2(90) NOT NULL UNIQUE
                    , PRDT_PRICE NUMBER(7, 0) CHECK(PRDT_PRICE >= 0)
                    , PRDT_STOCK NUMBER(7, 0) CHECK(PRDT_STOCK >= 0)
                    , PRDT_COM VARCHAR2(90) NOT NULL);

▶ USER_CONSTRAINTS
: 시스템 테이블
: 현재 사용자가 사용하는 테이블의 제약 조건 내용에 대한 목록

▶ USER_CONS_COLUMNS
: 시스템 테이블
: 현재 사용자가 사용하는 테이블의 제약 조건에 대한 목록

SELECT * FROM USER_CONSTRAINTS;
SELECT * FROM USER_CONS_COLUMNS;

출력 결과

OWNER    CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION
-------- --------------- --------------- ---------- -----------------------
C##SCOTT SYS_C008314     C               EMP        "EMPNO" IS NOT NULL
C##SCOTT SYS_C008315     C               PRODUCT    "PRDT_NAME" IS NOT NULL
C##SCOTT SYS_C008316     C               PRODUCT    "PRDT_COM" IS NOT NULL
C##SCOTT SYS_C008317     C               PRODUCT    PRDT_PRICE >= 0
C##SCOTT SYS_C008318     C               PRODUCT    PRDT_STOCK >= 0
C##SCOTT SYS_C008319     U               PRODUCT    
C##SCOTT SYS_C008320     P               PRODUCT    
OWNER     CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
--------- --------------- ---------- ----------- --------
C##SCOTT  SYS_C008314     EMP        EMPNO       
C##SCOTT  SYS_C008320     PRODUCT    PRDT_NO            1
C##SCOTT  SYS_C008315     PRODUCT    PRDT_NAME       
C##SCOTT  SYS_C008319     PRODUCT    PRDT_NAME          1
C##SCOTT  SYS_C008317     PRODUCT    PRDT_PRICE       
C##SCOTT  SYS_C008318     PRODUCT    PRDT_STOCK       
C##SCOTT  SYS_C008316     PRODUCT    PRDT_COM       

▶ ALTER ADD / MODIFY / DROP
: ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME (UNIQUE / PRIMARY KEY ...)(COLUMN_NAME);
: ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME CONSTRAINT CONSTRAINT_NAME NOT NULL;
NOT NULL은 ADD가 아닌 MODIFY로 변경
: ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;
→ [CONSTRAINT CONSTRAINT_NAME]은 반드시 지정할 필요 X
: ※ ROLLBACK 불가

0개의 댓글