Sistemas de Banco de Dados I. Escola Alcides Maya DDL - Introdução

Documentos relacionados
DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Rápida revisão do Modelo Relacional

Introdução ao PostgreSQL

MySql. Introdução a MySQL. Andréa Garcia Trindade

Utilizando o Postgres - comandos SQL para a manipulação de dados

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Banco de Dados I Introdução SQL

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

SQL. Prof. Roger Cristhian Gomes

Múltiplas Tabelas. Disciplina de Banco de Dados

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

ANÁLISE E PROJETO DE BANCO DE DADOS

Banco de Dados. Professora: Luciana Faria

Revisão de Bancos de Dados

IMPLEMENTAÇÃO DE BANCO DE DADOS

A linguagem SQL

Comandos de Manipulação

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

SQL (Tópicos) Structured Query Language

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Tabelas. Banco de Dados I MySQL

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

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

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

BCD29008 Banco de dados

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

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

PSI Linguagem de Definição de dados. Módulo 15

Linguagem de Consulta Estruturada (SQL)

Bancos (Bases) de Dados

Page 1. Prof. Constantino Jacob

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Professor Leonardo Larback

SQL Linguagem de Definição de Dados

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

BANCO DE DADOS PARA WEB

Marcelo Henrique dos Santos

BANCO DE DADOS GERENCIAL 1 A U L A 2

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

SQL - Structured Query Language. Karine Reis Ferreira

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

SQL Básica. Andre Noel

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Aula 06 Sistemas Embarcados LT38C

SIG: Sistemas de Informações Geográficas. Adaptado de Gilberto Câmara

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

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

Introdução ao Banco de Dados. Banco de Dados

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

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

Linguagem SQL Sub-linguagem DDL

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

A linguagem SQL

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Revisão Banco de Dados

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

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

Manipulação de Dados com SQL

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

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

Introdução à linguagem SQL

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

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

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

EXEMPLOS DE COMANDOS NO SQL SERVER

Objetos Persistentes. Objetos Persistentes: são objetos que requerem armazenamento persistente.

BANCO DE DADOS PARA NINJAS

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

Structured Query Language (SQL) Aula Prática

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

EXERCÍCIOS PRÁTICOS. Banco de Dados

Fundamentos de Banco de Dados Postgre com Sql

Curso de Banco de Dados. Prof. Rone Ilídio

Oracle Database 10g: Fundamentos de SQL e PL/SQL

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

SQL (Structured Query Language)

ANEXO B Manual básico de SQL

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

SQL (Structured Query Language)

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

Transcrição:

DDL - Introdução

Sumário (4ª aula) DDL (Data Definition Language) Creates Alters Drops Index Unique Keys e Foreign Keys

DDL Data Definition Language ou Data Description Language (DDL) É uma linguagem para definir estruturas de dados. O termo DDL foi introduzido devido ao modelo de banco de dados Codasyl. Mais tarde, o termo DDL foi usado para referenciar um subconjunto SQL. Atualmente, é utilizada no senso geral para referir-se a qualquer linguagem formal para descrever dados ou estruturas de informação Ex: XML schemas.

Create Table Utilizado para criar novas tabelas no banco de dados CREATE [TEMPORARY] TABLE [IF NOT EXISTS] nome_da_tabela ( lista_de_colunas ) engine=engine; Letrinhas miúdas: O que está entre [ ] é opcional no comando.

Exemplo I CREATE TABLE employees ( id INTEGER PRIMARY KEY, first_name CHAR(50) NULL, last_name CHAR(75) NOT NULL, dateofbirth DATE NULL );

Exemplo II

InnoDB x MyISAM MyISAM oferece velocidade. InnoDB oferece confiabilidade. MyISAM não oferece suporte a transações nem constraints de chaves estrangeiras. O mais importante é considerar quais as necessidades específicas para cada tabela.

