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

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

青灯夜游
青灯夜游원래의
2021-04-21 17:31:3916476검색

차이점: 1. 기본 키는 제약 조건이고 고유 인덱스는 인덱스입니다. 2. 기본 키가 생성된 후에는 고유 인덱스가 포함되어야 합니다. 고유 인덱스가 반드시 기본 키일 필요는 없습니다. 3. 고유 인덱스 열은 null 값을 허용하지만 기본 키 열은 null 값을 허용하지 않습니다. 4. 기본 키는 다른 테이블에서 외래 키로 참조될 수 있지만 고유 인덱스는 참조될 수 없습니다.

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

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

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

  • 기본 키는 제약 조건이고 고유 인덱스는 일종의 인덱스이며 둘은 본질적으로 다릅니다.

  • 기본 키가 생성된 후에는 고유 인덱스가 포함되어야 합니다. 고유 인덱스가 반드시 기본 키일 필요는 없습니다.

  • 고유 인덱스 열은 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 인덱스에서 두 개를 볼 수 있습니다. name

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'


--기본 키 제약 조건 필드 이름과 null이 아닌 제약 조건 필드 이름만 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')

에서 볼 수 있습니다. 프로그래밍 관련 지식을 더 보려면 프로그래밍 튜토리얼을 방문하세요! !

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.