Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menambah indeks unik dalam mysql

Bagaimana untuk menambah indeks unik dalam mysql

青灯夜游
青灯夜游asal
2022-06-20 18:50:0221189semak imbas

Tiga cara untuk menambah: 1. Gunakan pernyataan "CREATE INDEX" untuk menambah, sintaks "CREATE UNIQUE INDEX index name ON table name (column name list);" 2. Tambah semasa membuat jadual, sintaks "CREATE TABLE Table name (... UNIQUE KEY (column name list));" 3. Ditambah semasa mengubah suai jadual, sintaks ialah "ALTER TABLE table name ADD CONSTRAINT index name UNIQUE KEY (senarai nama lajur); ".

Bagaimana untuk menambah indeks unik dalam mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

indeks unik mysql (UNIK)

Untuk menguatkuasakan nilai unik untuk satu atau lebih lajur, kekangan KUNCI UTAMA biasanya digunakan. Walau bagaimanapun, setiap jadual hanya boleh mempunyai satu kunci utama. Oleh itu, anda tidak boleh menggunakan kekangan kunci utama jika anda ingin memasukkan berbilang lajur atau set lajur dengan nilai unik.

Nasib baik, MySQL menyediakan indeks lain yang dipanggil indeks UNIK yang membolehkan anda menguatkuasakan nilai untuk menjadi unik kepada satu atau lebih lajur. Tidak seperti indeks PRIMARY KEY, UNIQUE boleh mempunyai berbilang indeks setiap jadual.

Untuk mencipta indeks UNIK, gunakan <span style="background-color: rgb(255, 255, 255); color: rgb(68, 68, 68); font-family berikut : " 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> pernyataan:

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

dalam satu atau lebih lajur Lain cara untuk menguatkuasakan keunikan nilai adalah dengan menggunakan kekangan UNIK.

Apabila anda mencipta kekangan UNIK, MySQL UNIQUE mencipta indeks di sebalik tabir.

Pernyataan berikut menggambarkan cara mencipta kekangan unik semasa mencipta jadual.

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

Anda juga boleh menggunakan pernyataan ALTER TABLE untuk menambah indeks unik (UNIK) pada jadual sedia ada

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

contoh indeks UNIK MySQL

Andaikan anda mahu mengurus kenalan dalam apl. Anda juga mahu e-mel untuk setiap kenalan dalam jadual kenalan menjadi unik.

Untuk menguatkuasakan peraturan ini, buat kekangan unik dalam kenyataan CREATE TABLE seperti berikut:

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)
);

Bagaimana untuk menambah indeks unik dalam mysql

Jika menggunakan pernyataan SHOW INDEXES, Anda akan lihat bahawa MySQL UNIQUE mencipta indeks untuk lajur e-mel.

SHOW INDEXES FROM contacts;

Bagaimana untuk menambah indeks unik dalam mysql

Mari masukkan baris ke dalam jadual kenalan.

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;);

Bagaimana untuk menambah indeks unik dalam mysql

Kini, jika anda cuba memasukkan baris yang e-melnya ialah john.doe@mysqltutorial.org, anda akan mendapat mesej ralat.

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;

Bagaimana untuk menambah indeks unik dalam mysql

Andaikan anda mahu gabungan nama_pertama, nama_keluarga dan telefon menjadi unik dalam kalangan kenalan juga. Dalam kes ini, anda boleh mencipta indeks untuk lajur ini menggunakan penyata CREATE INDEX UNIQUE seperti berikut:

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

Tambah baris berikut pada kenalan kerana menggabungkan jadual akan menyebabkan ralat first_name, last_name dan telefon sudah wujud .

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;);
ERROR 1062 (23000): Duplicate entry &#39;john-doe-(408)-999-9765&#39; for key &#39;idx_name_phone&#39;

[Cadangan berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci Bagaimana untuk menambah indeks unik dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn