- 1 1. Pendahuluan
- 2 2. Dasar‑dasar Constraint UNIQUE
- 3 3. Cara Menggunakan Constraint UNIQUE
- 4 4. Pertimbangan Penting untuk Constraint UNIQUE
- 5 5. Pertanyaan yang Sering Diajukan (FAQ)
- 5.1 Q1: Apa perbedaan antara UNIQUE dan PRIMARY KEY?
- 5.2 Q2: Apa yang terjadi jika Anda menerapkan batasan UNIQUE pada kolom yang mengizinkan nilai NULL?
- 5.3 Q3: Kapan sebaiknya menggunakan batasan UNIQUE komposit?
- 5.4 Q4: Bisakah Anda menambahkan batasan UNIQUE jika data duplikat sudah ada?
- 5.5 Q5: Apakah menghapus batasan UNIQUE juga menghapus indeksnya?
- 6 6. Ringkasan
1. Pendahuluan
Dalam perancangan basis data, menjaga keunikan data sangat penting. Jika data yang sama terdaftar berkali‑kali, hal itu dapat menyebabkan kegagalan sistem dan menghasilkan inkonsistensi data. MySQL menyediakan fitur yang disebut constraint UNIQUE untuk mencegah masalah ini.
Sebagai contoh, ketika pengguna mendaftar ke layanan web, jika alamat email yang sama terdaftar berulang kali, dapat muncul kesalahan login. Untuk menghindari situasi tersebut, Anda dapat menggunakan constraint UNIQUE agar nilai pada kolom tertentu tetap unik.
Dalam artikel ini, kami menjelaskan secara jelas tentang constraint UNIQUE MySQL—dari penggunaan dasar hingga contoh lanjutan. Kami juga membahas pertimbangan penting serta pertanyaan yang sering diajukan sehingga Anda dapat langsung menerapkan pengetahuan ini pada proyek dunia nyata.
2. Dasar‑dasar Constraint UNIQUE
Apa Itu Constraint UNIQUE?
Constraint UNIQUE di MySQL mencegah nilai duplikat pada satu kolom atau kombinasi kolom tertentu. Dengan menerapkan constraint ini, Anda memastikan bahwa nilai yang sama tidak dapat dimasukkan lebih dari satu kali.
Perbedaan Antara UNIQUE dan PRIMARY KEY
MySQL juga menyediakan constraint PRIMARY KEY, yang berbeda dari constraint UNIQUE dalam beberapa hal.
- PRIMARY KEY Selalu NOT NULL
PRIMARY KEYtidak hanya menjamin keunikan tetapi juga melarang nilai NULL. Sebaliknya, constraintUNIQUEmemperbolehkan nilai NULL. - Hanya Satu PRIMARY KEY per Tabel Sebuah tabel hanya dapat memiliki satu
PRIMARY KEY, sementara banyak constraintUNIQUEdapat didefinisikan dalam tabel yang sama.
Kasus Penggunaan Umum untuk Constraint UNIQUE
Constraint UNIQUE biasanya digunakan dalam skenario berikut:
- Alamat email atau nama pengguna Ketika setiap pengguna harus memiliki alamat email atau nama pengguna yang unik.
- Nomor produk atau nomor pesanan Ketika ID produk atau ID pesanan tidak boleh diduplikasi.
- Kondisi komposit Ketika Anda perlu menjamin keunikan di antara dua kolom atau lebih.
3. Cara Menggunakan Constraint UNIQUE
Definisikan Saat Membuat Tabel
Di MySQL, Anda dapat mendefinisikan constraint UNIQUE secara langsung saat membuat tabel baru.
Contoh: Terapkan pada Satu Kolom
CREATE TABLE users (
id INT AUTO_INCREMENT,
email VARCHAR(255) UNIQUE,
PRIMARY KEY (id)
);
Pada contoh ini, kolom email memiliki constraint UNIQUE. Mencoba memasukkan alamat email yang sama berulang kali akan menghasilkan error.
Contoh: Beberapa Kolom (Composite UNIQUE Constraint)
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
product_id INT,
user_id INT,
UNIQUE (product_id, user_id),
PRIMARY KEY (order_id)
);
Contoh ini memastikan bahwa kombinasi product_id dan user_id bersifat unik. Ini berguna ketika Anda ingin mencegah pengguna yang sama memesan produk yang sama berkali‑kali.
Tambahkan Constraint pada Tabel yang Sudah Ada
Anda juga dapat menambahkan constraint UNIQUE pada tabel yang sudah ada.
Contoh: Tambahkan Constraint pada Satu Kolom
ALTER TABLE users
ADD CONSTRAINT unique_email UNIQUE (email);
Contoh: Tambahkan Constraint Komposit
ALTER TABLE orders
ADD CONSTRAINT unique_product_user UNIQUE (product_id, user_id);
Cara Menghapus Constraint
Untuk menghapus constraint yang sudah ada, gunakan pernyataan SQL berikut:
Hapus Constraint Satu Kolom
ALTER TABLE users
DROP INDEX unique_email;
Hapus Constraint Komposit
ALTER TABLE orders
DROP INDEX unique_product_user;
4. Pertimbangan Penting untuk Constraint UNIQUE
Menangani Nilai NULL
Saat menerapkan constraint UNIQUE pada kolom yang memperbolehkan nilai NULL, aturan khusus berlaku. MySQL tidak menghasilkan error meskipun terdapat beberapa nilai NULL dalam kolom yang sama. Hal ini karena MySQL memperlakukan nilai NULL sebagai “tidak sama dengan apa pun”.
Contoh:
CREATE TABLE test_table (
id INT AUTO_INCREMENT,
column1 INT UNIQUE,
PRIMARY KEY (id)
);
Sekarang, masukkan data berikut:
INSERT INTO test_table (column1) VALUES (NULL);
INSERT INTO test_table (column1) VALUES (NULL);
Tidak akan terjadi kesalahan. Ini karena nilai NULL dianggap tidak sama dengan nilai lain apa pun, termasuk NULL lainnya.
Dampak Kinerja
Saat Anda mendefinisikan batasan UNIQUE, MySQL secara otomatis membuat indeks secara internal. Indeks ini membantu pencarian dan pengurutan data tetapi dapat mengurangi kinerja saat menyisipkan atau memperbarui volume data yang besar.
- Catatan 1: Saat menyisipkan jumlah data besar sekaligus, batasan
UNIQUEharus diperiksa, yang dapat memperlambat pemrosesan. - Catatan 2: Untuk menjaga kinerja optimal, pertimbangkan untuk membangun ulang indeks sebelum volume data menjadi terlalu besar.
Penanganan Kesalahan Saat Terjadi
Jika terjadi pelanggaran batasan UNIQUE, MySQL mengembalikan kode kesalahan “1062.” Kesalahan ini dipicu saat mencoba menyisipkan data duplikat.
Contoh:
INSERT INTO users (email) VALUES ('test@example.com');
INSERT INTO users (email) VALUES ('test@example.com');
Penyisipan kedua akan menghasilkan kesalahan.
Solusi:
- Periksa apakah data sudah ada sebelum menyisipkan.
SELECT COUNT(*) FROM users WHERE email = 'test@example.com';
- Gunakan
ON DUPLICATE KEY UPDATEuntuk memperbarui data saat duplikat terdeteksi.INSERT INTO users (email) VALUES ('test@example.com') ON DUPLICATE KEY UPDATE email = 'test@example.com';
5. Pertanyaan yang Sering Diajukan (FAQ)
Q1: Apa perbedaan antara UNIQUE dan PRIMARY KEY?
PRIMARY KEY menjamin keunikan dan tidak mengizinkan nilai NULL. Hanya satu PRIMARY KEY yang dapat didefinisikan per tabel. Sebaliknya, batasan UNIQUE dapat didefinisikan pada beberapa kolom dan mengizinkan nilai NULL.
Q2: Apa yang terjadi jika Anda menerapkan batasan UNIQUE pada kolom yang mengizinkan nilai NULL?
Beberapa nilai NULL dapat disisipkan. Ini karena MySQL memperlakukan nilai NULL sebagai tidak dapat dibandingkan.
Q3: Kapan sebaiknya menggunakan batasan UNIQUE komposit?
Ini digunakan saat Anda ingin menjamin keunikan di seluruh kombinasi kolom, seperti memastikan bahwa kombinasi product_id dan user_id unik. Ini membantu mencegah pengguna memesan produk yang sama beberapa kali.
Q4: Bisakah Anda menambahkan batasan UNIQUE jika data duplikat sudah ada?
Tidak. Jika data duplikat sudah ada, Anda tidak dapat menambahkan batasan UNIQUE. Anda harus menghapus atau memperbaiki catatan duplikat terlebih dahulu sebelum menambahkan batasan.
Q5: Apakah menghapus batasan UNIQUE juga menghapus indeksnya?
Ya. Saat Anda menghapus batasan UNIQUE, indeks terkait juga dihapus.

6. Ringkasan
Batasan UNIQUE MySQL adalah fitur yang sangat berguna untuk memastikan keunikan data. Dengan memahami perbedaannya dari PRIMARY KEY dan bagaimana nilai NULL ditangani, Anda dapat secara signifikan meningkatkan kualitas desain basis data Anda.
Penggunaan yang tepat dari batasan UNIQUE sangat penting untuk menjaga integritas basis data. Gunakan metode dan pertimbangan yang dijelaskan dalam artikel ini untuk meningkatkan desain dan implementasi basis data Anda.
Dalam artikel berikutnya, kami akan mengeksplorasi cara menggunakan indeks secara efektif di MySQL dan membahas batasan lain seperti FOREIGN KEY dan CHECK. Tetap ikuti!


