본문 바로가기

SQL/sqlplus

ORACLE(PRIMARY KEY)

가지고 있는 topic을 출력해보자.

SELECT id, title, created FROM topic;

topic 출력화면

COLUMN은 무슨역할을 하는지 생각해보자

 

각각의 ID를 식별한다. 다른 말로는 구별 하는 역할을 한다.

즉. COLUMN의 역할은 식별자인 것이다.

 

식별자가 되기 위해서

가장 중요한 특징은 " 중복되면 안된다" 라는 것 이다.

 

예를들어,

 My SQL이라는 title이 갖고 있는 저 행은

ID가  2번인 것을 알 수 있다.

 

근데 ID가 2번인 또다른 행이 있다면  My SQL이라는 저 행을 찾아내는 것이  대단히 까다로워질 것이다.

-> 중복이 생길테니까요!

 

그래서 식별자의 자격은 중복되면 안된다라는 것이다.

 

 


내가 넣으려고 하는 기존의 표에 ID 값이 3인 것이 있냐 없냐를 보려고 한다면 어려운일이다.

 

 

그런데

 

만약 내가 기존의 topic table의 ID가 3인 행이 이미 있다면

INSERT문을 실행시키지 안 시켜주고, 없을때만 INSERT문을 실행 시켜준다면?

 

그렇게 된다면 talble 각각의 ID의 값이 유일무이한 유니크한 식별자라는 것을 확신할 수 있다.

 

그런 환상적인 기능이 있다.

 

그것은 바로 " Primary Key " 이다.

 

한국어로는 기본키 /주 키 라고도 부른다.

 

 

 

Primary Key를 지정할 때에는 아예 table을 생성할 때 지정할 수도 있고

그리고 생성한 후에 ALTER라고 하는 명령어를 통해서 추가할 수도 있다.

 

가급적이면 table을 처음 생성할때 지정하는 것이 좋다.

 

생성 후 에 추가하게 되면 나중에 데이터가 엄청나게 많아지면

Primary Key를 추가하는게 상당히 부담스러운 작업이 될 수 있기 때문.

 

 

 


<기존에 있었던 topic TABLE 지우기>

DROP TABLE topic;

이 경우에는 commit 해 줄 필요는 없다.

 

 

KEY WORD 

 

CONSTRAINT 

 

제약조건이라는 뜻

이미 존재하지 않는 값만 넣을 수 있다는 제약을 TABLE에다가 가는거니깐요

CONSTRAINT PK_TOPIC PRIMARY KEY(id)

우리가 만들려고 하는 PRAIMARY KEY의 이름을 PK_TOPIC로 정해요.(고유의 이름)

그리고 우리가 만들려고하는 제약 조건이 어떤거냐면 PRIMARY KEY다.

어떤 PRIMARY KEY?

(id)다. 

 

 

Table이 생성되었는데 잘 동작하는지 확인해봅시다.

 

INSERT 추가 -> commit;

 

 

기존에 넣은 id의 값이 1이게 해서 어떻게 되는지 한번 넣어보자!

 

unique constraint -> 이미 id 1인 값이 있다. 즉. 중복이 있다는 것을 알려주는것을 볼 수 있다.

 

 

 

id 값을 2로 수정하고 INSERT를 했을 때는 정상적으로 생성이 되는 것을 볼 수 있다. 

 

 


SELECT id, title, FROM topic WHERE id = 2;

 

PRIMARY KEY를 지정하지 않는 것과

지정해서 id 2번인 행을 찾는 것에 대한 속도는 

비교할 수 없을 만큼 어마어마하게 차이가 난다.

 

지정함으로써 순식간에 찾을 수 있다.

그렇기때문에 PRIMARY KEY는 표를 만들때 반드시 지정한다.

 

지정하지 않으면 손해다라고 생각해야한다.

그렇다고 해서 꼭 필수는 아니다.

그렇지만 쓰지 않는건 경제성이 없다는 것을 기억하자. 

 

'SQL > sqlplus' 카테고리의 다른 글

ORACLE(SEQUENCE)  (0) 2021.04.03
ORACLE(행 삭제)  (0) 2021.04.02
ORACLE(행 수정)  (0) 2021.04.02
ORACLE(행 읽기 - 정렬과 페이징)  (0) 2021.04.02
ORACLE(행 읽기 - 행과 컬럼 제한하기)  (0) 2021.04.02