SQLite
 sql >> Baza danych >  >> RDS >> SQLite

UNIKALNE wiązanie SQLite

Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite UNIQUE ograniczenie zapewniające, że wszystkie wartości w kolumnie lub grupie kolumn są niepowtarzalne.

Wprowadzenie do SQLite UNIQUE ograniczenie

UNIQUE ograniczenie zapewnia, że ​​wszystkie wartości w kolumnie lub grupie kolumn różnią się od siebie lub są niepowtarzalne.

Aby zdefiniować UNIQUE ograniczenie, użyj UNIQUE słowo kluczowe, po którym następuje co najmniej jedna kolumna.

Możesz zdefiniować UNIQUE wiązanie na poziomie kolumny lub tabeli. Tylko na poziomie tabeli możesz zdefiniować UNIQUE ograniczenie w wielu kolumnach.

Poniżej pokazano, jak zdefiniować UNIQUE ograniczenie dla kolumny na poziomie kolumny:

CREATE TABLE table_name(
    ...,
    column_name type UNIQUE,
    ...
);
Code language: SQL (Structured Query Language) (sql)

Lub na poziomie stołu:

CREATE TABLE table_name(
    ...,
    UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)

Poniższe ilustruje, jak zdefiniować UNIQUE ograniczenie dla wielu kolumn:

CREATE TABLE table_name(
    ...,
    UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)

Raz UNIQUE ograniczenie jest zdefiniowane, jeśli spróbujesz wstawić lub zaktualizować wartość, która już istnieje w kolumnie, SQLite wygeneruje błąd i przerwie operację.

SQLite UNIQUE przykłady ograniczeń

Weźmy kilka przykładów użycia UNIQUE ograniczenie.

Definiowanie UNIQUE ograniczenie dla przykładu jednej kolumny

Poniższa instrukcja tworzy nową tabelę o nazwie contacts z UNIQUE ograniczenie zdefiniowane dla email kolumna:

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)

Poniższy przykład wstawia nowy wiersz do contacts tabela:

INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)

Jeśli spróbujesz wstawić nowy kontakt z tym samym adresem e-mail, otrzymasz komunikat o błędzie:

INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)

Oto komunikat o błędzie:

Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)

Definiowanie UNIQUE Przykład ograniczenia dla wielu kolumn

Poniższa instrukcja tworzy shapes tabela z UNIQUE ograniczenie zdefiniowane dla background_color i foreground_color kolumny:

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)

Poniższa instrukcja wstawia nowy wiersz do shapes tabela:

INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)

Poniższa instrukcja działa z powodu braku naruszenia duplikacji w obu background_color i foreground_color kolumny:

INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)

Jednak poniższa instrukcja powoduje błąd z powodu duplikatów w obu background_color i foreground_color kolumny:

INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)

Oto błąd:

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 ograniczenie i NULL

SQLite traktuje wszystkie wartości NULL są różne, dlatego kolumna z UNIQUE ograniczenie może mieć wiele wartości NULL.

Poniższa instrukcja tworzy nową tabelę o nazwie lists czyj email kolumna ma UNIQUE ograniczenie:

CREATE TABLE lists(
    list_id INTEGER PRIMARY KEY,
    email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)

Poniższa instrukcja wstawia wiele wartości NULL do email kolumna lists tabela:

INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)

Przeszukujmy dane z lists tabela:

SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)

Oto wynik:

Jak widać, mimo że kolumna e-mail ma UNIQUE ograniczenie, może przyjąć wiele wartości NULL.

W tym samouczku nauczyłeś się korzystać z SQLite UNIQUE ograniczenie zapewniające, że wszystkie wartości w kolumnie lub grupie kolumn są niepowtarzalne.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLiteOpenHelper:metoda onCreate() nie jest wywoływana na urządzeniu fizycznym

  2. Jak dodać tylko różne wartości za pomocą SQLite Sum()

  3. Zapytanie SQLite:uzyskać wszystkie kolumny wiersza (Android)?

  4. Przywróć bazę danych SQLite

  5. Czy są jakieś metody, które pomagają w rozwiązywaniu typowych problemów z SQLite?