>  기사  >  데이터 베이스  >  mysql에 고유 인덱스를 추가하는 방법

mysql에 고유 인덱스를 추가하는 방법

青灯夜游
青灯夜游원래의
2022-06-20 18:50:0221091검색

세 가지 추가 방법: 1. "CREATE INDEX" 문을 사용하여 추가합니다. 구문은 "CREATE UNIQUE INDEX 인덱스 이름 ON 테이블 이름(열 이름 목록)"입니다. 2. 테이블을 생성할 때 추가하면 구문은 다음과 같습니다. "CREATE TABLE 테이블 이름(. .. UNIQUE KEY(컬럼 이름 목록) );"; 3. 테이블 수정 시 "ALTER TABLE 테이블 이름 ADD CONSTRAINT 인덱스 이름 UNIQUE KEY(컬럼 이름 목록);" 구문이 추가되었습니다.

mysql에 고유 인덱스를 추가하는 방법

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

mysql 고유 인덱스(UNIQUE)

하나 이상의 열에 고유 값을 적용하려면 일반적으로 PRIMARY KEY 제약 조건이 사용됩니다. 그러나 각 테이블에는 기본 키가 하나만 있을 수 있습니다. 따라서 여러 열 또는 고유한 값을 가진 열 집합을 포함하려는 경우 기본 키 제약 조건을 사용할 수 없습니다.

다행스럽게도 MySQL은 값이 하나 이상의 열에 대해 고유하도록 강제할 수 있는 UNIQUE 인덱스라는 또 다른 인덱스를 제공합니다. PRIMARY KEY 인덱스와 달리 UNIQUE는 테이블당 여러 인덱스를 가질 수 있습니다.

UNIQUE 인덱스를 생성하려면 다음 <span style="Background-color: rgb(255, 255, 255); color: rgb(68, 68, 68);font-family: " helvetica neue microsoft yahei arial sans-serif>CREATE INDEX<code><span style="background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family: " helvetica neue yahei arial sans-serif>CREATE INDEX</span>문:

CREATE UNIQUE INDEX 索引名
ON 表名(列名1,列名2,...);

하나 이상의 열에서 값의 고유성을 적용하는 또 다른 방법은 UNIQUE를 사용하는 것입니다. 제약.

UNIQUE 제약 조건을 생성하면 MySQL은 뒤에서 UNIQUE 인덱스를 생성합니다.

다음 문은 테이블을 생성할 때 고유 제약 조건을 생성하는 방법을 보여줍니다.

CREATE TABLE 表名(
...
   UNIQUE KEY(列名1,列名2,...) 
);

ALTER TABLE 문을 사용하여 기존 테이블에 고유 인덱스(UNIQUE)를 추가할 수도 있습니다.

ALTER TABLE 表名
ADD CONSTRAINT 索引名 UNIQUE KEY(列名1,列名2,...);

MySQL UNIQUE 인덱스 예제

애플리케이션에서 연락처를 관리하고 싶다고 가정해 보세요. 또한 연락처 테이블의 각 연락처에 대한 이메일이 고유하기를 원합니다.

이 규칙을 적용하려면 다음과 같이 CREATE TABLE 문에 고유 제약 조건을 생성하세요.

CREATE TABLE IF NOT EXISTS contacts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    phone VARCHAR(15) NOT NULL,
    email VARCHAR(100) NOT NULL,
    UNIQUE KEY unique_email (email)
);

mysql에 고유 인덱스를 추가하는 방법

SHOW INDEXES 문을 사용하면 MySQL UNIQUE가 이메일 열에 대한 인덱스를 생성하는 것을 볼 수 있습니다.

SHOW INDEXES FROM contacts;

mysql에 고유 인덱스를 추가하는 방법

연락처 테이블에 행을 삽입해 보겠습니다.

INSERT INTO contacts(first_name,last_name,phone,email)
VALUES(&#39;John&#39;,&#39;Doe&#39;,&#39;(408)-999-9765&#39;,&#39;john.doe@mysqltutorial.org&#39;);

mysql에 고유 인덱스를 추가하는 방법

이제 이메일 주소가 john.doe@mysqltutorial.org인 줄을 삽입하려고 하면 오류 메시지가 표시됩니다.

INSERT INTO contacts(first_name,last_name,phone,email)
VALUES(&#39;Johny&#39;,&#39;Doe&#39;,&#39;(408)-999-4321&#39;,&#39;john.doe@mysqltutorial.org&#39;);
ERROR 1062 (23000): Duplicate entry &#39;john.doe@mysqltutorial.org&#39; for key &#39;unique_email&#39;

mysql에 고유 인덱스를 추가하는 방법

원하는 이름, 성, 전화번호 조합도 연락처 간에 고유하다고 가정하세요. 이 경우 아래와 같이 CREATE INDEX 문 UNIQUE를 사용하여 이러한 열에 대한 인덱스를 생성할 수 있습니다.

CREATE UNIQUE INDEX idx_name_phone
ON contacts(first_name,last_name,phone);

테이블을 결합하면 오류 first_name, last_name 및 전화가 이미 존재하므로 연락처에 다음 행을 추가합니다.

INSERT INTO contacts(first_name,last_name,phone,email)
VALUES(&#39;john&#39;,&#39;doe&#39;,&#39;(408)-999-9765&#39;,&#39;john.d@mysqltutorial.org&#39;);
rrree

【관련 추천: mysql 비디오 튜토리얼

위 내용은 mysql에 고유 인덱스를 추가하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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