제약 조건

DB / / 2021. 8. 31. 22:38
  • 선언 시기
    • 테이블 생성 시 : CREATE 구문에 작성한다.
    • 테이블 생성 후 : ALTER 구문에 작성한다.
  • 선언 문법
    • COLUMN LEVEL : [데이터 타입] [컬럼명] [제약 조건]
    • TABLE LEVEL : CONSTRAINT [제약조건명] [제약 조건] [컬럼명]
  • 종류
    • Primary Key, Foreign Key, Unique, Not Null, Check, Default
    • PRIMARY KEY(PK)
      • NOT NULL + UNIQUE
      • 테이블 당 1개만 가능하다.
      • 많이 사용하기 때문에 보안을 생각해서 개인 정보 등은 사용하지 않아야 한다.
      • [컬럼명] [데이터타입] PRIMARY KEY
      • 종류
        • Natural Key
          • 실제로 어떤 개체가 갖고 있는 속성을 나타내는 컬럼이 Primary Key일 때 Natural Key
        • Surrogate Key
          • Primary Key로 사용하기 위해 인위적으로 생성한 컬럼이다.
          • 어떤 회원의 속성을 직접 나타내는 컬럼은 아니다.
          • Auto Increment 설정을 많이 사용한다.
          • UUID를 사용해서 유일한 상태를 유지하기도 한다.
    • NOT NULL(NN) : 유일하게 COLUMN LEVEL 문법만 가능하다.
      • 이 컬럼에는 반드시 어떤 값이 들어 있어야 한다는 의미
      • Null
        • 어떤 값이 아니기 때문에 등호를 사용해서 어떤 값과 비교할 수 있는 대상이 아니다.
        • 그래서 Null은 IS NULL 혹은 IS NOT NULL로 값을 비교할 수 있다.
        • Null과 숫자 0 또는 비어있는 문자열('')은 그 의미가 전혀 다르다.
        • 숫자 0 또는 비어있는 문자열('')은 그 자체로 값이다.
    • UNIQUE(UK)
      • 유일한 값만 들어가도록 하고 싶을 때 사용한다.
      • 중복을 허용하지 않는 제약 조건이다.
      • PK와는 다르게 NULL 값을 가질 수 있다.
      • [제약조건명] UNIQUE([컬럼명])
    • FOREIGN KEY(FK)
      • 다른 테이블의 특정 row를 식별할 수 있게 해주는 제약조건이다.
      • 참조하는 테이블은 자식 테이블, 참조를 당하는 테이블은 부모 테이블이라고 한다.
      • 두 테이블의 컬럼 간에 Foreign key 관계가 개념적으로 성립한다는 것과 Foreign Key 관계가 실제로 설정되어 있다는 것은 엄연히 다른 개념이다.
      • 자기 자신 테이블이나 다른 테이블의 특정 컬럼(PK, UK)
      • [제약조건명] FOREIGN KEY ([컬럼명]) REFERENCES [테이블명]([컬럼명])
    • CHECK(CK)
      • 내가 원하는 조건을 작성한다.
      • 입력 값의 범위를 지정할 수 있다.
      • 나중에 조건을 추가할 경우 존재하는 데이터가 조건에 위배되면 적용이 안된다.
      • [제약조건명] CHECK (조건)
    • DEFAULT
      • 기본 값이 NULL이 아닌 내가 설정한 값이 기본 값으로 입력되도록 하는 제약조건이다.
      • [컬럼명] [데이터타입] DEFAULT [디폴트값]

'DB' 카테고리의 다른 글

SQL  (0) 2021.08.31
DBMS  (0) 2021.08.31
데이터 모델링  (0) 2021.08.31
데이터베이스(DataBase)  (0) 2021.08.31