Database/Oracle

Oracle [ 행의 식별자 PRIMARY KEY ]

유정♡ 2024. 2. 14. 17:53

PRIMARY KEY 란 ? 관계형 데이터베이스에서 조(레코드)의 식별자로 이용하기에 가장 적합한 것을 관계 (테이블)마다 단 한 설계자에 의해 선택, 정의된 후보 키를 말한다.

  • 테이블을 만들때 정말 중요한 기능.
  • 만약 id=3 행이 이미 있다면 INSERT문을 실행을 안 시켜 주고 없을 때만 실행을 시켜주는 식별자 PRIMARY KEY.
  • PRIMARY KEY를 지정할 때는 테이블을 생성할 때 지정할 수도 있고 이미 생성한 후라면 ALTER라는 명령어를 통해 나중에 추가할 수도 있다. 그치만 가급적이면 맨 처음 생성할 때 생성하는 것이 좋다. 나중에 데이터가 엄청 나게 많아지면 PRIMARY KEY를 추가하는게 부담스러운 작업이 될 수도 있기 때문이다.

 

1. CONSTRAINT PK_TOPIC PRIMARY KEY (id)   -> CONSTRAINT 제약조건 이미 존재하지 않는 값만 넣을 수 있다는 제약을 테이블에 가하는것

  CREATE TABLE topic (
       id NUMBER NOT NULL,
      title VARCHAR2(50) NOT NULL,
      description VARCHAR2(4000) NULL,
       created DATE NOT NULL,
       CONSTRAINT PK_TOPIC PRIMARY KEY (id)       -> (id,title) 두개를 넣을수도 있음 , 복합키
  );

 

만약, 이미 1행이 존재하는데 INSERT문으로 1행의 내용을 또 추가한다면 이러한 오류 문구가 등장함.

1행에 오류:
ORA-00001: 무결성 제약 조건(YUJUNG.PK_TOPIC)에 위배됩니다

 

SELECT id,title, FROM topic WHERE id = 2; --> PRIMARY KEY를 지정하지 않는 것과 PRIMARY KEY를 지정해서 id=2번인 행을 찾는 것은 비교할수도 없을 만큼 속도가 차이남 PRIMARY KEY를 지정하면 행을 찾는 건 순식간에 됨. PRIMARY KEY로 지정하지 않으면 데이터를 가져 오는데 어마어마하게 느림. 

 

결론 , PRIMARY KEY는 표를 만들 때 반드시 지정한다. 지정하지 않으면 손해다.

          but, 필수는 아니다 그치만 지정하지 않으면 경제성도 없고 효율도 많이 떨어진다. 그래서 되도록이면 써라.

 

TIP) DROP TABLE topic; commit; 안 해도 ok 

 

728x90