InnoDB x MyISAM Se existem muitas modificações nos dados (INSERT, UPDATE e DELETE), InnoDB trabalha mais rápido porque ele usa row locking em vez de table locking (MyISAM). Entretanto, se a tabela é utilizada principalmente para SELECTs, uma tabela MyISAM terá um desempenho mais rápido. Se você necessita restrições (contraints) para chaves estrangeiras, a saída é usar InnoDB. Entretanto, se você necessita utilizar índices fulltext, a saída é utilizar MyISAM. Com replicação, é possível tirar vantagens de ambos mecânismos de armazenamento em uma determinada tabela. Por exemplo, tabela mestre como InnoDB (INSERTs, UPDATEs and DELETEs), enquanto a tabela escrava como MyISAM (SELECTs).

Exemplo III

Alter Table ALTER TABLE possibilita a alteração da estrutura de uma tabela já criada. Por exemplo: Adição/remoção de colunas Criação/remoção de índices Modificação do tipo de colunas existentes Renomear colunas/tabela Mudar os comentários de uma tabela Mudar o tipo de uma tabela Etc... Exemplos ALTER TABLE sink ADD bubbles INTEGER; ALTER TABLE sink DROP COLUMN bubbles;

Alter

Deletando Tabelas Para deletar uma tabela do banco de dados, usa-se o comando DROP TABLE. DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name,...] A palavra TEMPORARY é utilizada para deletar tabelas temporárias. MySQL permite deletar várias tabelas de uma vez.

Truncate Em alguns casos, pode ser necessário deletar todos os dados de uma tabela, e resetar as colunas auto increment. O MySQL provê o comando TRUNCATE para essa função. Uso: TRUNCATE TABLE table_name;

Índices São utilizados para encontrar linhas com valores especificados em uma determinada coluna de forma rápida. MySQL pode determinar a posição da busca baseado no índice, evitando a necessidade de verificar todos as linhas da tabela. Se a tabela tem 1.000 linhas, a busca com índices será pelo menos 100 vezes mais rápida do que a busca sequencial. Sem índices, MySQL deve iniciar a procura pela primeira linha e ler a tabela inteira para encontrar as linhas relevantes. Maior a tabela, maior será o custo (tempo). Entretanto, se é necessário o acesso a maioria das silnhas, o modo mais eficiente é o de leitura sequential, pois este minimiza acessos ao disco.

Índices II Podem ser incluídos juntamente com o CREATE TABLE ou após a tabela ser sido criada. CREATE [UNIQUE FULLTEXT] INDEX nome_indice ON nome_tabela (index_col_name [(tam)],...) Exemplo de criação de índice em uma tabela já existente (customer): CREATE INDEX part_of_name ON customer (name(10));

Exemplo Índice

UNIQUE KEYS (Chaves Únicas) Identificador único para uma única linha de uma tabela Não pode ser repetido, mas podem ser NULL PRIMARY KEY Geralmente usa-se AUTO INCREMENT Não pode ser NULL UNIQUE

Exemplo CREATE TABLE nome_tabela ( ) id_col INT, col2 CHARACTER VARYING(20), key_col SMALLINT,... CONSTRAINT key_unique UNIQUE(key_col),...

FOREIGN KEY Chave estrangeira Chaves estrangeiras são utilizadas para a representação de relacionamentos. InnoDB suporta constraints de chaves estrangeiras. Síntaxe para definição de constraints:

Exemplo I CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB;

Exemplo 2 CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB;

Exercício Para relembrar Cria uma tabela Pessoa com quatro colunas CPF (PK), Nome, Idade, Sexo Adiciona um novo campo sobrenome, com o tipo inteiro Mude o tipo do campo sobrenome para VARCHAR(45) (Dica: Alter + Alter column) Delete um campo da tabela (Dica: Alter + Drop Column)

DML Data Manipulation Language

Para ler... http://pt.wikipedia.org/wiki/sql

Inserção de Dados Em SQL, A inserção de dados em uma tabela é feita através do comando INSERT. Duas formas: INSERT INTO nome_tabela VALUES (valor1, valor2, valor3,...) INSERT INTO nome_tabelas (coluna1, coluna2, coluna3) VALUES (valor1, valor, valor3,...) Utilizado para inserir dados apenas em algumas colunas

