Junções e Índices em Tabelas



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

Comandos de Manipulação

BDII SQL Junção Revisão 8

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

Tarefa Orientada 11 Junção Interna

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

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

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

Bases de Dados 2005/2006. Aula 5

Comandos DDL. id_modulo = id_m odulo

Tarefa Orientada 14 Subconsultas

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

NOME SEXO CPF NASCIMENTO SALARIO

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Operação de União JOIN

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

Linguagem SQL Sub-linguagem DDL

Treinamento sobre SQL

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.

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

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

Tarefa Orientada 13 Agrupamento e sumário de dados

Integridade dos Dados

1. Domínio dos Atributos

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

Structure Query Language SQL Guilherme Pontes lf.pontes.sites.uol.com.br

Prova de Fundamentos de Bancos de Dados 2 a Prova

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

Modelo Relacional - Manipulação

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

INNER, CROSS, LEFT, RIGHT E FULL JOINS SIMPLES ASSIM! Wellyngton Luiz Cruz Moreira wlcmoreira@hotmail.com

Programação SQL. Introdução

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan

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

Memória de aula Semanas 15 e 16

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

Principais Comandos SQL Usados no MySql

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Tarefa Orientada 16 Vistas

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

Criação Visual de Consultas. Curso: Técnico em Informática (Integrado) Disciplina: Banco de Dados Prof. Abrahão Lopes

Structured Query Language (SQL)

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Prof.: Clayton Maciel Costa

Disciplina de Banco de Dados Parte V

Cursos Guia DBA Pacote Curso SQL Server 2014 e o passo a passo para otimização SQL Server 2016

Principal: construir uma base de dados para produção de informações sobre internações hospitalares;

SQL Structured Query Language

Como funcionam os comandos de SQL no Logic Basic Por Alan Oliveira

Tarefa Orientada 15 Manipulação de dados

LINGUAGEM DE BANCO DE DADOS

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

Computadores e Sistemas de Informação. Bases de Dados Relacionais (linguagem SQL)

Oficina. Praça das Três Caixas d Água Porto Velho - RO

CRIANDO, ALTERADO E EXCLUINDO TABELAS, INSERINDO, SELECIONANDO, ALTERANDO E EXCLUINDO 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:

Álgebra Relacional. OBS: as operações Seleção e Projeção são operações unárias porque atuam em relações únicas.

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Principais Instruções em SQL

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Banco de Dados. Maurício Edgar Stivanello

SQL. Autor: Renata Viegas

EXEMPLOS DE COMANDOS NO SQL SERVER

Fundamentos do Sistema Gerenciador de Banco de Dados

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

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

Procedimentos para Instalação do SISLOC

Introdução às Bases de Dados

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

ENGENHARIA DA COMPUTAÇÃO BANCO DE DADOS I CONTEÚDO 5 ABORDAGEM RELACIONAL

Banco de Dados. Microsoft Access

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

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

Prova de Fundamentos de Bancos de Dados

Banco de Dados. Prof. Antonio

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Prof. Daniela Barreiro Claro

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Banco de Dados I. SQL SELECT Parte 1 - Básico. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Prof. Marcelo Machado Cunha

Modelo Relacional. 2. Modelo Relacional (Lógico)

CE-240 ListEx 1. Lista de Exercícios 1. Relatório

Banco de Dados I. Aula 9 - Prof. Bruno Moreno 20/09/2011

1.264 Aula 7. Introdução ao SQL

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

Fernando Albuquerque - fernando@cic.unb.br. Bancos de Dados. Fernando Albuquerque fernando@cic.unb.br

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

Universidade Federal do Estado do Rio de Janeiro UNIRIO. Guia para criação do banco de dados de redes sociais

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

Procedimentos para Instalação do Sisloc

SISTEMA DE BANCO DE IMAGENS MANUAL DE USO

A linguagem SQL

Banco de Dados, Integração e Qualidade de Dados. Ceça Moraes cecafac@gmail.com

Transcrição:

