SQL - NOT NULL 제약 조건: 초보자 가이드

안녕하세요, 미래의 데이터 마법사 여러분! 오늘 우리는 SQL의 흥미로운 세계로 뛰어들어 중요한 개념을 탐구해볼 거예요: NOT NULL 제약 조건. 프로그래밍에 처음이라면 걱정하지 마세요; 저는 여러분을 이 여정을 단계별로 안내해드릴 거예요. 그럼 손을 내밀고 시작해봅시다!

SQL - NOT NULL

SQL NOT NULL 제약 조건

NOT NULL이란?

새로운 도서카드 신청 양식을 작성하는 상상해봅시다. 몇몇 항목은 선택 사항이지만, 다른 항목은 절대적으로 필요한 것이 있습니다. 예를 들어, 이름과 주소는 필수입니다. 데이터베이스 세계에서 NOT NULL 제약 조건은 비슷한 역할을 합니다. 이 제약 조건은 열이 항상 값이 포함되어 있어야 하며 공백으로 남겨둘 수 없음을 보장합니다.

NOT NULL이 중요한 이유

학교 데이터베이스를 생각해보세요. 학생 기록에 이름이나 학번이 없다면 어떨까요? 아마도 그럴 리가 없겠죠! NOT NULL 제약 조건은 중요한 정보가 누락되지 않도록 데이터 무결성을 유지하는 데 도움을 줍니다.

테이블에 NOT NULL 제약 조건 생성

우리의 상상 속 도서관에 간단한 테이블을 만들어보겠습니다. 이름을 "Books"이라고 합시다.

CREATE TABLE Books (
    BookID INT NOT NULL,
    Title VARCHAR(100) NOT NULL,
    Author VARCHAR(50) NOT NULL,
    PublicationYear INT,
    ISBN VARCHAR(13) NOT NULL
);

이 예제에서:

  • BookID, Title, Author, 그리고 ISBN은 필수 항목이므로 NOT NULL로 표시되었습니다.
  • PublicationYear에는 NOT NULL 제약 조건이 없으므로 선택 사항입니다.

이제 데이터를 입력해보겠습니다:

-- 이 작업은 정상적으로 수행됩니다
INSERT INTO Books (BookID, Title, Author, PublicationYear, ISBN)
VALUES (1, 'To Kill a Mockingbird', 'Harper Lee', 1960, '9780446310789');

-- 이 작업도 정상적으로 수행됩니다 (선택 사항인 PublicationYear를 생략)
INSERT INTO Books (BookID, Title, Author, ISBN)
VALUES (2, '1984', 'George Orwell', '9780451524935');

-- 이 작업은 실패합니다. Author를 생략하려고 시도했기 때문에 NOT NULL 제약 조건을 위반
INSERT INTO Books (BookID, Title, PublicationYear, ISBN)
VALUES (3, 'The Great Gatsby', 1925, '9780743273565');

마지막 INSERT 문은 오류를 발생시키게 됩니다.因为我们正在尝试省略 NOT NULL 제약 조건이 있는 Author 열입니다.

테이블에서 NOT NULL 제약 조건 제거

occasionally, we might realize that a field we initially thought was crucial can actually be optional. Let's say we decide that the ISBN isn't always necessary (perhaps for very old books). Here's how we can remove the NOT NULL constraint:

ALTER TABLE Books
MODIFY COLUMN ISBN VARCHAR(13);

이제 ISBN은 NULL이 될 수 있습니다. 하지만 기존 테이블에 제약 조건을 변경하는 것은 신중하게 해야 합니다, 특히 운영 환경에서!

기존 테이블에 NOT NULL 제약 조건 추가

나중에 우리가 모든 책에 출판 연도가 필요하다는 것을 깨달은다면 어떻게 해야 할까요? 기존 열에 NOT NULL 제약 조건을 추가할 수 있습니다:

-- 먼저, 열에 NULL 값이 없도록 해야 합니다
UPDATE Books
SET PublicationYear = 0
WHERE PublicationYear IS NULL;

-- 이제 NOT NULL 제약 조건을 추가할 수 있습니다
ALTER TABLE Books
MODIFY COLUMN PublicationYear INT NOT NULL;

이 작업에서는 다음이 일어납니다:

  1. NULL 값을 0(또는 다른 적절한 기본 값)으로 업데이트합니다.
  2. 테이블을 변경하여 NOT NULL 제약 조건을 추가합니다.

제약 조건을 추가하기 전에 기존 NULL 값을 처리하는 것이 중요합니다. 그렇지 않으면 ALTER TABLE 문이 실패합니다.

경고

기존 테이블에 NOT NULL 제약 조건을 추가하는 것은 기술적으로 어려울 수 있습니다. 항상 데이터를 백업한 후 변경을 수행하세요!

NOT NULL 사용에 대한 좋은 관행

관행 설명
절제된 사용 NOT NULL을 진정으로 값이 필요한 열에만 적용
기본값 고려 항상 값이 필요하지만 제공되지 않을 수 있는 열에 DEFAULT와 NOT NULL을 함께 사용
미리 계획 NOT NULL 열을 설계 단계에서 미리 식별하여 테이블을 변경하지 않도록
문서화 특정 열이 NOT NULL인 이유를 명확히 문서화

결론

그렇게 우리는 NOT NULL 제약 조건의 세계를 여행했습니다. NOT NULL 열을 가진 테이블을 생성하고, 기존 테이블에 이 제약 조건을 추가하고 제거하는 방법을 배웠습니다. NOT NULL은 데이터 무결성을 유지하는 데 중요한 도구입니다. 잘 배치된 NOT NULL 제약 조건 덕분에 수많은 데이터베이스 재앙이 막혔습니다!

계속 연습하고, 호기심을 가지고 있으며, 어느 날 SQL 쿼리를 자는 것을 발견할지도 모릅니다(하지만 정말로 이를 권장하지는 않습니다 - 키보드는 좋은 쿠션으로 사용되지 않습니다!).

미래의 데이터 마에스트로 여러분, 즐겁게 코딩하세요!

Credits: Image by storyset