Projeto de Banco de Dados

Documentos relacionados
Projeto de Banco de Dados

ANÁLISE E PROJETO DE BANCO DE DADOS

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

Aula 10 BD 1 SQL Parte 2. Profa. Elaine Faria UFU

Rápida revisão do Modelo Relacional

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

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

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

SQL DML. SQL Linguagem de Manipulação de Dados SELECT SELECT SELECT SELECT

Introdução ao PostgreSQL

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

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

IMPLEMENTAÇÃO DE BANCO DE DADOS

Sintaxe do comando SELECT

Sumário SELECT + FROM

Álgebra Relacional e SQL

SQL (Tópicos) Structured Query Language

Prof. Fabiano Taguchi

Banco de Dados Notas de Aula Consultas em SQL Prof. Dr. Daniel A. Furtado

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

As Instruções DML. As Instruções de manipulação de dados(dml) em SQL são representados por: Modificam o estado do banco de dados:

SQL Consultas Básicas

Ordenação de tuplos order by

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-99: Esquema de BD EMPRESA

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

- SQL Linguagem de Manipulação de Dados

Universidade Veiga de Almeida

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

Linguagem de Consulta Estruturada SQL- DML

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Comandos de Manipulação

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

Linguagem de Consulta - SQL

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

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

Sistemas de Informação e Bases de Dados 2012/2013. 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

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

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

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

BANCO DE DADOS PARA WEB

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

SQL DML. Frederico D. Bortoloti

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

DML - SELECT Agrupando Dados

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

Linguagem de Banco de Dados DML Exercícios

Manipulando a base de dados

Linguagem SQL Comando SELECT Agrupamento de Resultados

SQL - Consultas

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

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

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

SQL. Prof. Roger Cristhian Gomes

SQL (com MySQL) Apresentação OBJETIVOS. Programação

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

Tarefa Orientada 13 Agrupamento e sumário de dados

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

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

Bases de Dados. DML Data Manipulation Language Parte 2

Bases de Dados. Álgebra Relacional II Junções, agregações, vistas. P. Serendero,

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Bases de Dados. Junção de relações. Junção de relações

BCD29008 Banco de dados

TRABALHO DE DEPENDÊNCIA ETAPA 2

Linguagem SQL Comando SELECT Subqueries

Oracle Database: Fundamentos de SQL e PL/SQL

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

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

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

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

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

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

SUBCONSULTAS E TIPOS DE JUNÇÃO. Banco de Dados Profa. Ana Paula Wauke

Transcrição:

Projeto de Banco de Dados Laboratório de Banco de Dados Prof. Luiz Antônio Vivacqua C. Meyer (luiz.vcm@gmail.com)

Sintaxe Geral SELECT [ALL/DISTINCT] coluna1, coluna2,..., colunan FROM nome_tabela1, nome_tabela2,..., nome_tabelan [WHERE predicado] [GROUP BY coluna1, coluna2,..., colunax] [HAVING predicado] [ORDER BY coluna1[asc/desc], coluna2[asc/desc],..., colunay[asc/desc]]; Prof. Luiz Prof. A. Luiz Vivacqua C. Meyer

Peça Fornecimento Fornecedor Prof. Luiz Prof. A. Luiz Vivacqua C. Meyer

Recuperação Simples: Obter a identificação de todas as peças fornecidas. Select id_peca from fornecimento;

Recuperação Simples sem ocorrência de duplicatas. Obter o código dos fornecedores que fornecem peça Select Distinct id_peca From fornecimento; Recuperação simples de toda a tabela. Obter todas as informações dos fornecedores Select * From Fornecedor; Prof. Luiz Prof. A. Luiz Vivacqua C. Meyer

Recuperação qualificada: Obter a identificacao dos fornecedores de SP com status > 20. Select id, nome From fornecedor Where Cidade = sp and status > 20; Obs: A condição ou predicado que segue WHERE pode incluir os operadores comparativos =, >, <, >=, <=, <> e os operadores lógicos AND, OR, NOT. Recuperação com Ordenação: Obter a identificação e o status de fornecedores de SP, na ordem decrescente de status. Select id, Status From fornecedor Where cidade = sp Order by status desc;

