Baixe o app para aproveitar ainda mais
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
Compartilhar