Como usar o operador de união sql

Video: Curso de SQL Server para Iniciantes (Aula 16) - Como juntar selects (Union All)

o UNIÃO operador é a implementação SQL de operador de união de álgebra relacional. o UNIÃO operador permite que você desenhe informações de duas ou mais tabelas que possuem a mesma estrutura. mesma estrutura significa

  • As tabelas devem ter todos o mesmo número de colunas.

    Video: UNION | SQL Server # 21

  • colunas correspondentes devem ter todos os tipos de dados idênticos e comprimentos.

Quando estes critérios forem cumpridos, as tabelas são união-compatíveis: A união das duas tabelas retorna todas as linhas que aparecem em qualquer mesa e elimina duplicatas.

Video: TUTORIAL SQL operador LIKE con MySql Workbench

Suponha que você criar um banco de dados de beisebol-estatísticas. Ele contém duas tabelas sindicais compatível nomeados AMERICAN e nacionais. Ambas as tabelas têm três colunas, e as colunas correspondentes são todos do mesmo tipo. Na verdade, as colunas correspondentes têm colunas de mesmo nome (embora esta condição não é necessária para compatibilidade união).

NACIONAL lista os nomes dos jogadores e o número de jogos completos acamparam arremessadores da Liga Nacional. AMERICAN lista as mesmas informações sobre jarros na liga americana. o UNIÃO das duas tabelas dá-lhe uma tabela de resultados virtual que contém todas as linhas na primeira tabela mais todas as linhas na segunda tabela. Para este exemplo, algumas linhas foram colocados em cada tabela para ilustrar a operação:

SELECT * da National -FirstName LastName CompleteGames --------- -------- ------------- Sal Maglie 11Don Newcombe9Sandy Koufax 13Don Drysdale12SELECT * FROM -FirstName AMERICAN LastName CompleteGames --------- -------- ------------- Whitey Ford 12Don Larson 10Bob Turley 8Allie Reynolds14SELECT * FROM NATIONALUNIonselect * FROM AMERICAN -FirstName LastName CompleteGames --------- -------- ------------- Allie Reynolds14Bob Turley 8Don Drysdale12Don Larson 10Don Newcombe9Sal Maglie 11Sandy Koufax 13Whitey Ford 12

o UNION DISTINCT Funções de forma idêntica ao UNIÃO sem o operador DISTINCT palavra-chave. Em ambos os casos, as linhas duplicadas são eliminadas do conjunto de resultados.

O asterisco (*) Pode ser usado como uma abreviação para todas as colunas numa tabela. Este atalho é muito bem a maior parte do tempo, mas pode trazer-lhe problemas quando você usa operadores relacionais no SQL embutido ou o módulo do idioma.

Se você adicionar um ou mais novas colunas de uma tabela e não para outro, ou você adicionar colunas diferentes para as duas tabelas, as duas tabelas não são mais união-compatíveis - e seu programa será inválido na próxima vez que ele é recompilados.



Mesmo se as mesmas novas colunas são adicionadas a ambas as tabelas para que eles ainda são união-compatível, o programa provavelmente não está preparado para lidar com dados adicionais. Você deve listar as colunas que você deseja, em vez de confiar na * forma abreviada. Quando você está entrando em consultas SQL ad hoc do console, o asterisco funciona bem, porque você pode exibir rapidamente uma estrutura de tabela para verificar a compatibilidade união se as consultas não são bem sucedidos.

A ALL operação UNION

o UNIÃO operação normalmente elimina quaisquer linhas duplicadas que resultam do seu funcionamento, que é o resultado desejado na maioria das vezes. Às vezes, porém, você pode querer preservar as linhas duplicadas. Nessas ocasiões, o uso UNION ALL.

Referindo-se ao exemplo, suponha que “Bullet” Bob Turley tinha sido negociado em midseason dos New York Yankees na liga americana para o Brooklyn Dodgers na Liga Nacional. Agora, suponha que durante a temporada, ele armou oito jogos completos para cada equipe.

do comum UNIÃO apresentado no exemplo joga fora uma das duas linhas que contêm dados de Turley. Embora ele parecia lançar apenas 8 jogos completos na temporada, ele realmente lançou um notável 16 jogos completos. A consulta a seguir dá-lhe os fatos verdadeiros:

SELECT * FROM NATIONALUNION ALLSELECT * FROM AMERICANA -

Às vezes você pode formar uma UNIÃO de duas tabelas, mesmo se eles não são união compatível. Se as colunas que você quer em sua tabela de resultados estão presentes e compatíveis em ambas as tabelas, você pode realizar uma UNIÃO CORRESPONDENTE Operação. Apenas as colunas especificadas são considerados - e eles são as únicas colunas exibidas na tabela de resultados.

A operação correspondente

estatísticos de beisebol manter diferentes estatísticas sobre jarros do que eles mantêm em outfielders. Em ambos os casos, os primeiros nomes, apelidos, putouts, erros e percentagens Fielding são gravadas. Outfielderes não têm a / registro perdido won, um salva registro, ou uma série de outras estatísticas que dizem respeito ao pitching. Você ainda pode realizar uma UNIÃO que leva os dados da tabela de OUTFIELDER e da tabela de JARRO para lhe dar informações sobre a habilidade defensiva:

SELECT * DE OUTFIELDERUNION correspondente (nome, sobrenome, putouts, Erros, FieldPct) SELECT * FROM jarro -

A tabela de resultados contém os nomes e sobrenomes de todos os outfielders e jarros, juntamente com o putouts, erros e porcentagem fielding de cada jogador. Tal como acontece com o simples UNIÃO, duplicados são eliminados. Assim, se um jogador passou algum tempo no campo externo e também acamparam-se em um ou mais jogos, o UNIÃO CORRESPONDENTE operação perde algumas de suas estatísticas. Para evitar esse problema, use UNION ALL CORRESPONDENTE.

Cada nome de coluna na lista após a CORRESPONDENTE palavra-chave deve ser um nome que existe em ambas as tabelas juntou-sindicais. Se você omitir esta lista de nomes, é utilizada uma lista implícita de todos os nomes que aparecem em ambas as tabelas. Mas esta lista implícita de nomes pode mudar quando novas colunas são adicionadas às tabelas. Portanto, você é melhor fora listando explicitamente os nomes das colunas que você omitindo-los.


Publicações relacionadas