Banco de Dados. José Antônio da Cunha CEFET RN

Documentos relacionados
ANÁLISE E PROJETO DE BANCO DE DADOS

Fundamentos de Banco de Dados Postgre com Sql

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

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

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

SQL (Tópicos) Structured Query Language

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

Rápida revisão do Modelo Relacional

ALTERANDO O NOME DA TABELA ALTER TABLE DEPTO RENAME TO TAB_DEPARTAMENTO

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

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

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

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

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

Múltiplas Tabelas. Disciplina de Banco de Dados

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

Banco de Dados. Professora: Luciana Faria

Administração de Banco de Dados

Introdução ao PostgreSQL

Comandos de Manipulação

SQL. Prof. Roger Cristhian Gomes

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

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

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

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>

Aula 06 Sistemas Embarcados LT38C

IMPLEMENTAÇÃO DE BANCO DE DADOS

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

José Antônio da Cunha

Manipulação de Dados com SQL

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

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

Utilizando JOINS. Utilizar a cláusula WHERE para fazer seus JOINs (relacionamentos), limita os relacionamentos a apenas um tipo deles, o INNER JOIN.

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

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

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

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

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

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

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

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

Introdução à linguagem SQL

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

Exercícios. Exercícios

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

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

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

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

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

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

Banco de Dados II. Aula do dia 10/03. Revisão. SQL Estudado até o dia 03/03/2011

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

BANCO DE DADOS. Vinícius Pádua

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

Disciplina: Banco de Dados Tema: SQL Parte 2

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Linguagem SQL (Parte I)

SQL-99: Esquema de BD EMPRESA


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

SQL (Structured Query Language)

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Fundamentos de Bancos de Dados Prova 2

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

Linguagem SQL. Comandos Básicos

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind - Parte II

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

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

A U L A 9 F U N Ç Õ E S A G R E G A D A S E C Á L C U L O S

Linguagem SQL (Parte II)

TLBD II. Continuação

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

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

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

SQL: Definição de tabelas, Modificações à Base de Dados

BANCO DE DADOS PARA WEB

CURSO HABILIDADE PROFESSOR Apostila de SQL

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

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

BANCO DE DADOS GERENCIAL 1 A U L A 2

L Q S m e g a u g n Li A

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

Structured Query Language (SQL)

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

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

C A P I T U L O 10 F U N Ç Õ E S I N T E R N A S P H P P A R A B A N C O D E D A D O S

TRANSACT - SQL. Rua Domingos de Moraes, 770, bloco 2, conjunto 9 Vila Mariana - São Paulo - SP

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

Banco de Dados I Introdução SQL

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'pessoas';

Pesquisas em Tabelas

Bases de Dados 2005/2006. Aula 5

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

Revisão Banco de Dados

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

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

Licenciatura em Informática

José Antônio da Cunha CEFET - RN. José Antônio - CEFET-RN

Transcrição:

Banco de Dados José Antônio da Cunha CEFET RN

Sub-consulta(Subquery) as subqueries permitem que você obtenha dados de uma tabela com base na existência desses dados em outra ou outras tabelas.

Sub-consultas Suponha que você tenha uma tabela Pai e uma tabela Filho com a estrutura e os dados apresentados em seguida: CREATE TABLE Pai ( Cod_Pai int identity not null Primary key, Nome_Pai char(30) not null, ) Idade_Pai tinyint not null

Sub-consultas CREATE TABLE Filho ( Cod_Filho int identity not null Primary key, ) Cod_Pai int not null References Pai(Cod_pai), Nome_Filho char(30) not null, Sexo_Filho char(1) not null Check(Sexo_Filho IN ( F, M ))

Cod_Pai Nome_Pai Idade_Pai 1 Daniel se Souza Leão Sobrinho 62 2 João Carlos da Silva 38 3 Fernando de Oliveira 36 4 Jairo de Oliveira Leão 32 Cod_Filho Cod_Pai Nome_Filho Sexo_Filho 1 1 Renata de Oliveira Leão F 2 1 Fernando de Oliveira Leão M 3 1 Roberta de Oliveira Leão F 4 1 Jairo de Oliveira Leão M 5 2 Giovanna da Silva F 6 3 Lucas Ribeiro Oliveira M 7 3 Helder Ribeiro Oliveira M

Ex: suponha que você precisasse obter da tabela Pai todos os dados do pai mais velho. SELECT * FROM Pai WHERE Idade_Pai = (Select Max(Idade_Pai) FROM Pai) SELECT * FROM Pai WHERE Idade_Pai IN (Select Max(Idade_Pai) FROM Pai)

Ex: Obtenha os dados do pais sem mostrar o pai mais velho. SELECT * FROM Pai WHERE Idade_Pai <> (Select Max(Idade_Pai) FROM Pai) SELECT * FROM Pai WHERE Idade_Pai < (Select Max(Idade_Pai) FROM Pai)

Regras para Utilizar Subqueries: 1. As subqueries introdizidas com os sinais (>, >=, <, <=, =, <> ou!=) devem sempre retornar apenas um único valor; 2. Toda subquery deve ser escrita entre parênteses; 3. Toda subquery pode selecionar valor apenas de uma coluna.

