유가엘
개발일지
유가엘
전체 방문자
오늘
어제
  • 분류 전체보기 (107)
    • Solution (16)
      • EAI (11)
      • Concept (1)
      • webMethods (4)
    • Language (20)
      • Java (20)
    • DataBase (19)
      • Oracle (18)
    • Web Programming (38)
      • JSP (11)
      • Spring (10)
      • Project (17)
    • 협업도구 (8)
      • Git (8)
    • IT (6)
      • ETC (4)
      • 정보처리기사 (1)
      • Android (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

티스토리

hELLO · Designed By 정상우.
유가엘

개발일지

DataBase/Oracle

11. Oracle 무결성 제약조건

2020. 3. 28. 00:55

10.Constraint.sql
0.00MB

NOT NULL : NULL 값이 입력되지 못하게 하는 조건

CREATE TABLE NULL_TABLE( 
    FIELD1 VARCHAR2(20) NOT NULL, 
    FIELD2 VARCHAR2(20) NULL, 
    FIELD3 VARCHAR2(20)  
); 

INSERT INTO NULL_TABLE (FIELD1,FIELD2) VALUES ('AA','BB');  --  정상적으로 삽입됩니다. 
INSERT INTO NULL_TABLE (FIELD2,FIELD3) VALUES ('CC','DD');  --  에러가 발생합니다.(FIELD1은 값이 반드시 들어가야합니다.) 

 

UNIQUE : 중복된 값이 입력되지 못하게 하는 조건  ( NULL 값을 허용합니다. )

CREATE TABLE UNIQUE_TABLE( 
    FIELD1 VARCHAR2(20) UNIQUE NOT NULL, 
    FIELD2 VARCHAR2(20) UNIQUE, 
    FIELD3 VARCHAR2(20) NOT NULL, 
    FIELD4 VARCHAR2(20) NOT NULL, 
    CONSTRAINTS TEMP_UNIQUE UNIQUE(FIELD3,FIELD4) --FIELD 3,4 번을 합한 값이 중복이 되서는 안된다는 의미입니다. 
); 


INSERT INTO UNIQUE_TABLE(FIELD1,FIELD2,FIELD3,FIELD4)   --  정상적으로 삽입됩니다. 
VALUES ('AA','BB','CC','DD'); 
INSERT INTO UNIQUE_TABLE(FIELD1,FIELD2,FIELD3,FIELD4)    
VALUES ('AA2','BB2','CC2','DD2'); 

UPDATE UNIQUE_TABLE SET FIELD1 = 'AA' WHERE FIELD2 ='BB2';  --  에러가 발생합니다.(FIELD1 에 이미 AA라는 값이 있기 때문에 발생하게됩니다.) 


INSERT INTO UNIQUE_TABLE(FIELD1,FIELD2,FIELD3,FIELD4)   --  정상적으로 삽입됩니다.(FIELD2 는 NULL을 허용합니다.) 
VALUES ('AA3','','CC3','DD3'); 
INSERT INTO UNIQUE_TABLE(FIELD1,FIELD2,FIELD3,FIELD4) 
VALUES ('AA4','','CC4','DD4'); 

 

PRIMARY KEY : NOT NULL + UNIQUE 와 같습니다.
테이블 생성 시 PK 등록

CREATE TABLE PRIMARY_TABLE( 
    FIELD1 NUMBER(10) PRIMARY KEY,  -- 인라인 방식 ( 오라클에서 자동으로 생성되며 SYS_XXX..로생성됩니다) 
    FIELD2 VARCHAR2(20) 
); 

CREATE TABLE PRIMARY_TABLE( 
    FIELD1 NUMBER(10) , 
    FIELD2 VARCHAR2(20) 
    CONSTRAINTS FIELD1_PK PRIMARY KEY(FIELD1);  -- 아웃라인 방식 
); 

 

테이블 생성 후 PK 생성

ALTER TABLE PRIMARY_TABLE ADD CONSTRAINTS "기본키 이름" PRIMARY KEY (필드명); 

 

FOREIGN KEY :   (외래키 - 참조키) 다른 테이블의 필드(컬럼)을 참조해서 무결성을 검사하는 조건
                       부모테이블의 키값이 변경되었을 경우, 자식 테이블에 참조키가 맞지 않을경우 에러가 발생합니다.
                       부모테이블의 컬럼은 참조키 , 자식 테이블의 컬럼은 외래키라고 부릅니다.

테이블 생성 시 FK 등록 

CREATE TABLE FOREIGN_KEY( 
    FIELD1 CONSTRAINTS DEPT_FK 
    REFERENCES DEPARTMENTS (DEPARTMENT_ID)    -- 인라인 방식 : FIELD1은 부모테이블의 DEPARTMENT_ID 에 반드시 존재해야합니다 
); 

CREATE TABLE FOREIGN_KEY( 
    FIELD1 
    CONSTRAINTS DEPT_FK 
    FOREIGN KEY(FIELD1) 
    REFERENCES DEPARTMENTS (DEPARTMENT_ID)    -- 아웃라인 방식 : FIELD1은 부모테이블의 DEPARTMENT_ID 에 반드시 존재해야합니다 
); 

 

테이블 생성 후 FK 생성

ALTER TABLE FOREIGN_KEY ADD CONSTRAINTS DEPT_FK 
    FOREIGN KEY(FIELD1) 
    REFERENCES DEPARTMENTS (DEPARTMENT_ID); 

CHECK : 주어진 조건에 맞는 값만 허용하는 조건

CREATE TAB;E CHECK_TABLE( 
    GENDER VARCHAR2(10) NOT NULL 
    CONSTRAINTS CHECK_SEX CHECK (GENDER IN('M','F')) 
);
저작자표시 비영리 변경금지

'DataBase > Oracle' 카테고리의 다른 글

13. Oracle Sequence  (0) 2020.03.30
12. Oracle View  (0) 2020.03.30
10. Oracle DML(Insert, Update, Delete)  (0) 2020.03.26
9. Oracle DDL(Table 정의)  (0) 2020.03.26
8. Oracle 서브쿼리  (0) 2020.03.26
    'DataBase/Oracle' 카테고리의 다른 글
    • 13. Oracle Sequence
    • 12. Oracle View
    • 10. Oracle DML(Insert, Update, Delete)
    • 9. Oracle DDL(Table 정의)
    유가엘
    유가엘

    티스토리툴바