본문 바로가기
DataBase/MsSql

MSSQL NOT NULL 제약 조건 생성, 확인, 삭제 방법

by 아우럼 2024. 3. 15.
반응형

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);

 

not null column 속성 변경 후 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 발생시켜 보세요.

null 값이 있는 상태에서 column 속성을 변경 시 에러 발생합니다.

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;

 

  • 실행과정 설명입니다.

기존 column에 값을 넣어줘야 error를 해결하는 과정 입니다.

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를 체크 후 제약조건 변경이 합니다.
반응형