Subqueries com os operadores In e Not In as subqueries introduzidas com os operadores IN e NOT IN devem retornar sempre valores de apenas uma coluna, mas podem retornar mais de uma linha como resposta.

Ex: suponha que você precisasse obter da tabela Pai todas as colunas, apenas dos pais que possuem um ou mais filhos registrados na tabela Filho. SELECT * FROM Pai WHERE Cod_Pai IN (SELECT Cod_Pai FROM Filho)

Ex: suponha que você precisasse obter da tabela Pai todas as colunas, apenas dos pais que não possuem um ou mais filhos registrados na tabela Filho. SELECT * FROM Pai WHERE Cod_Pai NOT IN (SELECT Cod_Pai FROM Filho)

Subqueries com os Operadores Exists e Not Exists Ex: Obter todos os pais que possuem pelo menos um filho registrado na tabela filho. SELECT * FROM Pai WHERE EXISTS (SELECT Cod_Pai FROM Filho WHERE Filho.Cod_Pai = Pai.Cod_Pai)

Observe que na subquery anterior, utiliza-se na cláusula WHERE a tabela Pai, que não foi citada na cláusula FROM dessa mesma subquery. A tabela Pai da cláusula Where da subquery está se relacionando com a Query. Portanto, para cada linha selecionada da tabela Pai pela query, o sistema tem que executar uma vez a subquery que obtém dados da tabela Filho. Assim, se houver na tabela Pai dez pais registrados, o sistema executa dez vezes a subquery correspondente. Justamente porque essas subqueries estão amarradas com a query, ela são chamadas de subqueries correlacionadas. Nota: As subqueries servem apenas como base de pesquisa para a query, portanto não será possível exibir seus dados.

Substituíndo Subqueries por outros comandos Para selecionar todos os pais que possuem filhos, existem três possibilidades /*1- Subquery correlacionada*/ SELECT * FROM Pai Where EXISTS (SELECT Cod_Pai FROM Filho WHERE Filho.CodPai = Pai.Cod_Filho)

Substituíndo Subqueries por outros comandos Para selecionar todos os pais que possuem filhos, existem três possibilidades /*2- Subquery não correlacionada*/ SELECT * FROM Pai Where cod_pai IN (SELECT Cod_Pai FROM Filho)

Substituíndo Subqueries por outros comandos Para selecionar todos os pais que possuem filhos, existem três possibilidades /*3- Inner join*/ SELECT DISTINCT Pai.* FROM Pai INNER JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai) Melhor solução

Para apresentar todos os dados da tabela Pai e a quantidade de filhos que cada pai possui, existem duas possibilidades: /*Subquery correlacionada*/ SELECT *, (SELECT count(cod_pai) FROM Filho WHERE Filho.Cod_Pai = Pai.Cod_Pai ) As Qtd_Filho FROM Pai

Para apresentar todos os dados da tabela Pai e a quantidade de filhos que cada pai possui, existem duas possibilidades: /*Left Join com Group By e a função Count() */ SELECT Pai.Cod_Pai, Pai.Nome_Pai, Count(Filho.Cod_Pai) AS Qtd_Filho FROM Pai LEFT JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai ) Group By Pai.Cod_Pai, Pai.Nome_Pai

Subqueries Aninhadas as subqueries são formadas de vários comandos Select. Vamos utilizar as tabelas do diagrama seguinte para exemplificarmos as subqueries aninhadas:

Para obter os dados de todos os clientes solteiros que já fizeram pelo menos um pedido. SELECT * FROM Cliente Where Cod_Cli NOT IN (SELECT Cod_Cli FROM Conjuge) AND Cod_Cli IN (SELECT Cod_Cli FROM Pedido)

Para obter os dados de todos os clientes que compraram, por exemplo, o produto 1. SELECT * FROM Cliente Where Cod_Cli IN (SELECT Cod_Cli FROM Pedido Where Num_Ped IN (SELECT Num_Ped FROM Itens Where Cod_Prod = 1))

Update com Subquery você pode alterar dados de uma tabela com base na existência de dados em outras tabelas utilizando subqueries. Por exemplo, você poderia alterar a renda dos clientes que comparam o produto de código 1. UPDATE Cliente SET Renda_Cli = Renda_Cli * 1.1 Where Cod_Cli IN (SELECT Cod_Cli From Pedido Where Num_Ped IN (SELECT Num_Ped From Itens Where Cod_Prod = 1))

Delete com Subquery você pode excluir dados de uma tabela com base na existência de dados em outras tabelas utilizando subqueries. Por exemplo, você poderia excluir da tabela produto todos os produtos que nunca foram vendidos. DELETE Produto Where Cod_Prod NOT IN (SELECT Cod_Prod From Itens)

Subquery com Join se for necessário, você pode utilizar joins com subqueries. Por exemplo, suponha que você precise selecionar todos os clientes e seus cônjuges, que compraram o produto de código 1. SELECT * FROM Cliente INNER JOIN Conjuge ON (Cliente.Cod_Cli = Conjuge.Cod_Cli) Where Cod_Cli IN (SELECT Cod_Cli From Pedido Where Num_Ped IN (SELECT Num_Ped From Itens Where Cod_Prod = 1 ))