Buscar

Linguagem SQL - SELECT

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 60 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

IMPLEMENTAÇÃO DE 
BANCO DE DADOS
MODULO 2 – L INGUAGEM SQL
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2. LINGUAGEM SQL
2.1 Linguagens de Definição de Dados (DDL)
2.1.1 Criação de tabela: CREATE
2.1.2 Alteração de Tabela: ALTER
2.1.3 Exclusão da Tabela: DROP
2.2 Linguagem de Manipulação de Dados (DML)
2.2.1 Inserção de dados: INSERT
2.2.2 Atualização de registros: UPDATE
2.2.3 Exclusão de Registros: DELETE
2.3 Cláusula WHERE e seus OPERADORES
CONTEÚDO
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 Comando SELECT: Seleção de Registros
2.4.1 Sintaxe básica
2.4.2 Operadores lógicos 
2.4.3 Comandos com expressões
2.4.4 Cláusula ORDER BY 
2.4.5 Cláusula DISTINCT
2.4.6 Agrupamento
2.4.7 Cláusula GROUP BY
2.4.7 Cláusula HAVING
2.4.8 Comandos de junção
2.5 Linguagem de Controle de Dados (DCL)
2.6 VISÕES
CONTEÚDO
2.4 
COMANDO SELECT: SELEÇÃO DE REGISTROS
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Toda consulta em SQL é convertida para álgebra relacional no 
momento de sua execução.
2.4.1 SINTAXE BÁSICA
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
O comando SELECT permite recuperar 
os dados de uma ou mais tabelas do 
banco de dados.
Sintaxe: SELECT <lista de atributos>
FROM <nome da tabela>
WHERE <condição>;
2.4.1 SINTAXE BÁSICA
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplos:
SELECT NOME, CPF
FROM Funcionarios
WHERE SALARIO > 1000;
SELECT *
FROM Funcionarios;
2.4.1 SINTAXE BÁSICA
SELECIONAR TODOS (*) OS REGISTROS DA TABELA FUNCIONÁRIOS
SELECIONAR OS CAMPOS NOME E CPF DA TABELA FUNCIONÁRIOS
CUJO SALARIO SEJA SUPERIOR A 1000
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Alguns operadores definidos no padrão ANSI SQL:2011 para uso em 
expressões:
2.4.2 OPERADORES
• Operadores aritméticos: + - * /
• Operadores relacionais: = <> > < >= <=
• Operadores lógicos: NOT AND OR
• Operador de concatenação de strings: || ou + ou &
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Expressões e constantes podem aparecer como colunas do resultado, na 
cláusula SELECT de uma consulta.
2.4.3 COMANDOS COM EXPRESSÕES
Sintaxe: SELECT <função>(<campo>)
FROM Funcionarios
Anexo: FUNÇÕES
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.3 COMANDOS COM EXPRESSÕES
Exemplo 1:
SELECT concat('Sr(a) ', nome)
FROM Funcionarios
Nome
Sr(a) José da Silva
Sr(a) José Maria da Silva
ID Nome
1 José da Silva
2 José Maria da Silva
SELECIONAR O CAMPO NOME ACRESCIDO DO TEXTO “Sr(a)” 
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.3 COMANDOS COM EXPRESSÕES
Exemplo 2:
SELECT group_concat(ID)
FROM Funcionarios
1, 2, 3
ID Nome
1 José da Silva
2 José Maria da Silva
3 Maria Santos
SELECIONAR O CAMPO ID EM UM ÚNICO GRUPO DE VALORES
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.4 Cláusula ORDER BY
Cláusula opcional para ordenar os resultados de um SELECT.
Sintaxe: SELECT *
FROM <tabela>
ORDER BY <campos>
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.4 Cláusula ORDER BY
Exemplo:
SELECT *
FROM Funcionarios
ORDER BY NOME
ID Nome
1 José da Silva
2 Antônio Souza
3 Breno Oliveira
ID Nome
2 Antônio Souza
3 Breno Oliveira
1 José da Silva
SELECIONAR TODOS OS FUNCIONÁRIOS POR ORDEM DO CAMPO NOME 
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
SELECT *
FROM Funcionarios
ORDER BY NOME asc
• Quando a ordenação for ascendente, deve-se utilizar a 
palavra ASC apos cada coluna, ou não informar nada.
• Quando a ordenação for descendente, deve-se utilizar a 
palavra DESC apos cada coluna.
2.4.4 Cláusula ORDER BY
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.5 Cláusula DISTINCT
Cláusula opcional para mostrar elementos sem duplicidade.
Sintaxe: SELECT DISTINCT <campo>
FROM <tabela>
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.5 Cláusula DISTINCT
Exemplo:
SELECT DISTINCT ENDERECO
FROM Funcionarios
Nome Endereço
José Rua Afonso Pena
Maria Rua Amazonas
João Rua Afonso Pena
Breno Rua Afonso Pena
Pedro Rua Goiás
Endereço
Rua Afonso Pena
Rua Amazonas
Rua Goiás
SELECIONAR O CAMPO ENDERECO SEM DUPLICIDADE
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
EXERCÍCIOS
CREATE DATABASE DB_Aula4;
CREAT TABLE Curso (
ID_CURSO int not null,
NOME varchar(30) not null,
CONSTRAINT pk_curso
PRIMARY KEY(ID_CURSO));
No MySQL, execute os comandos a seguir:
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
EXERCÍCIOS
CREATE TABLE Aluno (
ID_ALUNO int not null,
NOME varchar(50) not null,
NOTA int not null,
IDADE int not null,
ID_CURSO int not null,
CONSTRAINT pk_aluno
PRIMARY KEY(ID_ALUNO)
CONSTRAINT fk_curso
FOREIGN KEY(ID_CURSO)
REFERENCES Curso (ID_CURSO)
);
No MySQL, execute os comandos a seguir:
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
EXERCÍCIOS
INSERT INTO CURSO (ID_CURSO, NOME) VALUES (1, ‘ADS’);
INSERT INTO CURSO (ID_CURSO, NOME) VALUES (2, ‘REDES’);
INSERT INTO CURSO (ID_CURSO, NOME) VALUES (3, ‘GASTRONOMIA’);
No MySQL, execute os comandos a seguir:
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
EXERCÍCIOS
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(1, ‘João’, 8, 23, 1);
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(2, ‘Maria’, 8, 20, 1);
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(3, ‘Helena’, 9, 21, 1);
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(4, ‘Pedro’, 10, 23, 2);
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(5, ‘João’, 9, 23, 3);
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(6, ‘Breno’, 9, 18, 3);
INSERT INTO ALUNO (ID_ALUNO, NOME, NOTA, IDADE, CURSO) VALUES
(7, ‘Sonia’, 7, 21, 2);
No MySQL, execute os comandos a seguir:
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
EXERCÍCIOS
• Liste todos os cursos 
• Liste todos os alunos com do curso ADS
• Liste todos os alunos por ordem de Nome
• Liste todos os alunos com idade entre 18 e 20 anos
• Liste a quantidade de alunos por curso
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
As funções de agregação são uteis para reduzir um conjunto 
de dados a um valor que representa o conjunto inteiro, 
conforme a necessidade.
Por exemplo:
Notas: 10,0
9,5
8,0
7,5
9,0
Qual é a média das notas?
2.4.6 Agregação
A média das notas e uma 
agregação, pois o 
conjunto original de 5 
valores será reduzido a 
apenas um valor.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
O padrão ANSI SQL:2011 define 15 funções de agregação, mas 
raramente os SGBDs comerciais implementam todas elas. 
As funções de agregação mais utilizadas são:
• SUM(campo) = exibe a soma
• COUNT(campo) = exibe a contagem• AVG(campo) = exibe a média
• MAX(campo) = exibe o valor máximo
• MIN(campo) = exibe o valor mínimo
2.4.6 Agregação
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo 1:
2.4.6 Agregação
SELECT SUM(salario)
FROM Funcionarios
4.000
ID Salario
1 1.000
2 2.000
3 1.000
SELECIONAR A SOMA DO CAMPO SALARIO
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo 2:
2.4.6 Agregação
SELECT MAX(salario)
FROM Funcionarios
2.000
ID Salario
1 1.000
2 2.000
3 1.000
SELECIONAR O MAIOR VALOR DO CAMPO SALARIO
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo 3:
2.4.6 Agregação
SELECT COUNT(*)
FROM Funcionarios
WHERE salario > 1500
2
ID Salario
1 1.000
2 2.000
3 1.000
4 1.600
SELECIONAR A QUANTIDADE DE REGISTROS COM SALARIO MAIOR 
QUE 1500
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo 3:
2.4.6 Agregação
SELECT SUM(salario) AS soma_salario,
AVG(salario) AS media_salario,
FROM Funcionarios
É comum o uso de apelidos para uma agregação.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Sintaxe:
2.4.7 Cláusula GROUP BY
SELECT <campo>, <agregraçao>(<campo>),
FROM <tabela>
GROUP BY <campo>
A cláusula GROUP BY é uma operação de agrupamento que cria grupos 
de linhas.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo 1:
2.4.7 Cláusula GROUP BY
SELECT LOTACAO, SUM(SALARIO) AS soma_salario,
FROM Funcionarios
GROUP BY LOTACAO
Lotacao Salario
RH 1.000
Financeiro 2.000
RH 1.000
Financeiro 1.600
Lotacao Soma_salario
RH 2.000
Financeiro 3.600
SELECIONAR A SOMA DOS SALARIOS AGRUPADO POR LOTACAO
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo 2:
2.4.7 Cláusula GROUP BY
Lotacao Sexo Salario
RH F 1.000
Financeiro F 2.000
RH F 1.000
Financeiro M 1.600
Lotacao Sexo Total
RH F 2
Financeiro F 1
Financeiro M 1
SELECT LOTACAO, SEXO, COUNT(*) AS Total,
FROM Funcionarios
GROUP BY LOTACAO, SEXO
SELECIONAR A QUANTIDADE DE REGISTROS AGRUPADO POR SEXO E 
LOTACAO
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.7 Cláusula HAVING
A cláusula HAVING geralmente é utilizada junto com a cláusula GROUP BY 
e especifica um critério de pesquisa para um grupo ou um agregado. 
Sintaxe: SELECT <campo>, <agregraçao>(<campo>),
FROM <tabela>
GROUP BY <campo>
HAVING <agregraçao>(<campo>) <operador> <valor>
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.7 Cláusula HAVING
Exemplo 1:
SELECT LOTACAO, SUM(SALARIO) AS Soma,
FROM Funcionarios
GROUP BY LOTACAO
HAVING SUM(SALARIO) >= 2000
SELECIONAR A SOMA DOS SALARIOS AGRUPADO POR LOTACAO, 
QUANDO A SOMA DOS SALARIOS FOR INFERIOR A 2
Lotacao Salario
RH 1.000
Financeiro 2.000
RH 1.000
Financeiro 1.600
Lotacao Soma
RH 2.000
Financeiro 3.600
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.7 Cláusula HAVING
Exemplo 2:
SELECT LOTACAO, SEXO, COUNT(*) AS Total,
FROM Funcionarios
GROUP BY LOTACAO, SEXO
HAVING COUNT(*) >= 2
SELECIONAR A QUANTIDADE DE REGISTROS AGRUPADO POR SEXO E 
LOTACAO, QUANDO A QUANTIDADE FOR SUPERIOR A 2
Lotacao Sexo Salario
RH F 1.000
Financeiro F 2.000
RH F 1.000
Financeiro M 1.600
Lotacao Sexo Total
RH F 2
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Os comandos de União utilizam a “união” entre duas tabelas, contendo 
uma listagem com todas as linhas das tabelas originais.
Entretanto, as tabelas envolvidas devem, obrigatoriamente, ter a mesma 
quantidade de colunas para exibição e conter o mesmo tipo de dados 
compatíveis entre si.
2.4.8 Comandos de União
Sintaxe: SELECT <campo>, <campo> ... FROM <tabela1>
UNION [ALL]
SELECT <campo>, <campo> ... FROM <tabela2>
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.8 Comandos de União
Exemplo 1: SELECT MATRICULA, NOME FROM Funcionarios
UNION
SELECT CPF, NOME FROM Clientes
FUNCIONÁRIOS
MATRICULA NOME
A001 José
A002 Maria
A003 João
CLIENTES
CPF NOME
001.001.001-01 Ana
002.002.002-02 Pedro
UNIÃO
A001 José
A002 Maria
A003 João
001.001.001-01 Ana
002.002.002-02 Pedro
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
2.4.8 Comandos de União
Exemplo 2: SELECT EMAIL FROM Funcionarios
UNION ALL
SELECT EMAIL FROM Professores
FUNCIONÁRIOS
NOME EMAIL
José jose@ig.com
Maria maria@ig.com
João joao@ig.com
PROFESSORES
NOME EMAIL
Ana ana@ig.com
Maria maria@ig.com
UNIÃO
José jose@ig.com
Maria maria@ig.com
João joao@ig.com
Ana ana@ig.com
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Algumas consultas precisam buscar valores já presentes no Banco de 
Dados para utilizá-los em suas condições de comparação.
É comum, ao elaborarmos uma consulta, ser necessário buscar 
informações de diferentes tabelas. A essa necessidade, denominamos 
junção.
As junções podem ser:
• Junção de Produto Cartesiano
• Junção Interna
• Junção Externa
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção de Produto Cartesiano
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção de Produto Cartesiano
2.4.9 Comandos de Junção
Sintaxe: SELECT <Tabela1>.<campo1>, <Tabela2>.<Campo2>
FROM <Tabela1>, <Tabela2>
WHERE <Tabela1>.<Campo1> = <Tabela2>.<Campo3>
Uma Junção de Produto Cartesiano é uma junção entre duas tabelas 
que origina uma terceira tabela constituída por todos os elementos da 
primeira combinadas com todos os elementos da segunda.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção de Produto Cartesiano
2.4.9 Comandos de Junção
Exemplo:
FUNCIONARIO
MATRICULA NOME IDADE ID_DEPARTAMENTO
A001 José 21 1
A002 Maria 22 1
A003 João 22 2
DEPARTAMENTO
ID_DEPARTAMENTO DESCRICAO
1 RH
2 FINANCEIRO
OBJETIVO: Selecionar NOME e DESCRIÇÃO DO DEPARTAMENTO de todos 
os funcionários.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção de Produto Cartesiano
2.4.9 Comandos de Junção
SELECT Funcionario.Nome, Departamento.Descricao
FROM Funcionario, Departamento
WHERE Funcionario.ID_Departamento = Departamento.ID_Departamento
Exemplo:
OBJETIVO: Selecionar NOME e DESCRIÇÃO DO DEPARTAMENTO de todos 
os funcionários.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção de Produto Cartesiano
2.4.9 Comandos de Junção
SELECT Funcionario.Nome, Departamento.Descricao
FROM Funcionario, Departamento
WHERE Funcionario.ID_Departamento = Departamento.ID_Departamento
Exemplo:
FUNCIONARIO.NOME DEPARTAMENTO.DESCRICAO
José RH
Maria RH
João FINANCEIRO
OBJETIVO: Selecionar NOME e DESCRIÇÃO DO DEPARTAMENTO de todos 
os funcionários.
Resultado:
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2– Linguagem SQL
2.4 COMANDO SELECT
• Junção Interna
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Interna
2.4.9 Comandos de Junção
Sintaxe:
SELECT <Tabela1>.<campo1>, <Tabela2>.<Campo2>
FROM <Tabela1> 
INNER JOIN <Tabela2> ON <Tabela1>.<Campo1> = <Tabela2>.<Campo3>
Uma Junção Interna é caracterizada por uma seleção que retorna 
apenas os dados que atendem às condições de junção, isto é, quais 
linhas de uma tabela se relacionam com as linhas de outras tabelas.
SELECT Cliente.nome,Pedido.cod_cliente,Pedido.num_pedido FROM Cliente INNER JOIN Pedido ON Cliente.Cod_cliente = Pedido.Cod_cliente
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Interna Exemplo:
F.NOME D.DESCRICAO
José RH
Maria FINANCEIRO
Selecionar NOME e DESCRIÇÃO DO DEPARTAMENTO 
de todos os funcionários.
Resultado:
SELECT A.Nome, D.Descricao
FROM Funcionario AS A
INNER JOIN Departamento AS D 
ON A.ID_Departamento = D.ID_Departamento
FUNCIONARIO
MATRICULA NOME IDADE ID_DEPARTAMENTO
A001 José 21 1
A002 Maria 22 2
A003 João 22 3
DEPARTAMENTO
ID_DEPARTAMENTO DESCRICAO
1 RH
2 FINANCEIRO
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa
2.4.9 Comandos de Junção
Uma Junção Externa é uma seleção que não requer que os registros de 
uma tabela possuam registros equivalentes em outra. O registro é 
mantido na pseudo-tabela se não existe outro registro que lhe 
corresponda. 
Este tipo de junção se subdivide dependendo da tabela do qual 
admitiremos os registros que não possuem correspondência: a tabela 
esquerda, a direita ou ambas.
SELECT Cliente.nome,Pedido.cod_cliente,Pedido.num_pedido FROM Cliente INNER JOIN Pedido ON Cliente.Cod_cliente = Pedido.Cod_cliente
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa – Tabela à Esquerda
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa – TABELA À ESQUERDA
2.4.9 Comandos de Junção
Sintaxe: SELECT <Tabela1>.<campo1>, <Tabela2>.<Campo2>
FROM <Tabela1> LEFT OUTER JOIN <Tabela2> 
ON <Tabela1>.<Campo1> = <Tabela2>.<Campo3>
SELECT Cliente.nome,Pedido.cod_cliente,Pedido.num_pedido FROM Cliente INNER JOIN Pedido ON Cliente.Cod_cliente = Pedido.Cod_cliente
O resultado desta seleção sempre contém todos os registros da tabela 
esquerda (isto é, a primeira tabela mencionada na consulta), mesmo quando 
não exista registros correspondentes na tabela direita. O valor NULL é 
retornado quando não há registro correspondente.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo:
F.NOME D.DESCRICAO
José RH
Maria FINANCEIRO
João NULL
Selecionar NOME e DESCRIÇÃO DO 
DEPARTAMENTO de todos os funcionários.
Resultado:
• Junção Externa
TABELA A ESQUERDA
FUNCIONARIO
MATRICULA NOME IDADE ID_DEPARTAMENTO
A001 José 21 1
A002 Maria 22 2
A003 João 22 3
DEPARTAMENTO
ID_DEPARTAMENTO DESCRICAO
1 RH
2 FINANCEIRO
SELECT A.Nome, D.Descricao
FROM Funcionario AS A
LEFT OUTER JOIN Departamento AS D 
ON A.ID_Departamento = D.ID_Departamento
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa – Tabela à Direita
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa - TABELA À DIREITA
2.4.9 Comandos de Junção
Sintaxe: SELECT <Tabela1>.<campo1>, <Tabela2>.<Campo2>
FROM <Tabela1> RIGHT OUTER JOIN <Tabela2> 
ON <Tabela1>.<Campo1> = <Tabela2>.<Campo3>
SELECT Cliente.nome,Pedido.cod_cliente,Pedido.num_pedido FROM Cliente INNER JOIN Pedido ON Cliente.Cod_cliente = Pedido.Cod_cliente
Esta operação é inversa à anterior e retorna sempre todos os registros da 
tabela à direita (a segunda tabela mencionada na consulta), mesmo se não 
existir registro correspondente na tabela à esquerda. O valor NULL é 
retornado quando não há registro correspondente.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo: Selecionar NOME e DESCRIÇÃO DO 
DEPARTAMENTO de todos os funcionários.
Resultado:
• Junção Externa
TABELA A DIREITA
FUNCIONARIO
MATRICULA NOME IDADE ID_DEPARTAMENTO
A001 José 21 1
A002 Maria 22 2
A003 João 22 3
DEPARTAMENTO
ID_DEPARTAMENTO DESCRICAO
1 RH
2 FINANCEIRO
SELECT A.Nome, D.Descricao
FROM Funcionario AS A
RIGHT OUTER JOIN Departamento AS D 
ON A.ID_Departamento = D.ID_Departamento F.NOME D.DESCRICAO
José RH
Maria FINANCEIRO
NULL ADM
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa – Ambas (Esquerda e Direita)
2.4.9 Comandos de Junção
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa - AMBAS
2.4.9 Comandos de Junção
Sintaxe: SELECT <Tabela1>.<campo1>, <Tabela2>.<Campo2>
FROM <Tabela1> FULL OUTER JOIN <Tabela2> 
ON <Tabela1>.<Campo1> = <Tabela2>.<Campo3>
SELECT Cliente.nome,Pedido.cod_cliente,Pedido.num_pedido FROM Cliente INNER JOIN Pedido ON Cliente.Cod_cliente = Pedido.Cod_cliente
Esta operação retorna sempre todos os registros de dotas as tabelas. O 
valor NULL é retornado quando não há registro correspondente.
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
Exemplo: Selecionar NOME e DESCRIÇÃO DO 
DEPARTAMENTO de todos os funcionários.
Resultado:
• Junção Externa
AMBAS
FUNCIONARIO
MATRICULA NOME IDADE ID_DEPARTAMENTO
A001 José 21 1
A002 Maria 22 2
A003 João 22 5
DEPARTAMENTO
ID_DEPARTAMENTO DESCRICAO
1 RH
2 FINANCEIRO
4 ADM
SELECT A.Nome, D.Descricao
FROM Funcionario AS A
FULL OUTER JOIN Departamento AS D 
ON A.ID_Departamento = D.ID_Departamento
F.NOME D.DESCRICAO
José RH
Maria FINANCEIRO
NULL ADM
João NULL
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção de Produto Cartesiano: 
junção que cria uma nova tabela 
com os elementos da primeira 
combinadas os elementos da 
segunda.
Exemplo: 
SELECT *
FROM Aluno, Turma
WHERE Aluno.ID_Turma = Turma.ID
2.4.9 Comandos de Junção - RESUMO
• Junção Interna retorna apenas os 
dados que atendem às condições 
de junção.
Exemplo: 
SELECT *
FROM Aluno 
INNER JOIN Turma
ON Aluno.ID_Turma = Turma.ID
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Externa à Esquerda 
retorna os registros da tabela à 
esquerda (a primeira tabela 
mencionada na consulta), mesmo 
quando não exista registros 
correspondentes na tabela à direita. 
Exemplo: 
SELECT *
FROM Aluno 
LEFT OUTER JOIN Turma
ON Aluno.ID_Turma = Turma.ID
2.4.9 Comandos de Junção - RESUMO
• Junção Externa à Direita retorna 
os registros da tabela à direita (a 
segunda tabela mencionada na 
consulta), mesmo quando não 
existir registro correspondente na 
tabela à esquerda. 
Exemplo: 
SELECT *
FROM Aluno 
RIGHT OUTER JOIN Turma
ON Aluno.ID_Turma = Turma.ID
MODELO RELACIONALIMPLEMENTAÇÃO DE BANCO DE DADOS - MÓDULO 2 – Linguagem SQL
2.4 COMANDO SELECT
• Junção Ambas Tabelasretorna os 
registros de todas as tabelas, 
mesmo quando não exista registros 
correspondentes. 
Exemplo: 
SELECT *
FROM Aluno 
FULL OUTER JOIN Turma
ON Aluno.ID_Turma = Turma.ID
2.4.9 Comandos de Junção - RESUMO
FIM DO MÓDULO 2 - SELECT

Continue navegando