SELECT Utilizado para selecionar registros do BD. Os resultados do select são armazenados em uma tabela denominada result-set ou conjunto-resultado.

Sintaxe do comando SELECT

SELECT Exemplos Para selecionar todos os campos de uma determinada tabela: SELECT * FROM tabela Pode-se limitar as colunas a serem buscadas de uma tabela: SELECT campo1, campo2, campo3 FROM tabela

SELECT Exemplos Para evitar registros duplicados, utiliza-se: SELECT DISTINCT coluna1, coluna2 FROM tabela

Exercício Inserir dois registros idênticos em uma tabela Agora fazer a seleção dos dados de três maneiras diferentes: Utilizar SELECT Utilizar SELECT DISTINCT Utilizar SELECT DISTINCTROW

SELECT combinado com WHERE Utiliza-se a cláusula WHERE para especificar uma condição a ser satisfeita na seleção. Exemplos de sentenças: Selecione todos as linhas de uma tabela Pessoa onde a idade é igual a 20. Selecione todas as linhas de uma tabela Futebol onde o nome_do_time é igual a Brasil

Exemplos SELECT + WHERE SELECT nome_coluna(s) FROM tabela WHERE nome_coluna operador valor. SELECT * FROM pessoa WHERE idade = 20 Atenção Para valores textuais: WHERE nome = Nome Para valores numéricos: WHERE valor = Valor

Operadores para cláusula WHERE Operador Descrição = Igual <> Diferente > Maior < Menor >= Maior ou igual <= Menor ou igual BETWEEN Dentro de uma faixa específica LIKE Procura por um padrão IN Dentro de uns determinados valores

Exemplos operadores (WHERE) SELECT * FROM Persons WHERE LastName IN ('Hansen','Pettersen') SELECT * FROM Pessoas WHERE Idade BETWEEN 5 AND 20

Exercícios Faça um comando select utilizando cada um dos operadores especificados abaixo: WHERE a = b WHERE a <> b WHERE a > b WHERE a < b WHERE a BETWEEN x AND y WHERE a LIKE %TEXTO% WHERE a IN ( nome1, nome2 )

Até aqui

Renomeação de colunas Do inglês, Column aliasing Utilizado para renomear uma coluna de uma tabela Apenas na consulta corrente E no conjunto resultante Ex.: SELECT nome, sobrenome AS s FROM pessoas WHERE s= silva ;

UPDATE Utilizado para atualizar registros do BD

UPDATE Modificadores: LOW_PRIORITY atrasa a atualização de um registro até que nenhum cliente esteja lendo a tabela. IGNORE A instrução não será abortada mesmo que aconteçam erros (Ex. Chave duplicada)

Exemplo UPDATE filmes SET ano = 2006; CUIDADO!!! Todos os registros serão atualizados. UPDATE filmes SET ano = 2006 WHERE id_filme = 2; Atualiza apenas o registro onde o id_filme é igual a 2. UPDATE dados_pessoais SET idade=idade+1; CUIDADO!!! Incrementa em 1 o valor de idade já armazenado. UPDATE dados_pessoais SET idade=idade*2, idade=idade+1; Comandos SQL são analisados da esquerda para direita. Portanto dobra a idade, e então incrementa 1.

DELETE Utilizado para excluir registros do BD

DELETE (Cont.) Modificadores: LOW_PRIORITY atrasa a exclusão dos registro até que nenhum cliente esteja lendo a tabela. IGNORE A instrução não será abortada mesmo que aconteçam erros CUIDADO!!! Erros são retornados como warnings. DELETE QUICK Não reorganiza índices da tabela. Ou seja, alguns índices serão desperdiçados, gastando espaço. Opção para evitar esta situação: DELETE QUICK OPTIMIZE TABLE

Exemplo DELETE FROM filmes WHERE ano < 2006; CUIDADO!!! Deleta todos os registros da tabela filmes. DELETE FROM filmes WHERE ano < 2006; Deleta todos os registros onde o ano do filme é menor que 2006.

