La creación de una restricción sql unique, crea un índice único en esas columnas de forma predeterminada. El índice único será no agrupado a menos que se cree manualmente como un índice agrupado siempre que no haya ningún índice agrupado definido en esa tabla.
Por ejemplo, si aplicas la restricción SQL UNIQUE
a una columna llamada email
en una tabla de usuarios, ninguna fila puede tener el mismo valor de email
. Esto es esencial cuando trabajas con datos que deben ser únicos por naturaleza, como correos electrónicos, números de identificación, o cualquier otra información clave que no se debería repetir.
Sintaxis de la restricción SQL unique
Puedes definir la restricción sql UNIQUE
al momento de crear una tabla o añadirla posteriormente a una tabla existente. Veamos ambos casos:
Al crear una tabla:
Esta es la sintaxis SQL básica para crear una restricción de clave única utilizando la cláusula CREATE TABLE.
En este caso, la columna email
está definida como única, por lo que no permite dos usuarios con el mismo email.
CREATE TABLE usuarios (
id INT PRIMARY KEY,
nombre_usr VARCHAR(50),
email_usr VARCHAR(100) UNIQUE
);
Los parámetros utilizados aquí son:
- CREAR TABLA: para crear una nueva tabla en sql server.
- Column_name1, Column_name2,Column_name3: mencione el nombre de las columnas que desea crear en la tabla.
- tipo de datos: menciona el tipo de datos de cada columna de la tabla.
- [NULO | NOT NULL]: menciona si puede contener valores NULL o no
- ÚNICO: la palabra clave única escrita con el nombre de la columna crea una restricción sql de clave única. Asegura que no haya valores duplicados en esa columna en particular.
De los parámetros mencionados anteriormente, CREATE TABLE, un column_name y UNIQUE son parámetros obligatorios.
Añadiendo la restricción sql unique a una tabla existente:
ALTER TABLE usuarios
ADD CONSTRAINT unique_email UNIQUE (email);
Aquí, añadimos la restricción sql UNIQUE
a la columna email
.
Uso de la restricción sql UNIQUE en múltiples columnas
Es posible aplicar la restricción UNIQUE
a más de una columna en conjunto. Esto se conoce como una restricción sql UNIQUE
compuesta, y asegura que la combinación de valores en las columnas especificadas sea única, aunque los valores individuales en cada columna no lo sean necesariamente.
Por ejemplo:
sqlCopiar códigoCREATE TABLE empleados (
id INT PRIMARY KEY,
nombre VARCHAR(50),
departamento VARCHAR(50),
email VARCHAR(100),
UNIQUE (nombre, departamento)
);
En este ejemplo, dos empleados pueden tener el mismo nombre o estar en el mismo departamento, pero no pueden tener ambos valores iguales en las columnas nombre
y departamento
al mismo tiempo. Esto puede ser útil en situaciones donde los valores individuales no tienen que ser únicos, pero sí su combinación.
Comparación con la restricción sql unique vs PRIMARY KEY
La restricción UNIQUE
es similar a la restricción PRIMARY KEY
, pero hay algunas diferencias clave:
Característica | PRIMARY KEY | UNIQUE |
---|---|---|
Objetivo principal | Marca de manera única cada fila en una tabla. | Garantizar que los valores de una columna o conjunto de columnas sean únicos. |
Nulabilidad | No permite valores NULL . | Permite un valor NULL (o varios si se combinan en un índice multicolumna). |
Cantidad por tabla | Solo puede haber una clave primaria por tabla. | Puede haber múltiples restricciones sql UNIQUE en una tabla. |
Índice | Crea un índice único automáticamente. | Crea un índice único, pero puede coexistir con otros índices. |
Combinación de columnas | Puede ser compuesto por una o más columnas. | También puede ser compuesto por una o más columnas. |
Uso en relaciones | Se utiliza principalmente para referenciar otras tablas (clave foránea). | No es comúnmente usada como referencia, pero puede ser parte de claves foráneas. |
PRIMARY KEY
: Es una restricción más estricta, que no permite valores nulos y define el identificador único de cada registro.UNIQUE
: Garantiza la unicidad de los valores pero permite valores nulos y puede aplicarse a varias columnas o conjuntos de columnas en una tabla.
En general, la clave primaria es la que define la identidad de cada registro, mientras que UNIQUE
se usa cuando deseas evitar duplicados en una o varias columnas sin las restricciones adicionales de una clave primaria.
Ejemplo de clave primaria y clave única:
CREATE TABLE productos (
id INT PRIMARY KEY,
nombre VARCHAR(100) UNIQUE
);
En este caso, la columna id
es la clave primaria y no puede tener valores duplicados ni NULL
, mientras que la columna nombre
tiene una restricción sql UNIQUE
que impide duplicados, pero podría permitir un valor NULL
.
Ventajas de la restricción sql UNIQUE
- Integridad de los datos: La restricción sql
UNIQUE
hace que los datos almacenados en una columna no se repitan. - Mejora rendimiento en las consultas: Al imponer la unicidad en una columna, las bases de datos suelen crear índices automáticos para estas columnas.
- Mantenimiento de reglas de negocio: En muchos sistemas, existen reglas que establecen que ciertos datos deben ser únicos. La restricción sql
UNIQUE
ayuda a implementar esas reglas. - Facilidad de mantenimiento: Las restricciones de unicidad en la base de datos facilitan el mantenimiento a largo plazo, ya que se puede confiar en que no se ingresarán valores duplicados por error.
Limitaciones de la restricción UNIQUE
A pesar de sus ventajas, la restricción UNIQUE
también tiene algunas limitaciones:
- Un valor
NULL
permitido: Aunque una columna con restricciónUNIQUE
puede aceptar valoresNULL
, solo se permite uno. Esto puede ser una limitación si necesitas que una columna permita múltiples valoresNULL
sin imponer unicidad en ellos. - No garantiza unicidad en datos altamente dinámicos: En aplicaciones donde los datos se modifican o eliminan constantemente, puede haber situaciones en las que las restricciones de unicidad sean difíciles de mantener sin bloqueos o estrategias de concurrencia adecuadas.
- Mayor sobrecarga de mantenimiento: Crear restricciones
UNIQUE
en columnas que no deberían tener duplicados es beneficioso, pero también implica un costo en términos de rendimiento cuando inserta o actualiza datos. Las bases de datos deben verificar que la restricción de unicidad se mantenga, lo que puede afectar el rendimiento en tablas grandes con muchas actualizaciones.
Resumen
Hoy, hemos explorado varias restricciones disponibles en SQL Server, como la clave principal, la clave externa, la clave única y las restricciones CHECK. Hemos aprendido a crear, modificar, eliminar o descartar y deshabilitar restricciones de clave única. También hemos entendido las similitudes y diferencias entre la clave principal y las restricciones de clave única y también hemos comparado las restricciones de clave única con los índices únicos.
Algunos de los puntos principales de la restricción ÚNICA se enumeran a continuación:
- Si dos tuplas tienen la misma restricción ÚNICA, obtendrá un mensaje de error como resultado de la consulta.
- La declaración ALTER TABLE se puede usar como una herramienta en SQL para agregar o eliminar una restricción única de una tabla existente.
- Cuando especifica una restricción ÚNICA, se crea inmediatamente un índice único, lo que permite que la base de datos imponga de manera efectiva la unicidad de los datos.
- Utilice la restricción ÚNICA siempre que desee garantizar que los datos de una determinada columna o colección de columnas sean únicos.