데이터 베이스/SQL 첫걸음(인프런 강의)

Ch02. 데이터 베이스 시작 - 제약 조건

webmaster 2025. 10. 4. 21:52
728x90

제약 조건은 테이블에 데이터를 저장할 때, 특정 규칙을 지키도록 강제하는 장치다. 이 규칙 덕분에 우리는 잘못되거나 일관성 없는 데이터가 입력되는 것을 원천적으로 차단할 수 있다. 데이터의 '무결성', 즉 데이터에 결점이 없는 상태를 유지하는 것이 제약 조건의 핵심 목표다.

 

제약 조건

NOT_NULL : 필수 입력 항목 지정

  • 이 제약 조건이 걸린 열에는 NULL 값(값이 없음)을 허용하지 않는다.
  • 즉, 데이터를 INSERT 할 때 이 열의 값은 반드시 입력되어야 한다. 고객의 이름, 아이디, 상품의 가격 등은 비어있으면 안 되는 핵심 정보이므로 NOT_NULL을 설정해야 한다.

UNIQUE : 중복 불가 항목 지정

  • 이 제약 조건이 걸린 열의 값은 테이블 내에서 항상 고유해야 한다. 즉, 중복된 값을 허용하지 않는다. 고객의 아이디(ID), 이메일 주소, 사업자 등록번호 등은 다른 사람과 중복되면 안 되므로 UNIQUE 제약 조건을 사용한다.
  • PRIMARY_KEY 와의 차이점: PRIMARY KEY 는 테이블 당 단 하나만 존재할 수 있지만, UNIQUE는 여러 열에 설정할 수 있다. PRIMARY_KEY는 UNIQUE와 NOT NULL 속성을 모두 포함하는, 더 강력한 개념이다.

PRIMARY_KEY (PK) : 테이블의 대표 식별자

  • 테이블의 모든 행을 유일하게 식별하는 열. NOT_NULL 과 UNIQUE의 특징을 모두 가진다. 모든 테이블에는 반드시 PRIMARY_KEY가 있어야 한다.
  • AUTO_INCREMENT : MySQL에서 PRIMARY_KEY 에 자주 사용하는 옵션이다. 정수 타입의 PRIMARY_KEY 열에 이 옵션을 설정하면, 새로운 데이터가 추가될 때마다 1씩 자동으로 증가하는 번호를 할당해 준다. 우리가 직접 ID를 고민해서 넣을 필요가 없어 매우 편리하다.

FOREIGN KEY (FK) : 테이블 간의 관계 설정

  • 한 테이블을 다른 테이블과 연결하는 관계의 고리. 참조하는 열의 값은 반드시 참조되는 테이블의 PRIMARY_KEY 값 중 하나여야 한다는 '참조 무결성'을 강제한다.
  • 예를 들어 주문 테이블에 customer_id (FK) 값이 99가 입력된다고 가정해 보자. customers 테이블에는 99번 고객 번호가 없다. 이런 경우 데이터베이스는 데이터의 입력을 막는다. (오류가 발생한다.)

DEFAULT : 기본값 설정

  • 데이터를 INSERT 할 때 특정 열의 값을 명시하지 않으면, 자동으로 설정된 기본값이 입력된다. 예를 들어, 회원 가입 시 포인트를 따로 주지 않으면 자동으로 0점이 들어가게 하거나, 상품 등록 시 '판매 상태'를 기본적으로 '판매 중'으로 설정할 수 있다. 상품이 등록된 시간을 저장할 수도 있다.

CHECK : 컬럼에 입력되는 값이 특정 조건을 만족하는지 검사

  • 설명: 조건에 맞지 않는 데이터의 입력을 막는다.
  • 예를 들어
    • 10보다 작은 숫자가 입력되지 않도록 막는다.
    • 18 미만의 회원이 저장되지 않도록 막는다.

 

728x90