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