Resumo :neste tutorial, você aprenderá como usar o SQLite
UNIQUE restrição para garantir que todos os valores em uma coluna ou grupo de colunas sejam exclusivos. Introdução ao SQLite UNIQUE restrição
Um
UNIQUE A restrição garante que todos os valores em uma coluna ou grupo de colunas sejam distintos uns dos outros ou exclusivos. Para definir um
UNIQUE restrição, você usa o UNIQUE palavra-chave seguida por uma ou mais colunas. Você pode definir um
UNIQUE restrição no nível da coluna ou da tabela. Apenas no nível da tabela, você pode definir um UNIQUE restrição em várias colunas. O seguinte mostra como definir um
UNIQUE restrição para uma coluna no nível da coluna:CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql) Ou no nível da mesa:
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql) O seguinte ilustra como definir um
UNIQUE restrição para várias colunas:CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql) Uma vez que um
UNIQUE estiver definida, se você tentar inserir ou atualizar um valor que já existe na coluna, o SQLite emitirá um erro e abortará a operação. SQLite UNIQUE exemplos de restrições
Vejamos alguns exemplos de uso do
UNIQUE limitação. Definindo um UNIQUE restrição para um exemplo de coluna
A instrução a seguir cria uma nova tabela chamada
contacts com um UNIQUE restrição definida para o email coluna: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) O exemplo a seguir insere uma nova linha nos
contacts tabela:INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','john.doe@gmail.com');
Code language: SQL (Structured Query Language) (sql) Se você tentar inserir um novo contato com o mesmo e-mail, receberá uma mensagem de erro:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','john.doe@gmail.com');
Code language: SQL (Structured Query Language) (sql) Aqui está a mensagem de erro:
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql) Definindo um UNIQUE exemplo de restrição para várias colunas
A instrução a seguir cria as
shapes tabela com um UNIQUE restrição definida para o background_color e foreground_color colunas: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) A instrução a seguir insere uma nova linha nas
shapes tabela:INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql) A instrução a seguir funciona porque não há violação de duplicação em
background_color e foreground_color colunas:INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql) No entanto, a instrução a seguir causa um erro devido às duplicatas em
background_color e foreground_color colunas:INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql) Aqui está o erro:
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 restrição e NULL
SQLite trata todos os valores NULL são diferentes, portanto, uma coluna com um
UNIQUE restrição pode ter vários valores NULL. A instrução a seguir cria uma nova tabela chamada
lists cujo email coluna tem um UNIQUE limitação:CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql) A instrução a seguir insere vários valores NULL no
email coluna das lists tabela:INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql) Vamos consultar dados das
lists tabela:SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql) Aqui está a saída:
Como você pode ver, mesmo que a coluna de email tenha um
UNIQUE restrição, ele pode aceitar vários valores NULL. Neste tutorial, você aprendeu como usar o SQLite
UNIQUE restrição para garantir que todos os valores em uma coluna ou grupo de colunas sejam exclusivos.