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


답변:


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.