Funções agregadas AVG Retorna a média de valores COUNT Conta a ocorrência de registros dada uma condição MAX Retorna o valor máximo MIN Retorna o valor mínimo

Exemplos SELECT AVG(idade) FROM pessoas; Retorna a média de idades de pessoas. SELECT MAX(idade) FROM pessoas; Retorna a maior idade entre todas pessoas. SELECT MIN(idade) FROM pessoas; Retorna a menor idade entre todas pessoas. SELECT SUM(idade) FROM pessoas; Retorna a soma de todas as idades.

Função GROUP BY Utilizado para agrupar um conjunto de registros baseado em uma dada coluna. Ex.: Controle de vendas por vendedor em uma loja: SELECT nome_vendedor, SUM(valor) AS total_vendas FROM vendas GROUP BY nome_vendedor; WITH ROLLUP SELECT nome_vendedor, SUM(valor) AS total_vendas FROM vendas GROUP BY nome_vendedor;

Função ORDER BY Utilizado para ordenar o conjunto resultante (result set) Ex. (Mais novos vem primeiro) SELECT * FROM pessoas ORDER BY idade; Ex. (Mais velhos vem primeiro) SELECT * FROM pessoas ORDER BY idade DESC;

LIMIT Utilizado para limitar o número de linhas a ser exibido no conjunto resultante. Ex.: Supondo uma tabela de ranking que contém o nome do jogador e o número de vitórias. A posição no ranking é dada pelo número de vitórias. SELECT nome, vitorias FROM ranking ORDER BY vitorias DESC, nome LIMIT 4;

LIMIT (Cont.) E caso na última linha existissem dois jogadores com o mesmo número de vitórias? Deve-se fazer o seguinte procedimento: Descobrir o número de vitórias da última colocação a ser listada. SELECT vitorias FROM ranking ORDER BY vitorias DESC, nome LIMIT 3,1; Fazer um SELECT com a clásula WHERE vitorias >= numero_vitorias_ultimo_listado SELECT nome, vitorias FROM ranking WHERE vitorias >= 18 ORDER BY vitorias DESC, nome;

Utilizando mais de uma tabela

Introdução Qualquer aplicação de complexidade moderada, provavelmente necessitará utilizar múltiplas tabelas. Algumas consultas não podem ser efetuadas utilizando apenas uma tabela. O verdadeiro poder de um banco de dados relacional aparece quando informações entre tabelas são relacionadas.

Problema: Você deseja escrever uma consulta que usa informações de mais de uma tabela. Solução: Utilizar um join Uma consulta que se refere a múltiplas tarefas e informa ao MySQL para consultar estas.

Join Idéia básica Combinar linhas de uma tabela com linhas de outra(s) tabela(s). Full join Produz todas as possíveis combinações de linhas Ex.: Uma operação de join entre uma tabela de 200 linhas e outra de 100 linhas, resulta em 100 * 200 = 20000 linhas.

Exemplo Camisas Gravatas Calças SELECT * FROM camisas, gravatas, calcas;

Como restringir o número de combinações? Uso cláusula WHERE LIMIT SELECT * FROM camisa, gravata, calca WHERE camisa.cor = Branca ; SELECT * FROM camisa, gravata, calca LIMIT 4;

Join Para o MySQL mostrar várias combinações de items, pode-se escrever uma consulta (query) que execute um full join SELECT * FROM camisas, gravatas * significa: Para uma tabela: Todas as colunas Para várias tabelas: Todas as colunas de todas as tabelas nomeadas

Alternativas ao * Pode-se especificar nome_tabela.* Caso o nome da coluna seja único entre todas as tabelas, pode-se emiter o nome da tabela. Ex.: Queries equivalentes

Join É possível realizar um join entre tabelas de: Mesmo banco de dados Diferentes banco de dados Diferentes banco de dados e servidores

Combinações de roupas Exemplo para gerar uma combinação randomica de roupas: ORDER BY RAND() LIMIT 1

Problema Você deseja utilizar linhas de uma tabela para localizar linhas de outra tabela. Solução Utilizar um join com a cláusula WHERE

