반응형
NOT NULL 제약조건은 NULL 입력 못 하게 하므로 레코드에 무조건 값을 입력하라는 의미로 이해하면 됩니다.
장점은 무결성을 유지할 수 있습니다.
NOT NULL 제약 조건 특징
- NOT NULL 제약조건이 적용된 column은 NULL 입력 시 ERROR 발생합니다. 즉, column에는 항상 값이 존재합니다.
- 데이터 무결성은 NOT NULL 제약은 데이터의 무결성을 유지하는 데 도움이 됩니다. 예를 들어, 유저 아이디, 이름, 주소와 같은 필수 입력 정보를 저장하는 칼럼에 NOT NULL 제약을 적용하면 무결성을 유지할 수 있습니다.
- Default 값 설정은 NOT NULL 제약조건이 있는 column에 데이터를 삽입할 때, 해당 column에 값을 지정하지 않으면 오류가 발생합니다. 이를 방지하기 위해 NOT NULL은 기본값을 설정하고 주로 사용하고 있습니다.
- ALTER TABLE 사용은 이미 존재하는 테이블의 column에 NOT NULL 제약을 추가하거나 제거하려면 ALTER TABLE 문 사용하여 변경할 수 있습니다.
NOT NULL 제약 조건 사용법
TABLE 생성하면서 column에 자동으로 CHECK 설정.
- table 생성하면서 column, datatype 이후 NOT NULL 제약 조건을 사용할 수 있습니다.
- NOT NULL 제약조건은 테이블 생성할 때 자주 사용하는 제약 조건입니다.
- Key에 관련된 column에서 주로 사용합니다.
- 예시코드와 소스코드를 활용하여 실습하시기 바랍니다.
-- 예시코드.
CREATE TABLE [테이블명] (
[column1] [dataType],
[column2] [dataType] NOT NULL,
[column3] [dataType] NOT NULL
);
-- 1. TABLE 생성하면서 column에 자동으로 NOT NULL 설정.
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForNotNull;
CREATE TABLE UserInfoForNotNull (
UserId int,
UserNm varchar(255) NOT NULL,
UserAge int NOT NULL,
UserAddress varchar(500) NOT NULL
);
-- NOT NULL 제약조건이 잘되는지 확인.
insert into UserInfoForNotNull(UserId,UserNm,UserAge,UserAddress)
values(202401,'john',10,NULL);
기존 column에 NOT NULL 제약조건 생성.
- 다른 제약조건하고 비슷하게 alter 명령어를 통해서 column에 not nul을 지정할 수 있습니다.
- not nul 조건은 datatype 예약어 뒤에 생성합니다.
-- 예시코드.
ALTER TABLE [테이블명] ALTER COLUMN [column1] [dataType] NOT NULL;
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForNotNull;
CREATE TABLE UserInfoForNotNull (
UserId int,
UserNm varchar(255),
UserAge int,
UserAddress varchar(500)
);
ALTER TABLE UserInfoForNotNull ALTER COLUMN UserAddress VARCHAR(500) NOT NULL;
기존 column에 NULL 값이 있는 경우.
- 변경하려고 하는 column에 null 있으면 NOT NULL로 속성 변경이 불가능합니다.
- 해결방안으로는 기존 column에 값을 넣어줘야 합니다.
- 에러 발생 예제입니다.
- 이미지를 활용하여 실습을 통해서 error 발생시켜 보세요.
column에 NULL 값 해결 방법.
- 테이블 생성 시 not null 제약조건을 넣었으면 좋지만 table에 null 값이 들어가 있는 경우는 추가 작업이 필요합니다.
- 기존 data를 확인 후 row를 삭제하거나 수정해줘야 합니다.
- 수정이 필요하다면 NOT NULL 제약 조건을 이용하여 해당 column의 값을 변경합니다.
- 예제 소스를 먼저 이해하고 실습해 보세요.
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForNotNull;
CREATE TABLE UserInfoForNotNull (
UserId int,
UserNm varchar(255),
UserAge int ,
UserAddress varchar(500)
);
insert into UserInfoForNotNull(UserId,UserNm,UserAge,UserAddress)
values(202401,'john',10,NULL);
insert into UserInfoForNotNull(UserId,UserNm,UserAge,UserAddress)
values(202402,'john1',10,NULL);
-- 기존 column에 null 값 확인.
select *
from UserInfoForNotNull
where UserAddress is null;
-- 기존 column에 null 값 => ''으로 변경.
update UserInfoForNotNull
set UserAddress = ''
where UserAddress is null;
-- 기존 column에 not 변경
ALTER TABLE UserInfoForNotNull ALTER COLUMN UserAddress VARCHAR(500) NOT NULL;
- 실행과정 설명입니다.
NOT NULL 제약 조건 생성 확인 방법.
- EXEC SP_HELP [테이블명] 명령어를 이용할 수 있습니다.
- INFORMATION_SCHEMA.COLUMNS 스키마를 사용합니다.
- 한 개의 테이블의 제약조건을 찾을 때는 sp_help 명령어를 사용합니다.
- 데이터 베이스에서 어떤 table에서 제약조건을 사용하는지 찾을 때는 INFORMATION_SCHEMA.COLUMNS 사용합니다.
-- 명령어 코드
EXEC SP_HELP UserInfoForNotNull;
-- INFORMATION_SCHEMA.COLUMNS 이용
SELECT TABLE_CATALOG
,TABLE_SCHEMA
,TABLE_NAME
,IS_NULLABLE
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'UserInfoForNotNull';
생성된 NOT NULL 제약 조건 삭제.
- Not null 제약조건을 생성했으면 drop도 가능합니다.
- Not null 제약조건 syntax와 소스코드를 이용하여 실습해 주세요.
ALTER TABLE [테이블명] ALTER COLUMN [column1] [dataType];
USE sampleDB;
DROP TABLE IF EXISTS UserInfoForNotNull;
CREATE TABLE UserInfoForNotNull (
UserId int,
UserNm varchar(255) NOT NULL,
UserAge int NOT NULL,
UserAddress varchar(500) NOT NULL
);
-- not null 제거
ALTER TABLE UserInfoForNotNull ALTER COLUMN UserAddress VARCHAR(500);
Not null 제약조건 마무리
- Not null 제약조건은 주로 테이블 생성 시 사용합니다.
- Not null 제약조건을 운영시 추가할 경우 기존 data를 체크 후 제약조건 변경이 합니다.
반응형