Resumen :en este tutorial, aprenderá a usar SQLite UNIQUE
restricción para garantizar que todos los valores en una columna o un grupo de columnas sean únicos.
Introducción a SQLite UNIQUE
restricción
UN UNIQUE
La restricción garantiza que todos los valores de una columna o un grupo de columnas sean distintos entre sí o únicos.
Para definir un UNIQUE
restricción, utiliza el UNIQUE
palabra clave seguida de una o más columnas.
Puedes definir un UNIQUE
restricción a nivel de columna o de tabla. Solo a nivel de tabla, puede definir un UNIQUE
restricción en varias columnas.
A continuación se muestra cómo definir un UNIQUE
restricción para una columna en el nivel de columna:
CREATE TABLE table_name(
...,
column_name type UNIQUE,
...
);
Code language: SQL (Structured Query Language) (sql)
O a nivel de mesa:
CREATE TABLE table_name(
...,
UNIQUE(column_name)
);
Code language: SQL (Structured Query Language) (sql)
A continuación se ilustra cómo definir un UNIQUE
restricción para varias columnas:
CREATE TABLE table_name(
...,
UNIQUE(column_name1,column_name2,...)
);
Code language: SQL (Structured Query Language) (sql)
Una vez un UNIQUE
se define la restricción, si intenta insertar o actualizar un valor que ya existe en la columna, SQLite emitirá un error y cancelará la operación.
SQLite UNIQUE
ejemplos de restricciones
Tomemos algunos ejemplos del uso de UNIQUE
restricción.
Definiendo un UNIQUE
restricción para un ejemplo de columna
La siguiente declaración crea una nueva tabla llamada contacts
con un UNIQUE
restricción definida para el email
columna:
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)
El siguiente ejemplo inserta una nueva fila en contacts
tabla:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('John','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Si intenta insertar un nuevo contacto con el mismo correo electrónico, recibirá un mensaje de error:
INSERT INTO contacts(first_name,last_name,email)
VALUES ('Johnny','Doe','[email protected]');
Code language: SQL (Structured Query Language) (sql)
Aquí está el mensaje de error:
Error while executing SQL query on database 'chinook': UNIQUE constraint failed: contacts.email
Code language: SQL (Structured Query Language) (sql)
Definiendo un UNIQUE
ejemplo de restricción para varias columnas
La siguiente instrucción crea las shapes
tabla con un UNIQUE
restricción definida para el background_color
y foreground_color
columnas:
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)
La siguiente declaración inserta una nueva fila en las shapes
tabla:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
La siguiente declaración funciona debido a que no hay violación de duplicación en ambos background_color
y foreground_color
columnas:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','blue');
Code language: SQL (Structured Query Language) (sql)
Sin embargo, la siguiente declaración provoca un error debido a los duplicados tanto en background_color
y foreground_color
columnas:
INSERT INTO shapes(background_color,foreground_color)
VALUES('red','green');
Code language: SQL (Structured Query Language) (sql)
Aquí está el error:
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
restricción y NULL
SQLite trata todos los valores NULL son diferentes, por lo tanto, una columna con un UNIQUE
la restricción puede tener múltiples valores NULL.
La siguiente declaración crea una nueva tabla llamada lists
cuyo email
la columna tiene un UNIQUE
restricción:
CREATE TABLE lists(
list_id INTEGER PRIMARY KEY,
email TEXT UNIQUE
);
Code language: SQL (Structured Query Language) (sql)
La siguiente declaración inserta múltiples valores NULL en el email
columna de las lists
tabla:
INSERT INTO lists(email)
VALUES(NULL),(NULL);
Code language: SQL (Structured Query Language) (sql)
Consultamos datos de las lists
tabla:
SELECT * FROM lists;
Code language: SQL (Structured Query Language) (sql)
Aquí está la salida:
Como puede ver, aunque la columna de correo electrónico tiene un UNIQUE
restricción, puede aceptar múltiples valores NULL.
En este tutorial, ha aprendido a usar SQLite UNIQUE
restricción para garantizar que todos los valores en una columna o un grupo de columnas sean únicos.