CONSULTA COM JUNÇÃO : RECUPERA DADOS DE MAIS DE UMA TABELA. Obter o nome dos fornecedores que fornecem peças. Select distinct nome From Fornecedor, Fornecimento Where Fornecedor.id=id_forn; Junção com condição adicional: Obter o nome do fornecedor que fornece a peça P2. Select distinct nome From Fornecedor, Fornecimento Where Fornecedor.id=id_forn and id_peca= p2 ;

Junção de três tabelas: Obter o nome das peças que são fornecidas por fornecedores do RJ Select Distinct Peca.nome From fornecedor S, peca P, fornecimento SP Where S.id = id_forn and P.id = id_peca and S.cidade= rj ; Inner Join Obter o nome dos fornecedores que fornecem peças. Select distinct nome From Fornecedor INNER JOIN Fornecimento ON fornecedor.id = id_forn;

LEFT JOIN Obter o nome dos fornecedores e a qtde fornecida de peças inclusive dos que não fazem fornecimento Select nome, qtde From Fornecedor LEFT JOIN Fornecimento ON fornecedor.id = id_forn; RIGHT JOIN O inverso do Left join Obter o nome das peças e o nome dos fornecedores na mesma cidade inclusive os fornecedores em outras cidades select P.nome, F.nome from peca P RIGHT JOIN fornecedor F ON P.cidade=F.cidade

Full Join Left Join + Right Join Select P.nome, F.nome, P.cidade, F.cidade from peca P FULL JOIN fornecedor F ON P.cidade=F.cidade

Funções embutidas COUNT retorna o número de linhas na tabela. SUM retorna a soma dos valores na coluna que tem que ser numérica. AVG retorna a média de valores na coluna que tem que ser numérica. MAX retorna o maior valor na coluna. MIN retorna o menor valor na coluna. Obter o número total de fornecedores. Select count(*) From fornecedor;

Obter o número de fornecedores que fornecem peças Select count(distinct id_forn) From fornecimento; Obter o número de fornecimentos para a peça P2. Select count(*) From Fornecimento Where id_peca = p2

Obter a quantidade total de peças P2 fornecidas. Select SUM(Qtde) From fornecimento Where id_peca = p2 ; Uso do Group By A cláusula group by pode ser usada em conjunto com funções de forma de agrupar o resultado segundo uma ou mais colunas.

Obter a quantidade total de cada peça fornecida. Select id_peca, SUM(Qtde) From fornecimento Group by id_peca; Uso do having A cláusula having funciona para os Grupos assim como o Where para linhas.

Obter a identificação da peça e a soma das quantidades fornecidas de todas as peças fornecidas com qtde > 500. Select id_peca, SUM(Qtde) From fornecimento Group by id_peca Having SUM(Qtde) > 500;

Recuperação com Like _ vale para qq caracter % vale para qq sequência de n caracteres onde n pode ser 0. Negação Not Like Obter a identificação e a cor das peças cujos nomes começam com a letra R. Select id, cor From Peca Where nome like r%';

Obter a identificação, peso e cor das peças cujos nomes começam com a letra r, tem b na terceira letra e terminam com e. Select id, peso, cor From Peca Where nome like r_b%e'; Recuperação com NULL Usado para testar a presença ou ausência de valores nulos. Obter a identificação dos fornecedores com status igual a nulo. Select id From fornecedor Where status IS NULL;

Recuperação com Subconsulta Subconsulta é uma expressão SELECT FROM WHERE aninhada dentro de uma cláusula WHERE ou HAVING. É executada uma vez antes da execução da consulta externa Obter os nomes dos fornecedores que fornecem a peça P2. Select distinct nome From fornecedor Where id IN (Select id_forn From fornecimento Where id_peca = p2 );

Subconsulta com vários níveis de aninhamentos. Obter os nomes dos fornecedores que forneçam pelo menos uma peça verde. Select distinct nome From fornecedor Where id IN (Select id_forn From fornecimento Where id_peca IN (Select id From Peca where cor = 'verde'));

