안녕하세요 차세대 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인데 왜 데이터가 들어가지?
라고 생각 했지만, 오늘 배우게 된 내용이라서 공유를 하고 싶어
포스팅을 하게 되었습니다.
감사합니다.
'DBA가 되고 싶은 비공자 > SQLD 자격증' 카테고리의 다른 글
[ SQLD ] DDL(Data Definition Language) ALTER문 컬럼 추가, 삭제, 수정 (0) | 2024.07.01 |
---|---|
[ SQLD ] 오라클 캐시(Oracle Cache)에 대한 공부 (0) | 2024.06.30 |
[ SQLD ] 오라클 시퀀스 조회, 생성, 수정, 삭제, 테이블 적용 (0) | 2024.06.29 |
[ SQLD ] DDL(Data Definition Language) 제약조건 조회, 추가, 삭제 (0) | 2024.06.26 |
[ SQLD ] DDL(Data Definition Language) RENAME 테이블 명, 컬럼 명 변경하기 (0) | 2024.06.23 |