Operação de União “JOIN”

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Tópicos em Banco de Dados
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Banco de Dados Prof. Antonio.
Banco de Dados Prof. Antonio.
Banco de Dados I Aula 20.
SQL Renata Viegas.
Triggers Renata Viegas.
SQL Avançado Continuação
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
BANCO DE DADOS EM APLICATIVOS WEB Aula 13
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados Bruno Rafael de Oliveira Rodrigues.
Banco de Dados SQL TRIGGERS (Gatilhos)
Banco de Dados SQL Stored Procedures
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Visões Marilde Santos.
Maurício Edgar Stivanello
SGBD.
Sistema Gerenciador de Banco de Dados SGBD
SQL – Consultas Básicas
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Oficina sobre banco de dados
Material III-Bimestre Wagner Santos C. de Jesus
SQL Structured Query Language
Linguagem de Banco de Dados - SQL
Linguagem de Banco de Dados - SQL
Bancos de Dados – SQL – parte 1
Classes e objetos P. O. O. Prof. Grace.
12 Horas Instrutor: Antonio Itamar Júnior
Banco de dados Profª Kelly Medeiros.
Monitoria GDI Aula Prática
Monitoria GDI Aula Prática
Vânia Maria Ponte Vidal
SQL Server 2012 Tipos de Dados e Tabelas
Design Patterns / Acesso ao banco de dados (java.sql)
Banco de Dados Aplicado ao Desenvolvimento de Software
SEGUNDA FASE / S2B MIC PERNAMBUCO SEGUNDA FASE / S2B MIC PERNAMBUCO
Monitoria GDI Aula Prática
Desenvolvendo um script SQL
Treinamento sobre SQL.
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Banco de dados.
Linguagem de Definição de Dados
Baseado no material do Professor Raul Paradeda
Comandos SQL.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Treinamento SQL Server
Triggers (Gatilhos) Professor Esp. Diego André Sant’Ana
SCC Bancos de Dados e Suas Aplicações
Banco de Dados I I Comandos SQL
NOTA DE AULA SQL.
Linguagem SQL Prof. Juliano.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Banco de Dados Maria Augusta (Magu).
VBA – Visual Basic para Aplicativos
UCSal – Bacharelado em Informática
Linguagem de definição de dados - SQL
Fundamentos de Banco de Dados Prof. André Cypriano M. Costa
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
José Antônio da Cunha 2/6/2016 José Antônio - CEFET-RN 1 Disciplina: Banco de Dados.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Banco de Dados para Redes– Aula 03 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Operação de União “JOIN” Professor Victor Sotero SGD

JOIN O “join” é uma operação de multi-tabelas Select: o nome da coluna deve ser precedido pelo nome da tabela, se mais de uma coluna na tabela especificada na cláusula “from” tiver o mesmo nome. From: duas ou mais tabelas listadas no comando “from” indicam ao SGBD que uma união é desejada. Where: colunas são comparadas; elas devem ter valores similares. SGD

ALGUMAS OBSERVAÇÕES Não precisam ter o mesmo tipo de dados; mas tem de ser de um tipo que o SGBD automaticamente converta. Ex.: (int, smallint, tinyint, decimal real or float); (char, varchar, datetime and smalldatetime) Valores nulos nunca se unem Colunas na condição de “join” não precisam ser definidas na cláusula “select”. SGD

SINTAXE SIMPLIFICADA select [tabela].nome_de_coluna, [,...] from lista_de_tabelas [where condições_de_pesquisa] Exemplo: select publishers.pub_id, titles.title_id from publishers, titles where publishers.pub_id = titles.pub_id SGD

JOINS BASEADOS EM IGUALDADE Baseado em uma igualdade, entre os valores nas colunas especificadas: Select produto.nome,vendas.codigo From produto, vendas Where produto.data_chegada=vendas.data_saida; SGD

JOINS BASEADOS EM IGUALDADE Utilizando o Join com order by Select produto.nome,vendas.descricao From produto, vendas Where produto.data_chegada=vendas.data_saida order by produto.nome; SGD