Subconsulta c/ operador diferente de IN Obter a identificação e o nome dos fornecedores localizados na mesma cidade que o fornecedor S1 Select id, nome From fornecedor Where cidade = (Select cidade From fornecedor Where id = s1 );

Função numa subconsulta Obter o nome e a cidade dos fornecedores cujo status seja inferior ao maior status existente. Select nome, cidade From fornecedor Where status < (Select MAX(status) From fornecedor);

Subconsulta correlacionada: Uma subconsulta correlacionada referencia uma ou mais colunas na instrução SQL externa. Usado quando se precisa de uma resposta para uma pergunta que depende de um valor em cada linha contida em uma consulta externa É executada uma vez para cada linha na consulta externa O operador EXISTS verifica a existência de linhas retornadas por uma Subconsulta. Embora possa ser usado em subconsultas não correlacionadas, geralmente é usado neste tipo de subconsulta.

Obter o nome dos fornecedores que fizeram fornecimento Select id, nome from fornecedor T1 Where EXISTS (select 1 from fornecimento T2 where T2.id_forn = T1.id); Obs: Como EXISTS apenas verifica A existência de linhas retornadas pela subconsulta, uma subconsulta não precisa retornar uma coluna, ela pode retornar um valor literal, melhorando o desempenho

Forma negativa: Obter o nome dos fornecedores que não fizeram fornecimento select nome from fornecedor T1 where NOT EXISTS (select 1 FROM fornecimento T2 where T1.id = T2.id_forn)

Dicas: Normalmente, EXISTS oferece um desempenho melhor do que IN em subconsultas. Quando uma lista de valores contem um valor nulo, NOT EXISTS retorna verdadeiro, mas NOT IN retorna falso Exemplo: Insert into fornecimento values(13, null, p1,300) Select nome from fornecedor T1 where NOT EXISTS (select 1 FROM fornecimento T2 where T1.id = T2.id_forn) Select nome from fornecedor where id NOT IN (select id_forn FROM fornecimento)

select nome from fornecedor where cidade NOT IN('sp'); select nome from fornecedor where cidade NOT IN('sp, null);

Operadores de conjunto SQL - CONSULTAS Combinam os resultados das consultas que devem ter o mesmo número de colunas com o mesmo tipo de dados. Union É o operador de união da teoria de conjuntos tradicionais. O resultado é a união dos resultados da cada consulta. As duplicidades são sempre eliminadas. Obter a identificação das peças que pesam mais de 15 ou que são fornecidas por S2. Select id From Peca Where peso > 15 UNION Select id_peca From fornecimento Where id_forn = S2 ;

Consulta com Intersect É o operador de interseção de conjuntos. O resultado é a interseção dos resultados da cada consulta. Obter as cidades onde existam fornecedores e peças. Select cidade From fornecedor INTERSECT Select cidade From Peca;

Consulta com EXCEPT É o operador de subtração de conjuntos. O resultado apresenta as linhas da primeira consulta que não estão na segunda consulta. Obter as cidades onde existam fornecedores e que não existam peças. Select cidade From fornecedor EXCEPT Select cidade From Peca;

Usando a expressão CASE Similar ao IF...THEN...ELSE de outras linguagens CASE WHEN CONDIÇÃO THEN RESULTADO [WHEN...] [ELSE RESULT] END CONDIÇÃO é uma expressão que retorna um boleano Se a cláusula ELSE for omitida e nenhuma condição for verdade o resultado é NULO.

EXEMPLOS: Select Id,status, Case Status WHEN 10 Then 'OTIMO' WHEN 20 Then 'BOM' WHEN 30 Then 'REGULAR' ELSE 'RUIM' End From Fornecedor; Expressão CASE pesquisada Select Id, status, Case WHEN status=10 THEN ÓTIMO WHEN status=20 THEN BOM WHEN status=30 THEN REGULAR ELSE RUIM End From Fornecedor;