Data base

NULL, 제약조건(Constraints),시스템 뷰

연93 2022. 10. 14. 11:42

 

NULL은 ‘값이 없음’을 의미하며 테이블을 생성할 때 컬럼 속성에 기술한다. 디폴트 값이 NULL이므로 별도로 지정하지 않으면 해당 컬럼은 NULL을 허용하게 된다. NULL을 허용하지 않으려면 NOT NULL 구문을 명시해야 한다. NULL 허용이란 해당 컬럼에 값을 넣지 않아도 된다는 의미이며, NOT NULL로 명시한 컬럼에 데이터를 넣지 않으면 해당 로우 INSERT 자체가 불가능하다.

 

 

제약조건Constraints 은 컬럼에 대한 속성 형태로 정의하지만 엄연히 오라클 데이터베이스 객체 중 하나이며 데이터 무결성(잘못된 데이터)을 보장하기 위한 용도로 사용된다. 제약조건에는 NOT NULL, UNIQUE, 기본키, 외래키, CHECK 등이 있다. (NULL포함X)

 

-- NULL : 컬럼에 데이터를 입력을 안해도 되는 성격
-- NOT NULL : 컬럼에 데이터를 반드시 입력해야 되는 성격


CREATE TABLE ex2_6 (
    COL_NULL       VARCHAR2(10), -- NULL 생략되어있다.
    COL_NOT_NULL   VARCHAR2(10) NOT NULL--컬럼에 제약조건을 설정하면, 오라클에서는 내부적으로 제약객체가 생성된다.
    제약 객체명은 자동으로 이름이 생성된다
);


--'' : 오라클 에서는 NULL이라는 의미로 해석
INSERT INTO ex2_6 VALUES ('AA', ''); -- 에러발생
INSERT INTO ex2_6 VALUES ('AA', NULL);--에러발생 (권장)
--ORA-01400: cannot insert NULL into ("ORA_USER"."EX2_6"."COL_NOT_NULL")
--'' : 오라클 에서는 NULL이라는 의미로 해석하지만, ANSI표준에서는 NULL 로 사용.

--컬럼명 생략했으니 두곳다 작성
INSERT INTO ex2_6 VALUES ('AA', 'BB');
-- 확인
SELECT * FROM ex2_6;




--1,2는 동일한 의미로 해석된다.
--값의 갯수를 맞추기위해 빈공간 데이터는 널로 잡는다
INSERT INTO ex2_6(COL_NULL, COL_NOT_NULL) VALUES( NULL, 'DD');
--COL_NULL 컬럼명은 NULL로 설정되어,INSERT구문에서 생략이 가능하다
--컬럼명이 NOT_NULL일시 입력값이 필수로 필요하다
INSERT INTO ex2_6(COL_NOT_NULL) VALUES('DD');

중요도*

--시스템뷰
--USER_CONSTRAINTS : 테이블 생성시 설정한 제약조건 정보를 저장.
SELECT constraint_name, constraint_type, table_name, search_condition
  FROM user_constraints
 WHERE table_name = 'EX2_6'; -- 테이블명이 테이터로 사용되는 경우는 대문자 표현.

'Data base' 카테고리의 다른 글

기본키(Primary key)  (0) 2022.10.14
UNIQUE  (0) 2022.10.14
LOB 데이터 타입  (0) 2022.10.14
날짜 데이터 타입  (0) 2022.10.14
NUMBER형 표기  (1) 2022.10.14