# Operadores de conjuntos En sql se pueden tomar dos conjuntos de datos y hacer operaciones de conjuntos como union, interseccion o resta, para ello se utiliza loq ue se conoce como operadores de conjunto y existen varios de ellos. Haremos una revision general. ![](assets/20220105_030256_1.png) ## UNION y UNION ALL Esete operador permite unir o sumar dos conjuntos de datos. *Sintaxis* ``` SELECT campo from tabla UNION SELECT otrocampo from otratabla ``` Esta unión se puede hacer de dos tablas diferentes, con la única condición de que el número de campos y tipos de datos sean compatibles entre un SELECT y el otro. ![](assets/20220116_173701_Circle1.png) En las operaciones de conjuntos equivale, el ejemplo anterior equivale a A ∪ B. ### Implementación *Sintaxis* ``` select id from categorias c union select id from productos p ``` ![](assets/20220116_173735_word-image-416.png) Además, se puede hacer una diferenciación entre UNION y un UNION ALL permitiendo o no duplicados que además influye en el tiempo o número de registros que regresa cada uno de ellos, pero en general se trata de la unión de conjuntos. ## INTERSECT Toma dos consultas de entrada (mismo número de campos y tipos de datos compatibles) y genera una salida con los registros que están en ambas entradas. En las operaciones de conjuntos tradicionales, la intersección de A y B se denota como A ∩ B y se codifica en términos generales como. ![](assets/20220116_174156_word-image-419.png) *Sintaxis* ``` SELECT campo from tabla INTERSECT SELECT otrocampo from otratabla ``` En mysql no se encuentra la instruccion except en algunos otros dbms se utiliza minus en mysql se suele usar para esta tarea NOT IN, NOT EXIST o inluso con un LEFT OUTER JOIN *Sintaxis* ``` SELECT campo from tabla WHERE campo IN (SELECT otrocampo from otratabla) ``` ### Implementación *Sintaxis* ``` select id from tabla1 where id in (select id from tabla2) ``` # EXCEPT Toma dos consultas y genera una salida con los registros que se encuentren en la primera pero que no se encuentren en la segunda. Si UNION equivale a una suma de conjuntos, EXCEPT equivaldría a una resta en terminos generales se escribe como. ![](assets/20220116_174115_Circle2.png) *Sintaxis* ``` SELECT campo from tabla EXCEPT SELECT otrocampo from otratabla ``` En mysql no se encuentra la instruccion except en algunos otros dbms se utiliza minus en mysql se suele usar para esta tarea NOT IN, NOT EXIST o inluso con un LEFT OUTER JOIN *Sintaxis* ``` SELECT campo from tabla WHERE campo NOT IN (SELECT otrocampo from otratabla) ```