SQL DML CONSULTAS ENVOLVENDO MAIS DE UMA TABELA



Documentos relacionados
Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Tarefa Orientada 14 Subconsultas

select nome from Médicos where codm in (select codm from Consultas where data = 06/06/13 )

SQL DML. Frederico D. Bortoloti

Projeto de Banco de Dados

Múltiplas Tabelas. Disciplina de Banco de Dados

Texto Base Livro texto: SQL Guia Prático 2ª Edição Rogério Luís de C. Costa. Banco de Dados II Comando Select. Gustavo Dibbern Piva

Subconsultas ou Consultas Aninhadas

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

BDII SQL Junção Revisão 8

NOME SEXO CPF NASCIMENTO SALARIO

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (

SQL consulta com operadores

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

Comandos de Manipulação

Exercícios de SQL. Prof. Márcio Bueno.

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Introdução ao SQL. Aécio Costa

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL Uma Visão mais Ampla

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

Memória de aula Aulas 11 e 12

SQL. Prof. Márcio Bueno.

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

DML - SELECT Agrupando Dados

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 19 Triggers

Definida pelo American National Standard Institute (ANSI) em 1986

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

Apresentação Modelo e SQL. André Luiz Montevecchi

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes

Junções e Índices em Tabelas

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

Prova de Fundamentos de Bancos de Dados 2 a Prova

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Memória de aula Semanas 15 e 16

4.6. SQL - Structured Query Language

Tarefa Orientada 15 Manipulação de dados

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

Exercícios. Exercícios

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

Linguagem SQL Sub-linguagem DDL

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

SQL. Profa. Msc. Fernanda Lígia Rodrigues Lopes. Disciplina: Fundamentos de Banco de Dados

Prof.: Clayton Maciel Costa

Nome: n.º WEB Série 2B 2C 2D 2E Barueri, 17/08/2009 2ª Postagem Disciplina: Gerenciamento e Estrutura de Banco de Dados Professor: Márcio

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

O Modelo de Entidades e Relacionamentos (MER) é um modelo conceitual usado para projeto de aplicações de banco de dados.

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

Programação SQL. Introdução

1. Listar todos os dados da tabela Funcionários ordenados por matrícula. 2. Forneça o número total de empregados da companhia.

TECNOLOGIA WEG II PHP com SGBD MYSQL

SQL UMA ABORDAGEM INTERESSANTE

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

SQL Avançado Continuação. Renata Viegas

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Programação SQL. INTRODUÇÃO II parte

Tarefa Orientada 16 Vistas

MODELO DE DADOS VS ESQUEMA

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

Principais Conceitos. Modelo Relacional representa o banco de dados como uma coleção de relações Tupla Atributos Relação Domínio

Prof.: Clayton Maciel Costa

Banco de Dados I Módulo II: Modelagem Entidade- Relacionamento versus Relacional. (Aula 3) Clodis Boscarioli

Operação de União JOIN

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

BANCO DE DADOS. Fixação dos conteúdos Integridade Referencial Normalização Exercícios

Linguagem SQL. Comandos Básicos

Structured Query Language (SQL)

Prova de Fundamentos de Bancos de Dados 2 a Prova

Lista de Exercícios SQL

Bases de Dados. Parte III: O Modelo Relacional

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Principais Comandos SQL Usados no MySql

Prova de Fundamentos de Bancos de Dados 2 a Prova

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Fundamentos de Bancos de Dados Prova 2

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Linguagem SQL Parte I

Linguagem de Consulta - SQL

Prof.: Clayton Maciel Costa

Prof.: Clayton Maciel Costa

Principais Instruções em SQL

Tarefa Orientada 10 Obter informação a partir de uma tabela

Prova de Fundamentos de Bancos de Dados 2 a Prova

Banco de Dados - Senado

Disciplina: Unidade III: Prof.: Período:

Exercícios de Lógica Exercícios de Fixação 08

Transcrição:

SQL DML CONSULTAS ENVOLVENDO MAIS DE UMA TABELA Uma consulta envolvendo informações de mais de uma tabela podem ser realizadas por encadeamento ou junção(join). 1. Consultas Encadeadas - SubConsultas Consultas encadeadas, também referenciadas como subconsultas, permitem que uma consulta seja feita sobre o resultado de uma outra consulta. Deve-se empregar esta técnica quando se deseja informações de uma tabela porém, a condição deve ser expressa com campos de outra tabela. Nesta situação o gerenciador de consultas do SGBD executa primeiro as consultas internas e os resultados são comparados segundo o operador de elo entre as consultas. Os predicados de elos entre consultas são: "=", "IN", "EXISTS', ANY( ou SOME) e os operadores relacionais ("<", "<=",">" e ">=") Sintaxes possíveis: WHERE coluna k = (SELECT coluna j WHERE coluna k IN (SELECT coluna j FROM tabela(s) WHERE coluna k ANY (SELECT coluna j WHERE coluna k OPERADOR RELACIONAL ALL (SELECT coluna j Operadores relacionais de comparação: >, >=, < e <= WHERE EXISTS (SELECT * WHERE coluna <operador> tabela1.colunai) Prof. Sidney Vieira 1

= Verifica se o valor do campo que precede o predicado é exatamente o igual ao valor retornado na subconsulta IN Verifica se o valor do campo que precede o predicado faz parte do subconjunto de valores retornados na subconsulta ANY Verifica se o campo que precede o predicado é igual a algum valor retornado na subconsulta EXISTS Verifica se um valor existe um retorno não nulo da subconsulta(*). Neste caso o sql exibirá as linhas da tabela tabela1 que atendem a restrição da subconsulta. A negação do predicado cláusula é definida por NOT EXISTS. Exemplos: ---------------------------------------------------------------------------------------------------------------------- Considere as relações(tabelas) para os exemplos a seguir: DEPARTAMENTO COD NOME ORCAMENTO MATR ======== ================ =================== ================ 1 desenvolvimento 100000.00 2 2 rede 200000.00 7 3 manutencao 80000.00 5 FUNCIONARIO MATR NOME SALARIO ADMISSAO SEXO DEP_COD MATR_SUPERVISOR ====================================================================================================== 1 ze 1000.00 09-DEC-2000 M 1 NULL 2 ana 1500.00 10-NOV-2001 F 1 1 3 pedro 1000.00 21-JAN-2001 M 2 6 4 eva 2000.00 03-DEC-2002 F 1 1 5 ivo 1800.00 10-OCT-2002 M 3 NULL 6 sid 900.00 22-FEB-2002 M 2 NULL 7 ines 1500.00 01-NOV-2003 F 2 5 Obs: o campo matr em DEPARTAMENTO tem a função de guardar a matricula do chefe do departamento o campo DEP_COD em funcionário tem a função de guardar o departamento de alocação do funcionário. o campo MATR_SUPERVISOR em funcionário tem a função de guardar a matricula do supervisor do funcionário os nomes dos funcionários são únicos ou seja não existe dois funcionários com o mesmo nome ------------------------------------------------------------------------------------------------------------------------- Exemplo1: Obter o nome dos funcionários que estão alocados em departamentos com orçamentos inferiores a R$ 90.000,00 Prof. Sidney Vieira 2

WHERE dep_cod IN (SELECT cod FROM departamento WHERE orcamento < 90000) Exemplo2: Obter o nome do departamento cujo chefe é a funcionária de nome ines FROM departamento WHERE matr = (SELECT matr WHERE nome = 'ines') Este exemplo emprega o predicado = pois não existe, conforme descrito anteriormente, dois funcionários com o mesmo nome. Caso existisse deveríamos empregar o predicado IN Exemplo3 : obter a matricula e nome dos funcionários que são supervisionados pelo funcionário de nome ze SELECT matr, nome WHERE matr_supervisor = (SELECT matr WHERE nome = ze) Neste exemplo é admitido que só existe um funcionario Exemplo4: Obter os nomes e salários dos funcionários que possuam o maior valor salario WHERE salario IN (SELECT MAX(salario) ) OU WHERE salario >= (SELECT MAX(salario) ) OU WHERE salario = (SELECT MAX(salario) ) OBS: Só se emprega o predicado "=" quando a consulta interna retorna ZERO ou 1 e somente 1 resultado. Exemplo5: Obter os nomes e salários dos funcionários que ganham mais do que qualquer funcionário do departamento de codigo 1 WHERE salario > ALL (SELECT salario WHERE dep_cod = 1) Prof. Sidney Vieira 3

Exemplo6: Obter os nomes dos funcionários que são chefes de departamentos WHERE EXISTS (SELECT * FROM departamento WHERE matr = funcionario.matr) Exemplo7: Obter os nomes dos funcionários que não são chefes de departamentos WHERE NOT EXISTS (SELECT * FROM departamento WHERE matr = funcionario.matr) Apelidando tabelas É possivel determinar alias para as tabelas em uma consulta. Para isto basta colocar o apelido a ser usado após o nome da tabela na cláusula From SELECT apelido1.campo1_tab1, apelido1.campo n _tab1,... apelido2. campo k _tab2 FROM tab1 apelido1, tab2 apelido2 WHERE apelido1. campo j _tab1 = apelido2. campo l _tab2 AND apelido2. campo t _tab2 = x AND apelido1.campo m _tab1 = y Exemplo: SELECT f.nome, f.salario, d.nome f, departamento d WHERE f.cod = d.cod AND d.nome = rede AND f.sexo = F Consultas com Join Usada quando se deseja informações de mais de uma tabela. Sintaxe: SELECT tabela1.coluna i,, tabela2.coluna n FROM tabelas1 JOIN tabela2 ON tabela1.coluna j, = tabela2.coluna k [WHERE condição(ões)] OBS: nem todos os SGBD aceitam o termo JOIN neste caso deves-se empregar a sintaxe abaixo SELECT tabela1.coluna i,, tabela2.coluna n FROM tabelas1, tabela2 WHERE tabela1.coluna j, = tabela2.coluna k Prof. Sidney Vieira 4

Exemplos: [AND condição(ões)] Obter o nome e salario dos funcionarios com o nome dos respectivos departamentos onde estão alocados SELECT funcionario.nome, funcionario.salario, departmento.nome JOIN departamento ON funcionario.dep_cod = departamento.cod Obter os dados do departamento de rede com os dados de seu respectivo chefe SELECT * JOIN departamento ON funcionario.matr = departamento.matr WHERE departamento.nome = rede SELECT *, departamento WHERE funcionario.matr = departamento.matr AND departamento.nome = rede Obter o nome e orcamento do departamento de redes com o nome e salario dos seus respectivos funcionarios do sexo feminino SELECT departamento.nome, departamento.orcamento, funcionario.nome, funcionario.salario,, departamento WHERE funcionario.dep_cod = departamento.cod AND departamento.nome = rede AND funcionario.sexo = F SELECT d.nome, d.orcamento, f.nome, f.salario, f, departamento d WHERE f.dep_cod = d.cod AND d.nome = rede AND f.sexo = F Prof. Sidney Vieira 5