Database/Oracle

[Oracle] CONSTRAINT(제약조건)_CHECK

21종 2023. 7. 27. 23:18

* CHECK(조건식) 제약조건

해당 컬럼에 들어올 수 있는 값에 대한 조건을 제시해둘 수 있음
해당 조건에 만족하는 데이터값만 담길 수 있음

 

CREATE TABLE MEM_CHECK( 
    MEM_NO NUMBER NOT NULL, 
    MEM_ID VARCHAR2(20) NOT NULL UNIQUE,
    MEM_PWD VARCHAR2(20) NOT NULL,
    MEM_NAME VARCHAR2(20) NOT NULL,
    GENDER CHAR(3) CHECK (GENDER IN('남', '여')),
    PHONE VARCHAR2(13),
    EMAIL VARCHAR2(50)
    --CHECK(GENDER IN ('남', '여')) -- 테이블 레벨 방식
);
INSERT INTO MEM_CHECK VALUES(1, 'user01', 'pass01', '손흥민', '남', null, null);
INSERT INTO MEM_CHECK VALUES(2, 'user02', 'pass02', '이강인', 'ㄴ', null, null);
--ORA-02290: check constraint (DDL.SYS_C007146) violated
-- CHECK 제약조건에 위배됐기 때문에 오류 발생

INSERT INTO MEM_CHECK VALUES(2, 'user02', 'pass02', '이강인', null, null, null);
-- 만일 GENDER 컬럼에 데이터 값을 넣고자 한다면 CHECK 제약조건에 만족하는 값을 넣어야됨
-- NOT NULL 아니면 NULL 도 가능하긴함!!

INSERT INTO MEM_CHECK
VALUES (2, 'user03', 'pass03', '이승우', '여', null, null);
-- 회원번호가 동일해도 성공적으로 insert 돼버림 즉, 기본키를 사용해야된다

 

기본키 지정하는 방법

2023.07.28 - [IT/Oracle] - [Oracle] CONSTRAINT(제약조건)_PRIMARY KEY

 

[Oracle] CONSTRAINT(제약조건)_PRIMARY KEY

* PRIMARY KEY(기본키) 제약조건 => PK 테이블에서 각 행들을 식별하기 위해 사용될 컬럼에 부여하는 제약조건 (식별자의 역할) EX) 회원번호, 학번, 사원번호, 부서코드, 직급코드, 주문번호, 예약번호

e1jong.tistory.com