SQL | Restricción ÚNICA

Restricciones SQL

La restricción única en SQL se usa para verificar si la subconsulta tiene tuplas duplicadas en su resultado. Devuelve un valor booleano que indica la presencia/ausencia de tuplas duplicadas. La construcción única devuelve verdadero solo si la consulta secundaria no tiene tuplas duplicadas; de lo contrario, devuelve falso.

Puntos importantes:

  • Se evalúa como verdadero en una subconsulta vacía.
  • Devuelve verdadero solo si hay tuplas únicas presentes como salida de la subconsulta (dos tuplas son únicas si el valor de cualquier atributo de las dos tuplas difiere).
  • Devuelve verdadero si la subconsulta tiene dos filas duplicadas con al menos un atributo como NULL.

Sintaxis:

SELECT table.ID
FROM  table
WHERE UNIQUE (SELECT table2.ID
              FROM table2
              WHERE table.ID = table2.ID);

Nota: Durante la ejecución, primero se evalúa la consulta externa para obtener table.ID. Después de esto, se procesa la subconsulta interna que produce una nueva relación que contiene el resultado de la consulta interna tal que table.ID == table2.ID. Si cada fila en la nueva relación es única, unique devuelve verdadero y el table.ID correspondiente se agrega como una tupla en la relación de salida producida. Sin embargo, si cada fila en la nueva relación no es única, entonces único se evalúa como falso y la tabla.ID correspondiente no se agrega a la relación de salida.

Único aplicado a una subconsulta devuelve falso si y solo si hay dos tuplas t1 y t2 tales que t1 = t2. Considera que t1 y t2 son dos tuplas diferentes, cuando se aplica único a una subconsulta que contiene t1 y t2 de modo que t1 = t2 y al menos uno de los atributos de estas tuplas contiene un valor NULL. El predicado único en este caso se evalúa como verdadero. Esto se debe a que un valor NULL en SQL se trata como un valor desconocido, por lo tanto, dos valores NULL se consideran distintos.

Nota: La instrucción SQL sin cláusula ÚNICA también se puede escribir como:

SELECT table.ID
FROM  table
WHERE 1 <= (SELECT count(table2.ID)
              FROM table2
              WHERE table.ID = table2.ID);

Consultas

Ejemplo 1: Encuentre todos los instructores que dictaron como máximo un curso en el año 2017. Relación del
instructor :

ID de empleado Nombre ID del curso Año
77505 Alan SC110 2017
77815 Voluntad CSE774 2017
85019 Herrero EE457 2017
92701 Sam PYS504 2017
60215 harold HSS103 2016
77505 Alan BIO775 2017
92701 Sam ECO980 2017
    Consulta SQL:
SELECT I.EMPLOYEEID, I.NAME
FROM Instructor as I
WHERE UNIQUE (SELECT Inst.EMPLOYEEID
              FROM Instructor as Inst
              WHERE I.EMPLOYEEID = Inst.EMPLOYEEID
                          and Inst.YEAR = 2017);

Producción:

ID de empleado Nombre
77815 Voluntad
85019 Herrero

Explicación: en la relación del instructor, solo los instructores Will y Smith enseñan un solo curso durante el año 2017. La subconsulta correspondiente a estos instructores contiene solo una única tupla y, por lo tanto, la cláusula única correspondiente a estos instructores se evalúa como verdadera, lo que produce estos dos instructores. en la relación de salida.

Ejemplo 2: Encuentre todos los cursos en el departamento de Ciencias de la Computación que tienen un solo instructor asignado a ese curso.
Relación del curso:

ID del curso Nombre Departamento InstructorID
CSE505 Red de computadoras Ciencias de la Computación 11071
CSE245 Sistema operativo Ciencias de la Computación 74505
CSE101 Programación Ciencias de la Computación 12715
HSS505 Psicología Ciencias Sociales 85017
EE475 Señales y Sistemas Eléctrico 22150
CSE314 SGBD Ciencias de la Computación 44704
CSE505 Red de computadoras Ciencias de la Computación 11747
CSE314 SGBD Ciencias de la Computación 44715
    Consulta SQL:
SELECT C.COURSEID, C.NAME
FROM Course as C
WHERE UNIQUE (SELECT T.INSTRUCTORID
              FROM Course as T
              WHERE T.COURSEID = C.COURSEID 
                          and C.DEPARTMENT = 'Computer Science');

Producción:

IDENTIFICADOR DEL CURSO Nombre
CSE245 Sistema operativo
CSE101 Programación

Explicación: En la relación de cursos, los únicos cursos en el departamento de informática que tienen un solo instructor asignado son Sistema Operativo y Programación. La restricción única correspondiente a estos dos cursos tiene una sola tupla que consta de los instructores correspondientes. Entonces, la cláusula única para estos dos cursos se evalúa como verdadera y estos cursos se muestran en relación de salida. Otros cursos en la relación Curso tienen dos o más instructores o no pertenecen al departamento de informática y, por lo tanto, esos cursos no se muestran en la relación de salida.

Este artículo es una contribución de Mayank Kumar . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *