SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

Batasan UNIK SQLite

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peringatan Python dan SQLite

  2. Apa Itu SQLite?

  3. 5 Cara Memeriksa Tipe Data Kolom di SQLite

  4. Cara memfilter dalam hubungan satu ke banyak dengan kamar android db

  5. Bagaimana cara menghapus baris tertentu di Database SQLite