ALIASES Função para “apelidar” tabelas dentro do SQL: Ex.: 1- Select a.nome,d.nome from aluno a, disciplina d where a.mat>30 and d.nome=‘BDD’; 2- select t.title_id from titles t,titleauthor ta where t.title_id = ta.title_id and au_id = ‘409-56-7008’; Quais os livros escritos pelo autor de código 409-56-7008? SGD

JOINS BASEADOS EM NÃO IGUALDADE Operadores de comparação usados. > maior que < menor que >= maior igual que <= menor igual que Exemplo: select e.estado,a.Pnome,a.Snome,a.estado from editora e,autor a where a.estado>e.estado and nome_editora="Editora abril"; (Que autores moram num estado cujo o nome é alfabeticamente maior que o estado da editora “Editora Abril”?) SGD

SELF JOINS Você pode utilizar o Join usando a mesma tabela, dando dois aliases, fazendo comparações dentro da mesma: Ex.: select a1.Snome, a1.Pnome from autor a1, autor a2 where a1.Snome=a2.Snome and a1.codigo!=a2.codigo; Que autores possuem o mesmo sobrenome? SGD

OUTER JOIN Seleção que só mostra se as linhas de uma tabela estão relacionadas(chave estrangeira) com a outra tabela. Exemplificando na vida real: Mostrar quais clientes tem algum pedido. SGD

OUTER JOIN Left outer join: são incluídas todas as linhas da tabela do primeiro nome da tabela(a tabela mais a esquerda expressão) Right outer join: são incluídas todas as linhas da tabela do segundo nome da tabela (a tabela mais a esquerda) Ex.: Quais são os clientes que têm pedido e os que não têm? Select cliente.nome, pedido.codigo_cliente,pedido.num_pedido from cliente left outer join pedido on cliente.codigo_cliente=pedido.codigo_cliente; SGD

INDEX Uma índex no banco de dados, como o próprio nome sugere, é um índice que serve para organizar os dados e agilizar na pesquisa/consulta dos dados armazenado nas tabelas.  SGD

INDEX Normalmente a criação de índex no banco de dados segue o padrão ANSI, isso significa que o mesmo comando para criar uma índex em um determinado SGBD, pode ser usado em qualquer outro. Os índices são utilizados para encontrar registros com um valor específico de uma coluna rapidamente. Sem um índice o MySQL tem de iniciar com o primeiro registro e depois ler através de toda a tabela até que ele encontre os registros relevantes.  SGD

INDEX Normalmente você cria todos os índices em uma tabela ao mesmo tempo em que a própria tabela é criada com CREATE TABLE.  Para colunas CHAR e VARCHAR, índices que utilizam apenas parte da coluna podem ser criados, usando a sintaxenome_coluna(length) para indexar os primeiros length() bytes de cada valor da coluna. SGD

EXEMPLO DE CRIAÇÃO DE ÍNDEX Pode ser usado tanto no SQL SERVER, MySQL ou Oracle: Índice na tabela tab_cliente, sendo que o campo de pesquisa é cpf (numero do CPF) CREATE  INDEX nome_do_indice on tab_cliente(cpf) SGD

INDEX Exemplo de index para colunas do tipo char e varchar: CREATE INDEX indice1 ON empregado (nome(10)); Como a maioria dos nomes normalmente diferem nos primeiros 10 caracteres, este índice não deve ser muito menor que um índice criado com toda a coluna nome_empregado. SGD

VERSÕES DO MYSQL COMPATÍVEIS Você só pode adicionar um índice em uma coluna que pode ter valores apenas se você estiver usando o MySQL Versão 3.23.2 ou mais novo e estiver usando os tipos de tabelas MyISAM, InnoDB, ou BDB.  SGD

INDEX Normalmente para um melhor resultado de performance, o ideal para criar índices são campos: Que sejam chaves; select nome_cliente from cliente where cpf = 12345678910 Campos que façam join com outras tabelas. Campos que sejam números (tipo: integer, numeric) SGD

DROP INDEX DROP INDEX nome_indice ON nome_tabela DROP INDEX apaga o índice chamado nome_indice da tabela nome_tabela. DROP INDEX não faz nada nem versões do MySQL anteriores a 3.22.  SGD

