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.