Operação de União JOIN



Documentos relacionados
INDEX. Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas.

Principais Comandos SQL Usados no MySql

Programação SQL. Introdução

Structured Query Language (SQL)

Neste artigo, serão apresentados os principais conceitos sobre os TRIGGERS e sua aplicabilidade.

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Comandos de Manipulação

Linguagem SQL Sub-linguagem DDL

EXERCÍCIOS PRÁTICOS. Banco de Dados

A linguagem SQL

Banco de Dados I. Linguagem de Consulta (parte II) Recuperando Dados de Várias Tabelas (JOINS)

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

Junções e Índices em Tabelas

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Prof. Carlos Majer Aplicações Corporativas UNICID

EXEMPLOS DE COMANDOS NO SQL SERVER

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

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

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

O comando CREATE TABLE cria a tabela solicitada e obedece à seguinte forma:

1. Domínio dos Atributos

Á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:

Linguagem SQL (Parte I)

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

SQL. Autor: Renata Viegas

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais


Linguagem de Consulta - SQL

SQL (Structured Query Language)

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127

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

Banco de Dados. StructuredQuery Language- SQL. Prof. Walteno Martins Parreira Jr

SQL (Structured Query Language)

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

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

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

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

SQL (Structured Query Language)

SQL (Structured Query Language)

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

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Comandos DDL. id_modulo = id_m odulo

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

SQL - Criação de Tabelas

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

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

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

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

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Linguagem de Consulta Estruturada (SQL)

Banco de Dados I. Linguagem de Consulta (parte I) DDL DML

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

Linguagem SQL Parte I

Memória de aula Semanas 15 e 16

Bases de Dados 2005/2006. Aula 5

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

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

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Banco de Dados. Maurício Edgar Stivanello

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.

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

4.6. SQL - Structured Query Language

SQL Server Ferramenta de administração. SQL Server Management Studio. 1º passo conectar ao banco de dados 2ª Query (consulta) usando SQL

O que são Bancos de Dados?

Linguagem SQL. Comandos Básicos

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

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

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

ADMINISTRAÇÃO DE BANCO DE DADOS

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

Introdução ao SQL Avançado

SQL Structured Query Language

Tarefa Orientada 19 Triggers

Banco de Dados. Prof. Antonio

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

SQL. Prof. Márcio Bueno.

Linguagem de Banco de Dados DML Exercícios

Profº Aldo Rocha. Banco de Dados

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Introdução ao SQL. O que é SQL?

NOME SEXO CPF NASCIMENTO SALARIO

Linguagem de Consulta Estruturada SQL- DML

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Esta aula tem o objetivo de nos orientar durante este período em nossas aulas de Banco de Dados, não tem a pretensão de ser a única fonte de

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Treinamento sobre SQL

Integridade dos Dados

Pedro F. Carvalho OCP Oracle g LINGUAGEM SQL. São José do Rio Preto

Projeto de Banco de Dados: Empresa X

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

Transcrição:

Operação de União JOIN Professor Victor Sotero SGD 1

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 2

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 3

SINTAXE SIMPLIFICADA select [tabela].nome_de_coluna, [,...] from lista_de_tabelas [where condições_de_pesquisa] Exemplo: select publicacoes.codigo, titulos.codigo from publicacoes, titulos where publicacoes.codigo= titulos.codigo; SGD 4

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 and produto.codigo=vendas.cod_produto; SGD 5

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 6

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 7

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 8

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 9

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 10

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 direita) 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 11

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 12

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 13

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

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 15

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 16

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 17

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 18

DROP INDEX DROP INDEX nome_indice ON nome_tabela DROP INDEXapaga o índice chamadonome_indiceda tabelanome_tabela.drop INDEXnão faz nada nem versões do MySQL anteriores a 3.22. SGD 19

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 20

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 21

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 22

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 23

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

EXEMPLO DE STORED PROCEDURE SGD 25

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 26

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

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 28

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 29

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 30

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 31

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 32

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 33

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 34

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 35

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 UPDA TE. SGD 36

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

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

Sintaxe: Trigger SGD 39