"고유 키"와 "기본 키"의 차이점


답변:


20

테이블에는 최대 하나의 PRIMARY KEY제약 조건이있을 수 있지만 원하는만큼의 제약 조건이있을 수 있습니다 UNIQUE KEY.

의 일부인 열 PRIMARY KEY은으로 정의해야합니다 NOT NULL. UNIQUE KEY제약 조건의 일부인 열에는 필요하지 않습니다 . 열이 널 입력 가능하지 않으면 고유 키와 기본 키간에 차이가 없습니다.

또 다른 사소한 차이점은 UNIQUE KEY제한 조건 (및 색인)에 원하는 이름을 선택할 수 있다는 것 입니다. 반면에 PRIMARY KEY기본 이름은 PRIMARY입니다.


5

한 가지 큰 차이점

  • 기본 키는 널 입력 가능 열을 허용하지 않습니다.
  • 고유 키는 널 입력 가능 컬럼을 허용합니다

그렇지 않으면 큰 차이가 없습니다 ...


4

다른 사람들이 지적하지 않은 것 :

  • InnoDB 테이블에서 PK를 명시 적으로 선언하지 않으면 커버 아래에 PK가 생성됩니다. 이 암시 적 키로 액세스, 주문 또는 필터링 할 수 없습니다. 각 보조 인덱스에 행의 PK에 대한 복사 포인터가 포함되어 있기 때문에 리소스 측면에서 영향을 미칩니다.

3

가장 중요한 차이점은 그들의 목적에 있습니다.

  • 기본 키 : 기본 키의 목적은 "키"역할을하는 것입니다. 기본 키는 레코드를 식별하는 데 사용되는 관계형 데이터베이스의 키입니다.
  • 고유 색인 : 고유 색인은 성능을위한“INDEX”입니다. 옵티마이 저는 "x = : x"조건의 경우 결과가 하나뿐이므로 그에 적합한 계획을 준비 할 수 있다는 것을 알고 있습니다.
  • 고유 제한 조건 : 해당 열에 중복 값이 ​​없는지 확인하는 "CONSTRAINT"입니다. 데이터 무결성에 대한 제약입니다.

그들의 목적 외에도 다음과 같은 점이 주목됩니다.

  • 달리 지정하지 않으면 PRIMARY KEY는 CLUSTERED INDEX를 만들려고 시도합니다 (이 시점은 주석에서 언급 한 것처럼 SQL Server에 관한 것입니다)
  • 테이블 당 하나의 PRIMARY KEY 만있을 수 있습니다. 그러나 많은 고유 제약 조건과 고유 인덱스가있을 수 있습니다
  • PRIMARY KEY는 항상 null은 아니지만 고유 제약 조건이있는 열은 NULL 값을 보유 할 수 있습니다.

1
질문에는 MySQL 태그가 지정되어 있습니다. 테이블이 InnoDB 엔진을 사용하고 기본 키가있는 경우이를 지정할 수 없으며 이것이 클러스터형 인덱스입니다. 선택의 여지가 없다. 아마도 SQL Server에 대해 생각하고 있었을 것입니다.
ypercubeᵀᴹ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.