Junções e Índices em Tabelas Prof. Fernanda Baião fernanda.baiao@uniriotec.com.br SGBD Considerados MySQL (http://www.mysql.org) SGBD gratuito e simples, sem muitos recursos avançados Fácil de instalar e utilizar PostgresSQL (http://www.postgresql.org) SGBD gratuito e com muitos recursos Instalação complexa (especialmente no MS Windows) SQL Server (http://www.microsoft.com/sql/default.asp) SGBD com muitos recursos para o ambiente Windows Pago, mas possui uma versão gratuita (porém limitada) Oracle (http://www.oracle.com) SGBD com muitos recursos para diversos ambientes Também possui uma versão gratuita com tempo limitado

SQL Tabelas Exemplo TbAutor Nome TbLivro Nome ISBN Autor Editora TbEditora Nome CNPJ TbEstoqueLivros Loja Livro Estoque TbVendaLivro Cliente Data Loja Livro Quantidade TbLoja Nome CNPJ Endereco TbCliente Nome Endereco Telefone Índices Índices são utilizados para aumentar o desempenho Um índice permite que o SGBD realize consultas por determinados registros de forma muito mais rápida do que seria feito sem um índice Porém os índices acrescentam um custo às operações de inserção, atualização e remoção dos registros de uma tabela Sendo assim, os índices devem ser criados apenas para as colunas mais utilizadas nas consultas do sistema Índices e consultas Campos que participam com freqüência de comandos WHERE geralmente contém índices Imagine uma consulta onde o SGBD deve procurar todos os elementos onde um campo é igual a uma constante

Índices Índices e consultas No caso da consulta abaixo, se não houver nenhum índice, o SGBD deve percorrer todos os registros da tabela de livros, identificando aqueles que possuem determinado autor Este método é claramente ineficiente quando a tabela possui muitos registros Construindo-se um índice sobre esta coluna (Autor), o SGBD pode realizar uma consulta mais otimizada sobre a tabela Se o índice está ordenado pela coluna, por exemplo, o SGBD pode realizar uma busca binária FROM TbLivro WHERE Autor = 90 Criando Índices O comando CREATE INDEX Este comando cria um novo índice em uma tabela Todo índice deve ter um nome e indicar a tabela indexada O comando também deve indicar os campos indexados (entre parênteses, após o nome da tabela) Uma vez criado o índice o SGBD o atualiza automaticamente após a execução de comandos sobre suas tabelas Muitos índices são criados automaticamente pelo SGBD Como exemplo, sempre que criamos uma restrição de verificação de valor, o SGBD cria um índice para facilitar o tratamento desta restrição nas operações de inserção e atualização CREATE INDEX livro_autor_index ON TbLivro (Autor)

Removendo Índices O comando DROP INDEX Este comando remove um índice do banco de dados O comando recebe o nome do índice desejado DROP INDEX livro_autor_index Índices de Múltiplas Colunas Um índice pode conter mais que uma coluna em uma tabela Índices com mais de uma coluna são utilizados quando duas ou mais colunas são utilizadas em consultas conjuntivas (ligadas por AND) Neste caso, as colunas aparecem separadas por vírgulas dentro dos parênteses no comando de criação de índices Deve-se ter um critério para a definição destes índices, visto que o custo de sua atualização é relativamente alto CREATE INDEX livro_diversos_index ON TbLivro (Nome, Autor)

Índices Únicos Índices únicos são utilizados em restrições de unicidade Estes índices são utilizados nas chaves primárias e nas colunas com restrições de unicidade (UNIQUE) Um detalhe: valores nulos não são manipulados pelos índices únicos Assim, dois registros da tabela podem conter valores nulos em um campo com restrição de unicidade sem que isto gere erro CREATE UNIQUE INDEX livro_nome_index ON TbLivro (Nome) Índices Clusterizados Manipulação física da tabela Índices normalmente são armazenados como estruturas a parte da tabela, mantendo ponteiros que referenciam os registros da tabela segundo uma ordenação Os índices clusterizados, por outro lado, exigem a reorganização física da tabela, fazendo com que registros consecutivos na tabela apresentem a ordem determinada pelo índice Índices clusterizados impõem um alto custo da inserção e na atualização de registros, embora acelerem ainda mais as consultas Como só pode haver uma ordenação física dos registros de uma tabela, só pode haver um índice clusterizado por tabela

Regras para a Criação de Índices Índices devem ser criados para Colunas que componham a chave primária da tabela Colunas que participam de cláusulas de ordenação (ORDER BY) Colunas que são utilizadas em junções Colunas que atendem a restrições de verificação de valor Colunas que são comumente analisadas em cláusulas WHERE Índices não devem ser criados para Tabelas com poucos registros Colunas que são raramente referenciadas em consultas Tabelas que recebam muitos comandos de atualização Junções Uma mesma consulta pode acessar diversas tabelas Estas consultas decorrem do processo de normalização, onde um conjunto de informações é partido entre diversas tabelas Estas consultas geralmente possuem junções (joins) Considere, por exemplo, a consulta de todos os livros de um determinado autor Devemos relacionar a chave estrangeira que indica o autor de cada livro com a chave principal do livro Este relacionamento pode ser realizado através da consulta abaixo Observe que como o campo existe nas duas tabelas, ele deve ser precedido pelo nome da tabela e um ponto FROM TbLivro, TbAutor WHERE Autor = TbAutor.

Junções As junções podem ser escritas pelo comando INNER JOIN Este comando indica que a tabela principal da consulta, dada no comando FROM, está relacionada com outras tabelas Ele pode ser utilizado diversas vezes em uma mesma consulta, cada comando relacionando o resultado gerado pelo anterior com outras tabelas do banco de dados Uma condição indica quando a tabela associada (junção) deve ser incluída nos resultados da consulta A condição pode usar qualquer operador de comparação (>, >=, <, <=, = e <>) e operadores lógicos (AND, OR, NOT) OBS: este comando não está disponível em todas as versões de todos os bancos de dados! FROM TbLivro INNER JOIN TbAutor ON TbAutor. = TbLivro.Autor Produto Cartesiano Características do produto cartesiano (CROSS JOIN) Operação de junção que não envolve nenhuma condição de junção entre as 2 tabelas Sejam duas tabelas: T1 com N registros e T2 com M registros O resultado da junção terá todas as colunas de T1 e T2 Para cada registro de T1 serão gerados M registros no resultado da junção (um para cada registro de T2) O resultado da junção conterá N * M registros, contendo todas as combinações entre registros de T1 1 T2 O produto cartesiano é equivalente a colocar o nome das duas tabelas no comando FROM, sem um operador de junção entre elas FROM TbLivro CROSS JOIN TbAutor FROM TbLivro, TbAutor

Tipos de Junção INNER JOIN Possui uma condição relacionando as duas tabelas que participam na junção Para cada registro de T1 o resultado da junção conterá um registro para cada elemento de T2 que atenda a condição INNER JOIN... USING (...) O comando USING recebe uma lista de colunas que devem estar presentes nas duas tabelas onde ocorrerá a junção O comando é equivalente a uma condição de igualdade dos valores das colunas nas duas tabelas NATURAL INNER JOIN O comando NATURAL é equivalente a um comando USING sem a indicação das colunas analisadas nas tabelas O comando NATURAL determina as colunas que ocorrem nas duas tabelas e monta a lista USING com estas colunas Tipos de Junção INNER JOIN T2 ON T1.a = T2.b T1 a b c d T2 a b c INNER JOIN T2 USING (a, b) INNER JOIN T2 ON (T1.a = T2.a) AND (T1.b = T2.b) NATURAL INNER JOIN T2 INNER JOIN T2 ON (T1.a = T2.a) AND (T1.b = T2.b) AND (T1.c = T2.c)

Tipos de Junção LEFT OUTER JOIN Primeiro um INNER JOIN é realizado Em seguida, para cada registro da tabela T1 que não satisfaz a condição de junção com nenhum registro de T2, um registro é incluído nos resultados de junção com valores nulos nas colunas T2 O resultado da junção conterá pelo menos um registro para cada registro de T1 RIGHT OUTER JOIN O mesmo que o LEFT OUTER JOIN, porém invertendo o comportamento da tabela T1 para T2 Tipos de Junção Existe uma outra notação para OUTER JOINs A notação com asteriscos pode ser utilizada em condições da cláusulas WHERE LEFT OUTER JOIN T2 ON T1.a = T2.a, T2 WHERE T1.a *= T2.a RIGHT OUTER JOIN T2 ON T1.a = T2.a, T2 WHERE T1.a =* T2.a

Tipos de Junção FULL OUTER JOIN Primeiro um INNER JOIN é realizado Em seguida, para cada registro da tabela T1 que não satisfaz a condição de junção com nenhum registro de T2, um registro é incluído nos resultados de junção com valores nulos nas colunas T2 Finalmente, para cada registro da tabela T2 que não satisfaz a condição de junção com nenhum registro de T1, um registro é incluído nos resultados de junção com valores nulos nas colunas T1 O resultado da junção conterá pelo menos um registro para cada registro de T1 e T2