Ringkasan :dalam tutorial ini, Anda akan belajar bagaimana menggunakan SQLite UNIQUE
batasan untuk memastikan semua nilai dalam kolom atau grup kolom adalah unik.
Pengantar SQLite UNIQUE
kendala
Sebuah UNIQUE
kendala memastikan semua nilai dalam kolom atau grup kolom berbeda satu sama lain atau unik.
Untuk menentukan UNIQUE
kendala, Anda menggunakan UNIQUE
kata kunci diikuti oleh satu atau lebih kolom.
Anda dapat menentukan UNIQUE
kendala pada kolom atau tingkat tabel. Hanya di tingkat tabel, Anda dapat menentukan UNIQUE
batasan di beberapa kolom.
Berikut ini menunjukkan cara mendefinisikan UNIQUE
kendala untuk kolom di tingkat kolom:
CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql)
Atau di tingkat tabel:
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)
Berikut ini mengilustrasikan cara mendefinisikan UNIQUE
batasan untuk beberapa kolom:
CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)
Sekali UNIQUE
batasan didefinisikan, jika Anda mencoba memasukkan atau memperbarui nilai yang sudah ada di kolom, SQLite akan mengeluarkan kesalahan dan membatalkan operasi.
SQLite UNIQUE
contoh kendala
Mari kita ambil beberapa contoh penggunaan UNIQUE
kendala.
Mendefinisikan UNIQUE
batasan untuk satu contoh kolom
Pernyataan berikut membuat tabel baru bernama contacts
dengan UNIQUE
batasan yang ditentukan untuk email
kolom:
CREATE TABLE contacts(
contact_id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
email TEXT NOT NULL UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Contoh berikut menyisipkan baris baru ke dalam contacts
tabel:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Jika Anda mencoba memasukkan kontak baru dengan email yang sama, Anda akan mendapatkan pesan kesalahan:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Berikut adalah pesan kesalahannya:
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)
Mendefinisikan UNIQUE
kendala untuk beberapa kolom contoh
Pernyataan berikut membuat shapes
tabel dengan UNIQUE
batasan yang ditentukan untuk background_color
dan foreground_color
kolom:
CREATE TABLE shapes(
shape_id INTEGER PRIMARY KEY,
background_color TEXT,
foreground_color TEXT,
UNIQUE(background_color,foreground_color)
);
Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut menyisipkan baris baru ke dalam shapes
tabel:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut berfungsi karena tidak ada pelanggaran duplikasi di kedua background_color
dan foreground_color
kolom:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)
Namun, pernyataan berikut menyebabkan kesalahan karena duplikat di kedua background_color
dan foreground_color
kolom:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Inilah kesalahannya:
Error while executing SQL query on database 'chinook': `UNIQUE` constraint failed: shapes.background_color, shapes.foreground_color
Code language: SQL (Structured Query Language) (sql)
SQLite UNIQUE
kendala dan NULL
SQLite memperlakukan semua nilai NULL berbeda, oleh karena itu, kolom dengan UNIQUE
batasan dapat memiliki beberapa nilai NULL.
Pernyataan berikut membuat tabel baru bernama lists
yang email
kolom memiliki UNIQUE
kendala:
CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
Pernyataan berikut menyisipkan beberapa nilai NULL ke dalam email
kolom lists
tabel:
INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)
Mari kita query data dari lists
tabel:
SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)
Berikut adalah outputnya:
Seperti yang Anda lihat, meskipun kolom email memiliki UNIQUE
kendala, ia dapat menerima beberapa nilai NULL.
Dalam tutorial ini, Anda telah belajar bagaimana menggunakan SQLite UNIQUE
batasan untuk memastikan semua nilai dalam kolom atau grup kolom adalah unik.