< 제약조건 CONSTRAINTS >
- 원하는 데이터값 (유효한 형식의 값) 만 유지하기 위해서 특정 컬럼에 설정하는 제약조건
- 데이터 무결성 보장을 목적으로 한다!
* 종류 : NOT NULL, UNIQUE, CHECK, PRIMARY KEY, FOREIGN KEY
* NOT NULL 제약조건
해당 컬럼에 반드시 값이 존재해야만 할 경우 (즉, 해당 컬럼에 절대 NULL이 들어와서는 안되는 경우)
삽입 / 수정시 NULL 값을 허용하지 않도록 제한
제약 조건을 부여하는 방식은 크게 2가지가 있음 (컬럼레벨방식 / 테이블레벨방식)
* NOT NULL 제약조건은 오로지 컬럼레벨방식 밖에 안됨 **
-- 컬럼레벨방식 : 컬럼명 자료형 제약조건
CREATE TABLE MEM_NOTNULL(
MEM_NO NUMBER NOT NULL,
MEM_ID VARCHAR2(20) NOT NULL,
MEM_PWD VARCHAR2(20) NOT NULL,
MEM_NAME VARCHAR2(20) NOT NULL,
GENDER CHAR(3),
PHONE VARCHAR2(13),
EMAIL VARCHAR2(50)
);
INSERT INTO MEM_NOTNULL VALUES (1,'user01','pass01','손흥민','남',NULL, NULL);
INSERT INTO MEM_NOTNULL VALUES (2,'user02',NULL ,'이강인','여', NULL, 'AAA@NAVER.COM');
-- ORA-01400: cannot insert NULL into ("DDL"."MEM_NOTNULL"."MEM_PWD")
-- 의도했던대로 오류남!! (NOT NULL 제약조건에 위배되어 오류 발생)
INSERT INTO MEM_NOTNULL VALUES (2, 'user01', 'pass01', '이승우', null, null, null);
-- > 아이디가 중복되어있음에도 불구하고 잘 추가됨 ㅜ 즉, UNIQUE 제약조건 사용해야됨
UNIQUE 제약조건 부여하는 법
2023.07.24 - [IT/Oracle] - [Oracle] CONSTRAINT(제약조건)_UNIQUE
[Oracle] CONSTRAINT(제약조건)_UNIQUE
* UNIQUE 제약조건 해당 컬럼에 중복된 값이 들어가서는 안 될 경우 컬럼값에 중복값을 제한하는 제약 조건 삽입 / 수정시 기존에 있는 데이터값 중 중복값이 있을경우 오류 발생 !! 컬럼 레벨 방식
e1jong.tistory.com