민둥 개발자의 계발 블로그

[mysql] 데이터베이스의 기본 제약조건! 본문

Study/Database

[mysql] 데이터베이스의 기본 제약조건!

민둥산의 민둥이 2022. 5. 15. 16:39

 안녕하세요 민둥산의 민둥이입니다. 오늘은 데이터베이스의 데이터에 적용시킬 수 있는 기본 제약 조건들에 대해 알려드리겠습니다.

 

기본 제약조건(Constraint)이란?

기본 제약조건이란, 테이블에서 데이터를 입력할 때 옵션으로 사용할 수 있는 문법입니다. 테이블의 데이터에 각 칼럼의 설계의도에 맞는 값만 입력할 수 있게 제약 설정이 가능한데요, 예를 들면 회원가입할 때 id값이 중복되면 안 되기에 id값을 중복되지 못하게 하는 식으로 사용할 수 있습니다. DESC 명령어를 사용하여 테이블의 속성을 확인하면 KEY라는 값이 있는데요, 제약조건을 KEY라고 부르기도 합니다.

 

제약조건(Key)의 종류

  1. NOT NULL
    • 데이터를 사용하여 연산할 때 NULL 값이 있는 컬럼 사용 시 연산에 다른 오류를 생성할 가능성이 있기에 NULL 값을 비허용 하는 제약조건입니다. 회원가입 화면으로 치면 꼭 입력해야 하는 아이디와 비밀번호란 등이 NOT NULL제약조건이 걸리겠네요.
    • NOT NULL 값이 제약조건인 컬럼명에 데이터 미입력/NULL값 입력 시 에러가 발생합니다.
    • ※주의할 점은 'NULL'이라고 문자열로 입력하는 NULL은 NULL값이 아닌 일반 문자열로 취급되기에 입력이 됩니다. 헷갈리지 마세요!
  2. UNIQUE
    • 고유한 값만 허용하는 제약조건입니다. 다른 말로는 중복되는 값을 허용하지 않는다라고 할 수 있겠네요.
    • UNIQUE 제약조건이 걸린 칼럼에 같은 데이터를 2번 입력 시 에러가 발생하여 2번째 데이터는 입력이 되지 않습니다.
    • 딱 한 가지, 중복 예외 되는 값이 있습니다. NULL, 즉 데이터 미입력은 같은 칼럼 내에 여러 번 허용이 됩니다(NOT NULL 제약조건 미적용 시입니다). 엄밀히 말하면 NULL 값이라고 다 같은 값이 아닙니다. NULL이라는 값에 사실 #@asd!@#5 asd처럼 사용되지 않는 임시의 값이 입력되어 있어서 각 NULL 값도 굳이 따지자면 다른 값을 보유하고 있습니다. (아마 쓰레기 값이라고도 부릅니다)
  3. PRIMARY
    • 기본 키 제약조건이라고도 불리는데요, 테이블을 대표하는 칼럼에 적용하는 제약조건입니다.
    • NOT NULL과 UNIQUE 제약조건을 합친 제약조건으로, 데이터 미입력, 중복 값 2개다 비허용 합니다.
    • 테이블 당 1번 사용 가능합니다. (하지만 제약조건들은 중복 적용 가능하기에 PRIMARY 키와 같은 제약조건은 NOT NULL과 UNIQUE를 사용하여 여러 개 만들 수 있습니다)

 

제약조건 적용방법

CREATE TABLE(컬럼명 데이터 타입 제약조건, 컬럼명2 데이터타입 제약조건...);

 적용방법은 간단합니다. 위와 같이 데이터 타입이 오는 자리 바로 뒤에 제약 조건을 적어 주시면 됩니다. 여러 개를 적용하고 싶을 경우는 제약조건 뒤에 다른 제약조건을 더 적어 주시면 됩니다.

반응형
Comments