b'\n_START_ARTICLE_\nOpera\xc3\xa7\xc3\xb5es SET (SQL)\n_START_PARAGRAPH_\nOpera\xc3\xa7\xc3\xb5es SET, em SQL, s\xc3\xa3o um conjunto de opera\xc3\xa7\xc3\xb5es realizadas sobre tabelas que se assemelham \xc3\xa0s opera\xc3\xa7\xc3\xb5es realizadas sobre conjuntos na teoria dos conjuntos. Entre essas opera\xc3\xa7\xc3\xb5es est\xc3\xa3o a uni\xc3\xa3o e interse\xc3\xa7\xc3\xa3o, que quando aplicadas \xc3\xa0s tabelas, atrav\xc3\xa9s dos operadores padr\xc3\xb5es da SQL, resultam em novas tabelas._NEWLINE_No contexto da SQL, estes operadores combinam dois ou mais comandos SELECT onde o retorno depende operador utilizado.\n_START_SECTION_\nOperador UNION\n_START_PARAGRAPH_\nEm SQL a cl\xc3\xa1usula UNION  combina os resultados de duas consultas SQL em uma \xc3\xbanica tabela para todas as linhas correspondentes. As duas consultas devem resultar no mesmo n\xc3\xbamero de colunas e em tipos de dados compat\xc3\xadveis com o objetivo de unirem-se. Quaisquer registros duplicados s\xc3\xa3o automaticamente removidos a menos que UNION ALL seja usado._NEWLINE_UNION pode ser \xc3\xbatil em aplica\xc3\xa7\xc3\xb5es de data warehouse onde tabelas n\xc3\xa3o s\xc3\xa3o perfeitamente normalizadas. Um simples exemplo poderia ser um banco de dados com as tabelas vendas2005 e vendas2006 que possuem estruturas id\xc3\xaanticas mas s\xc3\xa3o separadas devido \xc3\xa0s considera\xc3\xa7\xc3\xb5es de desempenho. Uma consulta UNION poderia combinar resultados das duas tabelas._NEWLINE_Observe que UNION n\xc3\xa3o garante a ordem das linhas. As linhas do segundo operando pode aparecer antes, depois ou misturadas com as linhas do primeiro operando. Em situa\xc3\xa7\xc3\xb5es onde uma ordem espec\xc3\xadfica \xc3\xa9 desejada, ORDER BY deve ser usada._NEWLINE_Observe que UNION ALL pode ser muito mais r\xc3\xa1pido que UNION.\n_START_SECTION_\nOperador INTERSECT\n_START_PARAGRAPH_\nO operador SQL INTERSECT pega o resultado de duas consultas e retorna apenas as linhas que aparecem em ambos os conjuntos resultantes. Para prop\xc3\xb3sitos de remo\xc3\xa7\xc3\xa3o de duplica\xc3\xa7\xc3\xa3o o operador INTERSECT n\xc3\xa3o faz distin\xc3\xa7\xc3\xa3o entre NULLs. O operador INTERSECT remove linhas duplicadas do conjunto resultante final.\n_START_SECTION_\nExemplo\n_START_PARAGRAPH_\nO exemplo a seguir de consulta INTERSECT retorna todas as linhas da tabela Ordens onde Quantidade est\xc3\xa1 entre 50 e 100._NEWLINE_SELECT *FROM   OrdensWHERE  Quantidade BETWEEN 1 AND 100INTERSECTSELECT *FROM   OrdensWHERE  Quantidade BETWEEN 50 AND 200;\n_START_SECTION_\nOperador EXCEPT\n_START_PARAGRAPH_\nO operador SQL EXCEPT pegas as linhas distintas de uma consulta e retorna as linhas que n\xc3\xa3o aparecem em um segundo conjunto resultante. O operador EXCEPT ALL (n\xc3\xa3o suportado em MSSQL) n\xc3\xa3o remove duplica\xc3\xa7\xc3\xb5es. Para prop\xc3\xb3sitos de elimina\xc3\xa7\xc3\xa3o de linha e remo\xc3\xa7\xc3\xa3o de duplica\xc3\xa7\xc3\xa3o, o operador EXCEPT n\xc3\xa3o faz distin\xc3\xa7\xc3\xa3o entre NULLs._NEWLINE_Notavelmente, a plataforma Oracle fornece um operador MINUS que \xc3\xa9 equivalente em funcionalidade ao operador EXCEPT DISTINCT do Padr\xc3\xa3o SQL.\n_START_SECTION_\nExemplo\n_START_PARAGRAPH_\nNo exemplo a seguir a consulta EXCEPT retorna todas as linhas da tabela Ordens onde Quantidade est\xc3\xa1 entre 1 e 49 e aquelas com uma Quantidade entre 76 e 100.  _NEWLINE_Formulada de outra maneira, a consulta retorna todas as linhas onde a Quantidade est\xc3\xa1 entre 1 e 100, al\xc3\xa9m de linhas onde a quantidade est\xc3\xa1 entre 50 e 75._NEWLINE_SELECT *FROM   OrdensWHERE  Quantidade BETWEEN 1 AND 100EXCEPTSELECT *FROM   OrdensWHERE  Quantidade BETWEEN 50 AND 75;_NEWLINE_Alternativamente, em implementa\xc3\xa7\xc3\xb5es da linguagem SQL sem o operador EXCEPT, a forma equivalente de um LEFT JOIN onde os valores do lado direito s\xc3\xa3o NULL pode ser usado em vez daquele.\n_START_SECTION_\nExemplo\n_START_PARAGRAPH_\nT/O seguinte exemplo \xc3\xa9 equivalente ao exemplo acima mas sem utiliza\xc3\xa7\xc3\xa3o do operador EXCEPT._NEWLINE_SELECT o1.*FROM (_NEWLINE_    SELECT *_NEWLINE_    FROM Ordens_NEWLINE_    WHERE Quantidade BETWEEN 1 AND 100) o1LEFT JOIN (_NEWLINE_    SELECT *_NEWLINE_    FROM Ordens_NEWLINE_    WHERE Quantidade BETWEEN 50 AND 75) o2ON o1.id = o2.idWHERE o2.id IS NULL'