Recursos especiais neste artigo:
Artigo no estilo Curso Online
Existe uma grande necessidade em bancos de dados relacionais de efetuar junções entre tabelas, seja para recuperar informações, que estão “espalhadas” devido a normalização de dados, ou para sumarizar informações para posterior geração de relatórios, mas o fato é que a junção entre tabelas é necessária e poderíamos dizer até mesmo fundamental.
No entanto, este assunto causa um certo desconforto na maioria dos desenvolvedores de aplicativos que acessam bancos de dados relacionais.
O perfeito entendimento da sintaxe e semântica da cláusula JOIN em instruções SQL é fundamental para que se obtenha o melhor desempenho possível ao recuperar dados de um bando de dados relacional.
E dependendo de qual informação se deseja e qual o tipo de relacionamento existente entre as tabelas que se pretende juntar, diferentes técnicas de junção podem ser utilizadas e são essas técnicas que serão abordadas nestes dois artigos desta série.
Em que situação o tema é útil
Em muitos momentos é necessário efetuar junções entre tabelas
para buscar dados relativos a determinada informação. Em bancos de dados
relacionais, a utilização da metodologia de normalização de dados é uma prática
comum, amplamente difundida e muito correta porém, devido à normalização de
dados, em muitos momentos é necessário efetuar junções entre tabelas para que
se possa reconstruir uma informação completa. É neste tipo de situação que a
correta utilização da junção entre tabelas na SQL se mostra bastante útil.
SQL - Structured Query Language - é uma linguagem de programação projetada para gerenciar dados armazenados em um Sistema de Gerenciamento de Banco de Dados Relacional (SGBDR, ou RDBMS – Reational Database Management System).
Originalmente baseada em álgebra relacional e cálculo relacional de tupla, a SQL é uma linguagem de definição de dados e uma linguagem de manipulação de dados. O escopo da SQL inclui inserção, consulta, atualização e exclusão de dados, criação e modificação do esquema e controle de acesso a dados. Além disso, a SQL também é frequentemente descrita como uma linguagem declarativa (4GL – Fourth Generation Language – ver Box 1), que também inclui elementos processuais.
SQL foi uma das primeiras linguagens comerciais para interagir com o modelo relacional de Edgar F. Codd, descrito em seu influente artigo datado de 1970 "Um Modelo de Dados Relacional para Grandes Bancos de Dados Compartilhados" (A Relational Model of Data for Large Shared Data Banks). Apesar de não totalmente aderente ao modelo relacional, como descrito por Codd, tornou-se a linguagem de banco de dados mais utilizada.
SQL se tornou um padrão do Instituto Nacional Americano de Padrões (ANSI – American National Standards Institute) em 1986, e da Organização Internacional de Padrões (ISO – International Organization for Standards) em 1987. Desde então, o padrão foi aprimorado várias vezes com recursos adicionais. Mas o código não é totalmente portátil entre os diferentes sistemas de banco de dados (SGBDs), que pode ocasionar o que chamamos de Vendor Lock-In, ou seja, dependência de um determinado fornecedor do SGBD, pois o código pode não ser portável. Os diferentes fabricantes não seguem perfeitamente o padrão, eles adicionam extensões, e o padrão se torna, por vezes, ambíguo.
Em ciência da computação, programação declarativa é um paradigma de programação que expressa a lógica de um cálculo sem descrever seu fluxo de controle.
Muitas linguagens utilizam este estilo na tentativa de minimizar ou eliminar os efeitos colaterais, descrevendo o que o programa deve realizar ao invés de descrever o que o programa deve percorrer para realizar (o "como" é deixado para a linguagem de implementação).
Esta metodologia está em contraste com a programação imperativa, em que os algoritmos são implementados em termos de passos explícitos.
Programação declarativa considera muitas vezes programas como teorias de uma lógica formal, e cálculos como deduções desta lógica. A programação declarativa ganhou interesse especial recentemente pelo fato de simplificar a escrita de programação paralela.
As linguagens declarativas mais comuns são as de consulta de banco de dados (por exemplo: SQL ou XQuery), expressões regulares, lógica de programação, programação funcional e sistemas de gerenciamento de configuração.
Programação declarativa é muitas vezes definida como qualquer estilo de programação que não é imperativa. Uma série de outras definições comuns foram criadas na tentativa de dar ao termo uma definição que não simplesmente a contratasse com a programação imperativa, como:
- Um programa que descreve o cálculo que deve ser realizado e não como calcular;
- Qualquer linguagem de programação que não sofre com efeitos colaterais (ou mais especificamente, é referencialmente transparente);
- Uma linguagem com uma correspondência clara a lógica matemática.
A linguagem de programação de quarta geração (1970 a 1990), conhecida como 4GL (Forth Generation Language) é melhor entendida como um ambiente de quarta geração, pacotes de software de desenvolvimento de sistemas, incluindo linguagens de programação de nível muito elevado.
A linguagem de programação de alto nível é um ambiente de desenvolvimento ou 'Analyst Workbench' projetado com um sistema de dicionário de dados central, uma biblioteca de padrões de projeto de baixo acoplamento, um gerador de CRUD, gerador de relatórios, linguagem de consulta, Sistema de Gerenciamento de Banco de Dados, ferramentas de design visual e API de integração.
Historicamente, ela é muitas vezes usada para prototipagem e desenvolvimento evolutivo de softwares comerciais. Na história da ciência da computação, o 4GL seguiu o 3GL em uma tendência ascendente em direção a maior abstração e poder de instruções.
A linguagem natural e o modo de bloco estruturado das linguagens de programação de terceira geração melhoraram o processo de desenvolvimento de software.
Entretanto, os métodos de desenvolvimento 3GL podem ser lentos e sujeito a erros. Percebeu-se que alguns aplicativos podem ser desenvolvidos mais rapidamente adicionando-se uma linguagem de programação de alto nível e uma metodologia que gera o equivalente de instruções 3GL complexas porém com menos erros.
Em alguns sentidos, a engenharia de software surgiu para lidar com o desenvolvimento 3GL. Projetos 4GL são mais orientados para a resolução de problemas e engenharia de sistemas.
Todas as 4GLs são projetadas para reduzir o esforço de programação, o tempo que leva para desenvolver software e os custos de desenvolvimento de software.
Eles nem sempre são bem sucedidos nessa tarefa, muitas vezes resultando em códigos deselegantes e difíceis de manter.
A definição da geração 4GL foi feita por Capers Jones como parte de seu trabalho na análise de pontos de função. Jones define as várias gerações de linguagens de programação em termos de produtividade do desenvolvedor medido em pontos de função por pessoa/mês. A 4GL é definida como uma linguagem que suporta 12-20 pontos de função por funcionários mês. Isso se correlaciona com cerca de 16-27 linhas de código por ponto de função implementada em uma 4GL.
Linguagens de quarta geração têm sido muitas vezes comparadas a linguagens de programação específicas de domínio (DSLs - Domain Specific Languages). Alguns autores afirmam que 4GLs são um subconjunto das DSLs.
A SQL foi inicialmente desenvolvida pela IBM, por Donald D. Chamberlin e Raymond F. Boyce, no início de 1970. Esta versão, chamada inicialmente SEQUEL (Structured English Query Language – Linguagem Estruturada de Consulta em Inglês), foi projetada para manipular e recuperar dados armazenados no sistema original “quasi-relacional” de gerenciamento de dados da IBM, o System R, que um grupo do Laboratório de Pesquisa da IBM , em San Jose, havia desenvolvido durante a década de 1970. A sigla SEQUEL foi posteriormente alterada para SQL porque "SEQUEL" é uma marca comercial da empresa de aeronaves Hawker Siddeley, sediada no Reino Unido.
No final de 1970, a Relational Software Inc. (atualmente Oracle Corporation) viu o potencial dos conceitos descritos por Codd, Chamberlin e Boyce e desenvolveu seu próprio SGBDR (Sistema de Gerenciamento de Banco de Dados Relacional) baseado em SQL com aspirações de vendê-lo para a Marinha dos EUA, Agência Central de Inteligência e outras agências do governo dos EUA.
Em junho de 1979, a Relational Software Inc. lançou a primeira aplicação disponível no mercado de SQL, Oracle V2 (Versão 2) para computadores VAX.
Depois de testar o SQL em ambientes de teste dos cliente para determinar a utilidade e praticidade do sistema, a IBM começou a desenvolver produtos comerciais baseados em seu protótipo do System R incluindo System/38, SQL/DS e DB2, que estavam disponíveis comercialmente em 1979, 1981 e 1983, respectivamente.
A SQL foi projetada para uma finalidade específica: consultar os dados contidos em um banco de dados relacional. SQL é uma linguagem de consulta declarativa baseada em conjunto, e não uma linguagem imperativa como C ou BASIC. No entanto, existem extensões para o padrão SQL que adicionam funcionalidades de linguagem de programação procedural como construções de controle de fluxo. Os vários SGBDRs implementam sua própria codificação da linguagem procedural, como apresentado na Tabela 1.
Tabela 1. Extensões ao SQL nos diferentes SGBDRs.
Além das extensões padrão SQL/PSM e extensões proprietárias SQL, programação procedural e orientada a objetos está disponível em muitas plataformas SQL via integração do SGBD com outras linguagens. O padrão SQL define extensões SQL/JRT (rotinas e tipos SQL para o Java) para apoiar o código Java em bancos de dados SQL. O SQL Server 2005 usa o SQLCLR (SQL Server Common Language Runtime) para executar funções .NET no banco de dados, enquanto que as versões anteriores do SQL Server foram restritos ao uso de procedimentos armazenados estendidos não gerenciados que foram principalmente escritos em C.
Já o PostgreSQL permite que funções sejam escritas em uma ampla variedade de linguagens incluindo Perl, Python, Tcl, e C.
Como dito acima, a SQL foi adotada como padrão pelo ANSI em 1986, com o título de SQL-86 e pela ISO em 1987. Hoje em dia a norma passa por melhoria contínua e é geralmente identificado como padrão: “ISO/IEC 9075-n:aaaa Parte n: <título>” ou, simplesmente, ISO / IEC 9075.
A norma ISO/IEC 9075 é complementada pela norma ISO/IEC 13249: SQL Multimedia amd Applicatoin Packages (SQL/MM), que define as interfaces e pacotes baseados em SQL para aplicações como vídeo, áudio e dados espaciais.
Até 1996, o Instituto Nacional de Padrões e Tecnologia (NIST – National Institute of Standards and Technology) mantinha um programa de certificação de conformidade dos SGBDs com o padrão SQL. Atualmente os próprios fabricantes de SGBDs se auto-certificam em conformidade com seus produtos.
O padrão SQL passou por uma série de revisões, como mostra a Tabela 2.
...
Confira outros conteúdos:
SQL SUM: somando os valores de uma...
SQL: INNER JOIN
SQL: Introdução ao Where
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.