Rumah >pangkalan data >tutorial mysql >Bagaimanakah MySQL Mengendalikan Kekangan Unik dan Nilai Null?

Bagaimanakah MySQL Mengendalikan Kekangan Unik dan Nilai Null?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 19:13:10160semak imbas

How Does MySQL Handle Unique Constraints and Null Values?

Kekangan Unik dan Nilai Null dalam MySQL

Dalam reka bentuk pangkalan data, kekangan unik digunakan untuk memastikan bahawa lajur atau set lajur tertentu dalam jadual mengandungi hanya nilai yang berbeza. Walau bagaimanapun, kadangkala wajar untuk membenarkan nilai nol dalam lajur yang mempunyai kekangan unik. Dalam MySQL, ini sememangnya mungkin.

MySQL membenarkan berbilang baris mempunyai nilai nol dalam lajur dengan kekangan unik. Ini bermakna nilai nol pendua mungkin dalam lajur tanpa melanggar kekangan.

Untuk menggambarkan tingkah laku ini, pertimbangkan contoh berikut:

CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1);   -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;

Apabila anda melaksanakan pernyataan di atas, MySQL memasukkan tiga baris ke dalam jadual. Pernyataan sisipan pertama berjaya kerana nilai 'x' adalah unik (1). Pernyataan sisipan kedua gagal kerana nilai 'x' (1) sudah wujud dan ia melanggar kekangan unik. Walau bagaimanapun, pernyataan sisipan ketiga dan keempat berjaya kerana nilai 'x' adalah batal, yang dibenarkan di bawah kekangan unik dalam MySQL.

Hasil kenyataan SELECT akan memaparkan baris berikut:

x
NULL
NULL
1

Adalah penting untuk ambil perhatian bahawa tingkah laku ini khusus untuk MySQL. Pangkalan data lain, seperti SQL Server 2005 atau lebih lama, tidak membenarkan berbilang nilai nol dalam lajur dengan kekangan unik. Mereka biasanya membenarkan hanya satu nilai nol dalam senario sedemikian.

Atas ialah kandungan terperinci Bagaimanakah MySQL Mengendalikan Kekangan Unik dan Nilai Null?. 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