> 데이터 베이스 > MySQL 튜토리얼 > 기본 키와 고유 인덱스의 차이점은 무엇입니까?

기본 키와 고유 인덱스의 차이점은 무엇입니까?

一个新手
풀어 주다: 2017-09-08 14:31:53
원래의
3586명이 탐색했습니다.

기본 키와 고유 인덱스의 차이점

-- 차이점

기본 키는 제약 조건이고 고유 인덱스는 인덱스입니다. 둘은 본질적으로 다릅니다.
기본 키가 생성된 후에는 고유 인덱스가 포함되어야 합니다. 고유 인덱스가 반드시 기본 키일 필요는 없습니다.
고유 인덱스 열은 null 값을 허용하지만 기본 키 열은 null 값을 허용하지 않습니다.
기본 키 열이 생성되면 기본값은 null 값 + 고유 인덱스입니다.
기본 키는 다른 테이블에서 외래 키로 참조될 수 있지만 고유 인덱스는 참조할 수 없습니다.
테이블은 기본 키를 최대 1개만 생성할 수 있지만 고유 인덱스는 여러 개 생성할 수 있습니다.
기본 키는 자동 증가 열, ID 번호 등과 같이 변경하기 쉽지 않은 고유 식별자에 더 적합합니다.
RBO 모드에서는 기본 키의 실행 계획 우선 순위가 고유 인덱스의 우선 순위보다 높습니다. 둘 다 쿼리 속도를 향상시킬 수 있습니다.

--기본 키와 고유 인덱스만 포함하는 테이블 생성

CREATE TABLE test
(PrimaryKey VARCHAR2(20),
  UniqueKey  VARCHAR2(20)
);
로그인 후 복사

--다른 구문을 사용하여 기본 키와 고유 인덱스를 각각 생성

ALTER TABLE test ADD CONSTRAINT test_PrimaryKey PRIMARY KEY (PrimaryKey);
CREATE UNIQUE INDEX test_UniqueKey ON test (UniqueKey);
로그인 후 복사

--USER_INDEXES

SELECT table_name,table_type,index_name,index_type,uniqueness
  FROM USER_INDEXES
  WHERE TABLE_NAME='TEST';
로그인 후 복사


에서 두 개의 인덱스 이름을 볼 수 있습니다. -- USER_IND_COLUMNS에서는 두 개의 인덱스 필드 이름을 볼 수 있습니다.

SELECT table_name,index_name,column_name,column_position
  FROM USER_IND_COLUMNS
  WHERE TABLE_NAME='TEST';
로그인 후 복사


-- USER_CONSTRAINTS에서는 기본 키 제약 조건 이름만 볼 수 있습니다.

SELECT table_name,constraint_name,constraint_type
  FROM USER_CONSTRAINTS
  WHERE TABLE_NAME='TEST';
로그인 후 복사


-- USER_CONS_COLUMNS에서는 기본 키 제약 조건만 볼 수 있습니다. 필드 이름

SELECT table_name,constraint_name,column_name,position
  FROM USER_CONS_COLUMNS
  WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME                          
   FROM USER_CONSTRAINTS                            
   WHERE TABLE_NAME='TEST');
로그인 후 복사

-- 고유 인덱스에 null이 아닌 제약 조건 추가

ALTER TABLE test MODIFY UniqueKey NOT NULL;
로그인 후 복사

-- 기본 키 제약 조건 이름과 null이 아닌 제약 조건 이름만 USER_CONSTRAINTS

SELECT table_name,constraint_name,constraint_type
로그인 후 복사
  FROM USER_CONSTRAINTS
  WHERE TABLE_NAME='TEST'
로그인 후 복사


-에서 볼 수 있습니다. - USER_CONS_COLUMNS에서만 기본 키 제약 조건 필드 이름과 null이 아닌 제약 조건 필드 이름을 볼 수 있습니다

SELECT table_name,constraint_name,column_name,position
  FROM USER_CONS_COLUMNS
  WHERE CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME                             
  FROM USER_CONSTRAINTS                            
  WHERE TABLE_NAME='TEST')
로그인 후 복사

위 내용은 기본 키와 고유 인덱스의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