관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

제약 조건 2 - PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT 제약 조건 본문

알고리즘 및 자료 관리/데이터베이스

제약 조건 2 - PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT 제약 조건

huenuri 2024. 8. 23. 16:51

조금은 힘에 부치지만 다시 공부를 시작해보자! 이제 4가지 제약 조건만 공부하면 된다. 선생님이 제약 조건을 수업 시간에 아주 간단하게 한 줄만 설명한 데는 이유가 있었다.
그리고는 책에 나와있으니 책을 보라고 하셨다.

PK와 FK는 매우 중요하니 집중해서 학습해보기로 하자. 집중이 안될 때는 음악을 듣는 것이 도움이 된다. 내가 좋아하는 피아노 MR을 들으며 공부에 다시 임해보는 중이다.

 

학습 내용

  1. 유일하게 하나만 있는 PRIMARY KEY
  2. 다른 테이블과 관계를 맺는 FOREIGN KEY
  3. 데이터 형태와 범위를 정하는 CHECK
  4. 기본값을 정하는 DEFAULT

학습 시간

새벽 6시 50분 ~ 8시 <1시간 10분 소요>


 

 

 

1. 이전 제약 조건 복습

 

데이터 무결성

 

 

 

이미 생성된 테이블에 제약 조건 지정

 

 

 

 

 

 

 

 

제약 조건 변경 및 삭제

 

 

 


 

 

 

 

2. 유일하게 하나만 있는 PRIMARY KEY

UNIQUE와 NOT NULL 제약 조건의 특성을 모두 가지는 조건이다. 즉 데이터의 중복도 NULL도 허용하지 않는다. NULL이 아닌 유일한 값을 가지므로 주민등록번호나 EMP 테이블의 사원 번호같이 테이블의 각 행을 식별하는데 활용된다.
PRIMARY KEY 제약 조건은 테이블에 하나밖에 지정할 수 없다. 그리고 특정 열을 PRIMARY KEY로 지정하면 해당 열에는 자동으로 인덱스가 만들어진다.

 

 

 

 

테이블을 생성하며 제약 조건 지정하기

테이블을 생성할 때 특정 열에 PRIMARY KEY 설정하기

 

 

 

 

생성한 PRIMARY KEY 확인하기

 

 

 

 

테이블을 생성하며 제약 조건 이름 직접 지정하기

그리고 출력해보았을 때 제약 조건이 추가되었음을 보게 된다.

 

 

Shift + F4를 누르면 해당 테이블의 제약조건을 확인할 수 있다. 테이블을 출력했을 때보다 더 한눈에 볼 수 있어 좋은 것 같다.


 

 

 

3. 다른 테이블과 관계를 맺는 FOREIGN KEY

외래키, 외부키로도 부르는 FOREIGN KEY는 서로 다른 테이블 간 관계를 정의하는데 사용하는 제약 조건이다. 특정 테이블에서 PRIMARY KEY 제약 조건을 제정한 열을 다른 테이블의 특정 열에서 참조하겠다는 의미이다.

 

 

 

 

참조관계를 정의하면 EMP 테이블의 DEPTNO 열에는 DEPT 테이블의 DEPTNO 열에 존재하는 값과 NULL만 저장할 수 있게 된다.

 

 

 

 

 

FOREIGN KEY 지정하기

DEPT_FK 테이블 생성하기

 

 

 

 

 

EMP_FK 테이블 생성하기

 

 

 

 

DEPT_FK에 데이터 삽입하기

데이터가 잘 들어가 있음을 확인했다.

 

 

 

 

FOREIGN KEY로 참조 행 데이터 삭제하기

10번 부서 데이터 삭제하기

삭제하려는 값이 참조하고 있는 자식 레코드가 있을 경우 이렇게 에러가 발생한다. 이럴 때는 다음과 같은 방법을 사용해야 한다.

10번 부서를 삭제할 경우 여기에 속한 사원 데이터도 함께 삭제되기 때문에 NULL로 변경해야 한다는 뜻이다.


 

 

 

4. 데이터의 형태와 범위를 정하는 CHECK

CHECK 제약 조건은 열에 저장할 수 있는 값의 범위 또는 패턴을 정의할 때 사용한다.

 

테이블을 생성할 때 CHECK 제약 조건 설정하기

LOGIN_PWD 열의 길이가 3 초과인 데이터만 저장 가능하도록 조건을 걸어두었다.

 

 

 

 

CHECK 제약 조건에 맞지 않는 예

하지만 여기서는 비밀번호가 지정한 3자리를 넘지 않기에 조건에 맞지 않는다는 오류가 뜨는 것이다.

 

 

 

 

CHECK 제약 조건에 맞는 예

 

 

 

 

CHECK 제약 조건 확인하기

CHECK 제약 조건은 USER_CONSTRAINTS 데이터 사전에서 확인할 수 있다. CONSTRAINT_TYPE 열 값이 C이므로 NOT NULL, CHECK 제약 조건은 모두 C로 출력된다.


 

 

 

5. 기본값을 정하는 DEFAULT

제약 조건과는 별개로 특정 열에 저장할 값이 지정되지 않았을 경우에 기본값을 지정할 수 있다.

테이블을 생성할 때 DEFAULT 제약 조건 설정하기

 

 

 

DEFAULT로 지정한 기본값이 입력되는 INSERT문 확인하기

명시적으로 NULL을 지정한 첫번째 INSERT문을 실행했을 때는 LOGIN_PWD 일이 비어있다. 그리고 두번째 INSERT문처럼 LOGIN_PWD 열값을 지정하지 않으면 기본값인 1234가 들어가는 것을 확인할 수 있다.


 

 

 

학습을 마치고

여기까지 해서 길고 긴 14장 제약 조건 학습을 모두 마쳤다. 수업 중 사용하는 예제는 사용할 수 없는 것들이 많아서 대부분 책 위주로 진행했다. 역시 난 공부하며 음악을 들으면 집중이 하나도 되지 않아서 5분도 되지 않아서 꺼버렸다.
집중을 위해 서서 하니 더 잘되는 것 같았다. 이번 시간의 몰입도는 75% 정도인 것 같다. 이제 제약 조건이 무엇인지 어떻게 사용하는지 정도는 알게 되었다.

수업 시간에 PR, FK, CHECK 등의 키가 나올 때 지금까지는 무슨 말인지 몰랐는데 이제는 어느 정도 알게 되었다. 정처기 시험에서도 이러한 내용이 등장한다. 이제 나머지 시간에는 연습문제를 풀고, 아침 예배 전까지 15장가지 끝내볼 것이다.