Exemplo Duas tabelas Artistas Quadros Para listar os quadros de cada artista SELECT * FROM artistas, quadros WHERE artistas.a_id = quadros.a_id; Para listar apenas os quadros de Van Gogh SELECT * FROM artistas, quadros WHERE artistas.a_id = quadros.a_id AND artistas.nome = Van Gogh ;

Exemplo Como contar a quantidade de quadros que cada artista possui? SELECT artistas.nome COUNT(*) AS numero de quadros FROM artistas, quadros WHERE artistas.a_id = quadros.a_id GROUP BY artistas.nome;

Exemplo Para cada artista, contar a quantidade de quadros que cada artista possui, o valor total pago pelos quadros, e a média de preço dos quadros? SELECT artistas.nome COUNT(*) AS numero de quadros, SUM(quadros.preco) AS preco total dos quadros, AVG(quadros.preco) AS media de preco FROM artistas, quadros WHERE artistas.a_id = quadros.a_id GROUP BY artistas.nome;

Como fazer para encontrar linhas em uma tabela que não tem correspondentes em outra? Ex.: Considere uma situação onde existem duas tabelas Consumidores potencias Compras de consumidores Como descobrir quais consumidores potenciais ainda não realizaram compras??

Como fazer para encontrar linhas em uma tabela que não tem correspondentes em outra? Ex.: Considere uma situação onde existem duas tabelas Consumidores potencias Compras de consumidores Como descobrir quais consumidores potenciais ainda não realizaram compras??

LEFT JOIN Artistas sem quadros não são listados SELECT * FROM artistas, quadros WHERE artistas.a_id = quadros.a_id; SELECT * FROM artistas INNER JOIN quadros ON artistas.a_id = quadros.a_id; Artistas sem quadros são listados SELECT * FROM artistas LEFT JOIN quadros ON artistas.a_id = quadros.a_id;

Algo mais complexo: SELECT artistas.name, IF(COUNT(quadros.a_id)>0, sim','nao') AS na coletanea' FROM artistas LEFT JOIN quadros ON artistas.a_id = quadros.a_id GROUP BY artistas.name;

Dicas: LEFT JOIN é útil para encontrar valores que não tem correspondentes em outra tabela. Pode ser útil para produzir um relatório que inclui todos os itens em uma lista, mesmo aqueles que contém uma quantidade zero. Comum para caracterizar o relacionamento entre uma tabela mestre e uma tabela de detalhes. Com LEFT JOIN pode-se produzir um total de vendas por consumidor, que inclua até aqueles consumidores que não realizaram nenhuma compra. Outra aplicação: Realizar verificação de consistência quando se recebe dois arquivos de dados que são supostamente relacionados, e precisa-se determinar se isto é verdadeiro Por exemplo verificar a integridade de relacionamentos.

RIGHT JOIN Similar ao LEFT JOIN Produz uma combinação da tabela direita com a tabela esquerda. Mesmo EFEITO: SELECT * FROM artistas LEFT JOIN quadros ON artistas.a_id = quadros.a_id; SELECT * FROM artistas RIGHT JOIN quadros ON artistas.a_id = quadros.a_id;

Exercícios 1) Crie as tabelas Artistas (a_id, nome) Quadros (a_id, p_id, titulo, estado, preco) 2) Faça um full join entre estas tabelas 3) Produza um relatório de todos os quadros dizendo qual é o seu respectivo autor (artista). Artistas sem quadros não devem ser listados.

Exercícios II 4) Produza um relatório de todos os quadros dizendo qual é o seu respectivo autor (artista). Artistas sem quadros devem ser listados. 5) Produza uma query que informe o total de quadros produzidos por cada artista. 6) Produza uma query que informe o total de quadros produzidos por cada artista, e o total de quadros.

Exercícios III 7) Produza uma query que informe a média de preços dos quadros por artista. 8) Produza uma query que informe o estado que possui a maior quantidade de quadros. 9) Produza uma query que informe o estado que possui a soma de quadros mais valiosa.

UNION