DBA가 되고 싶은 비공자/SQLD 자격증

[ SQLD ] DDL(Data Definition Language) PRIMARY KEY 디테일 내용

차세대 IT 리더 비공자 2024. 7. 4. 00:19

 

안녕하세요 차세대 IT리더가 되고픈 비공자입니다.

오늘은 PRIMARY KEY에 대해서 조금 더 상세하게

배워보려고 합니다. 저도 오늘 처음 배운 내용이라서

기록을 할겸 포스팅을 하게 되었습니다.

 

 

[ 오늘의 목차 ]

1. 유니크(UNIQUE) 키 생성

2. PRIMARY KEY 디테일 내용 


 

 

1. 유니크(UNIQUE) 키 생성

제일 먼저 유니크 키에 대해서 알고 계실까요?

유니크 키는 중복을 허용하지 않는 PK와 비슷하지만

조금 다른 성격을 가지고 있어요.

PRIMARY KEY( 테이블의 대표 키 ) UNIQUE KEY ( 고유키 )
테이블을 대표하는 기본키로 레코드들의 데이터 중복을 허용하지 않고
PK속성(컬럼)에 부여된 키
row(레코드)의 중복을 허용하지 않도록 하는
일반속성(컬럼)의 부여된 키

 

 

[ UNIQUE KEY 생성 ]

CREATE TABLE 테이블명 (

       컬럼1  데이터타입(크기) CONSTRAINT 제약조건명 UNIQUE(컬럼1)

   ,   컬럼2 데이터타입(크기)

   ,   .......

);

 

[ 실제 유니크 키 적용 ]

위의 내용을 보시면 아래와 같은 내용이 됩니다.

컬럼 명  설명
COLUMN_0 ( PRIMARY KEY ) UNIQUE_TB 테이블에 PRIMARY KEY를 부여한 속성 ( 기본키  )
-> 중복이 되지 않는다.
-> 해당 컬럼은 무조건 데이터가 존재해야 한다.
COLUMN_1 ( UNIQUE KEY ) UNIQUE_TB테이블에 UNIQUE KEY를 부여한 속성(컬럼)
-> 중복이 되지 않는다.
-> 해당 컬럼은 데이터 존재여부가 자유롭다.
COLUMN_2 ( NOT NULL ) UNIQUE_TB 테이블의 NOT NULL을 부여한 속성(컬럼)
-> 중복은 가능하다.
-> 해당 컬럼은 무조건 데이터가 존재해야 한다.

위의 내용을 보시면 뭔가 느낌이 오실까요?

맞습니다. PK = UNIQUE KEY + NOT NULL입니다.

 

 

 

 

2. PRIMARY KEY 디테일 내용 

하나의 테이블에 여러 개의 PK가 존재할 경우

레코드의 데이터 고유성을 확인할 수 있으면 중복이 가능하다.

위 테이블을 보시면 3개의 컬럼 모두 PK로 지정했습니다.

INSERT를 해볼까요?

하나의 레코드가 생성이 되었습니다.

그렇다면 PK의 속성 : 중복 허용 X, 데이터 존재 필수

입니다. 그렇다면 같은 데이터로 INSERT를 다시 한다면

어떻게 될까요?

옙 바로 고유 제약조건 PK에 해당하는 컬럼들에

중복된 데이터가 들어간다고 오류가 발생합니다.

근데 여기서 문제는 해당 인스턴스(레코드)의

식별을 할 수 있게 한다면 저장이 될까?

저장이 됩니다.

USER_NM_1 -> USER_NM_2로 변경해서 저장을 했을 때,

인스턴스(레코드)의 고유성을 보장하기 때문에 저장이 됩니다.

3개의 컬럼이 모두 PK이고, CUST_NO, CUST_ID 두 컬럼이

중복된 레코드를 가지고 있지만, CUST_NM 컬럼이 중복되지

않았기 때문에 INSERT가 가능하게 된 것입니다.

 

 

 

저도 지금까지 PK인데 왜 데이터가 들어가지?

라고 생각 했지만, 오늘 배우게 된 내용이라서 공유를 하고 싶어

포스팅을 하게 되었습니다.

감사합니다.