집 >데이터 베이스 >MySQL 튜토리얼 >기본 키와 고유 인덱스의 차이점은 무엇입니까
차이점: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!