RESTRIÇÕES UNIQUE Você pode usar as restrições UNIQUE para ter certeza de que não há valores duplicados digitados em colunas específicas que não participam de nenhuma chave primária. Embora a restrição UNIQUE e a restrição PRIMARY KEY impõem exclusividade, use a restrição UNIQUE em vez da restrição PRIMARY KEY quando for impor a exclusividade de uma coluna, ou uma combinação de colunas, que não seja uma chave primária. Ex.: Create table empregado( cod int not null, primary key(cod), nome varchar(45) unique not null); SGD

CLÁUSULA DISTINCT Com exceção da chave primária, podem existir colunas que tenham valores repetitivos. Essa cláusula aplicada em uma consulta evita valores repetitivos dentro de uma consulta. Ex.: Select distinct nome from produto; SGD

STORED PROCEDURES Stored procedures não retornam dados. Elas executam scripts no MySQL, que podem ser desde alterações da estrutura de tabelas, até migração de dados de uma tabela para outra, ou executar ações de acordo com os resultados de uma consulta. SGD

STORED PROCEDURE Um dos novos recursos no MySQL 5.0 ainda em versão alfa conjunto de comandos SQL que podem ser armazenados no servidor Aumento no desempenho: menos informação enviada entre cliente/servidor Mais trabalho para o servidor Chamados pela isntrução CALL; SGD

Clientes em diferentes linguagens MOTIVOS PARA UTILIZAR Clientes em diferentes linguagens Operações repetitivas Segurança SGD

EXEMPLO DE STORED PROCEDURE SGD

PROCEDURES Podem alterar dados: mysql> create procedure apagaPessoas () delete from pessoas; Query OK, 0 rows affected (0.00 sec) mysql> call apagaPessoas (); Query OK, 9 rows affected (0.00 sec) mysql> call pessoas (); Empty set (0.00 sec) SGD

PROCEDIMENTO PARA EXIBIR A DATA E A HORA ATUAL CREATE PROCEDURE dataEhora() SELECT CURRENT_TIMESTAMP; SGD

Like e Not Like Só funcionam com colunas do tipo char; Têm praticamente o mesmo funcionamento que os operadores = e !=; Sua vantagem é a utilizações dos símbolos: %: substitui uma palavra; _: substitui um caracter. SGD

Like e Not Like Exemplos: Listar todos os produtos cujo nome comece com Q. Select codigo_produto, descricao_produto from produto where descricao_produto like ’Q_’; SGD

Like e Not Like Mostrar os professores que tenham o primeiro nome João. Select codigo,nome From professor where nome like ‘João%’; SGD

Like e Not like Exemplos: Mostrar todos os produtos que tenham nomes que comecem ou com J ou com Q. Select nome, codigo from produtos where nome like ‘[JQ]%’; SGD

Operadores baseados em IS NULL e IS NOT NULL Mostrar os empregados que tenham seus salários cadastrados no sistema como NULO. Select nome from empregado where salario is null; Mostrar as disciplinas que tenham a carga horária como não nulo. Select nome, codigo from disciplina Where carga_horaria is not null; SGD

MAX e MIN Max: mostra o maior valor dentro de um campo em uma tabela; Min: mostra o menor valor de um campo dentro de uma tabela; Ex: Select min(salario_fixo),max(salario_fixo) From vendedor; SGD

SUM Serve para fazer o somatório de todos os valores de uma coluna. Ex: select sum(quantidade) from item_pedido where codigo_produto=‘50’; SGD

AVG Apresenta a média de uma coluna. Exemplo:Qual a média dos salários fixos dos vendedores? Select AVG(salario_fixo) from vendedor; SGD

SGD

Trigger Um TRIGGER ou gatilho é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular; Tais eventos são os comandos da DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE. SGD

Trigger Os TRIGGERS poderão ser disparados para trabalharem antes ou depois do evento.  Usaremos a seguinte tabela para nossos testes SGD

Trigger Baseados nessa tabela, podemos criar um trigger que seja executado antes ou depois de inserir algo na mesma; antes (BEFORE) depois (AFTER)  SGD

Sintaxe: Trigger SGD

SGD

SGD

SGD

SGD