BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Documentos relacionados
IMPLEMENTAÇÃO DE BANCO DE DADOS

SQL (Tópicos) Structured Query Language

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

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

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

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

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

SQL-99: Esquema de BD EMPRESA

BCD29008 Banco de dados

{... ou CTRL+O } João Muranho Pág. 1

Revisão de Bancos de Dados

Stored Procedures e Triggers

Bases de Dados. DML Data Manipulation Language Parte 3

BANCO DE DADOS PARA WEB

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

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Marcelo Henrique dos Santos

Licenciatura em Informática

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

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

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 )

Linguagem SQL - Structured Query Language

Tarefa Orientada 17 Scripts

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

Planificação Anual. Departamento Expressões e Tecnologias

Banco de Dados I 5 Linguagens de Consulta

SQL DML. Frederico D. Bortoloti

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

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

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

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

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Gerenciamento de Dados e Informação

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

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

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

SQL. Índices, views e restrições. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Rápida revisão do Modelo Relacional

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

Banco de Dados I. Aula 17 - Prof. Bruno Moreno 08/11/2011

SQL - Consultas

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

Consultas SQL. Andre Noel

Linguagem de Consulta - SQL

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

Revisão + Visões + Sub-Consultas + JOINS

Prof. Josenildo Silva

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

Triggers(Gatilhos) Tiago Alves de Oliveira

Marcelo Henrique dos Santos

Ordenação de tuplos order by

Roteiro. SQL: Visões. Suporte de SQL para OLAP SELECT. Detalhando GROUP BY SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Consultas Avançadas Visões

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina

Subsistema de Integridade Semântica

Fundamentos de Banco de Dados Postgre com Sql

ANÁLISE E PROJETO DE BANCO DE DADOS

Prova de Tecnologia da Informação

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

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

Prof. Fabiano Taguchi

Subsistema de Integridade Semântica

Linguagem SQL - Structured Query Language

Banco de Dados I Introdução SQL

Introdução ao PostgreSQL

SQL CREATE MATERIALIZED VIEW. Processamento Analítico de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. OLAP: Modelagem Multidimensional

BANCO DE DADOS TRIGGERS (GATILHOS) Prof. Fabiano Papaiz IFRN

Restrições ao Domínio Integridade Referencial Asserções Triggers Segurança e Autorizações

Múltiplas Tabelas. Disciplina de Banco de Dados

Bases de Dados 2005/2006. Aula 5

25/06/2017. SQL - Structured Query Language Linguagem de Consulta Estruturada

Linguagem SQL - Structured Query Language

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

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

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

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

Visão & Visão Materializada. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Definida pelo American National Standard Institute (ANSI) em 1986

Bases de Dados. Parte V: A Linguagem SQL. Parte V

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

Conceitos. Gestão de Transacções. Transacção. Conceitos e Propriedades. Controlo de Concorrência. Recuperação. Transacções no SGBD Oracle

DML - SELECT Agrupando Dados

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

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. Professora: Luciana Faria

A linguagem SQL

14/9/2009. Banco de Dados

Fundamentos de Bases de Dados e-fólio B Resolução e Critérios de Correção

Proposto em 1970 por Codd, como uma forma mais fácil de armazenar e

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:

Caderno de Introdução Bases Dados

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

Avisos. SQL: Visões. Roteiro SELECT. Suporte de SQL para OLAP SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Cronograma das próximas aulas

LISTA DE EXERCÍCIOS TEORIA DE BANCO DE DADOS

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

Transcrição:

BASES DE DADOS I LTSI/2 Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

SQL-DDL (Vistas) Vistas Ao contrário das tabelas, que são entidades onde os dados estão realmente (fisicamente) armazenados, as views sáo, como o próprio nome indica, perspectivas de parcelas da base de dados, reflectindo o seu conteúdo apenas o estado momentâneo de cada uma das tabelas fonte de informação. C D c 1 d 1 c 2 d 2 Existência lógica A C D a 1 c 1 d 1 a 2 c 2 d 2 CREATE VIEW AS... c 3 d 3 c 4 d 4 A B C a 1 b 1 c 1 a 2 b 2 c 2

SQL-DDL (Vistas) Criação de Vistas CREATE VIEW <nome_vista> AS SELECT... <nome_vista> Nome pelo qual a vista será referenciada. Exemplo: CREATE VIEW Vista_Nova AS SELECT A.Numero, A.Nome, D.Descricao FROM Aluno A, Inscricao I, Disciplina D WHERE A.CodAluno=I.CodAluno AND I.CodDisciplina=D.CodDisciplina;

Vistas Vistas A definição de cada vista é armazenada no dicionário de dados e o seu conteúdo calculado sempre que esta se encontrar referida nalgum bloco SQL. Para o nível aplicacional esta é uma operação completamente transparente, uma vez que uma vista se comporta perante o comando SELECT exactamente como uma tabela. SELECT Numero, Nome FROM Vista_Nova WHERE Numero > 100;

Vistas Vistas Algumas das vantagens tipicamente associadas à utilização de vistas serão: Restringir o acesso à base de dados, mostrando (filtrando) apenas parte dos dados. Simplificar a consulta dos dados, substituindo consultas complexas (sobre várias tabelas) por consultas directas a uma vista. Permitir que os mesmos dados sejam visualizados de diferentes formas por diferentes utilizadores. Por não possuírem existência física, sobre vistas apenas se podem realizar operações de consulta de informação. (De facto, é também possível alterar informação através de vistas, mas não tal não constitui objectivo deste curso.

Vistas Vistas Podemos encarar as vistas como selecções de informação pré-definidas e potencialmente residentes em memória no SGBD, por forma a optimizar consultas bastante frequentes e / ou computacionalmente bastante exigentes. A sua utilização torna-se imprescindível, especialmente em projectos de maior dimensão e em situações onde o tempo de resposta constitui um factor importante.

SQL-DDL (Vistas) Eliminação de Vistas DROP VIEW <nome_vista> <nome_vista> Nome pelo qual a vista será referenciada. Exemplo: DROP VIEW Nova_Vista;

Eventos (Triggers) Evento (Trigger) Num SGBD, um trigger é um procedimento SQL que inicia uma acção, ao ocorrer determinado evento (Inserção, alteração ou remoção) São guardados e administrados directamente pelo SGBD, pelo que não é possível efectuar a sua chamada ou pedido de execução. Cabe ao SGBD a execução automática do trigger, sempre que o evento que lhe está associado ocorrer.

Eventos (Triggers) Evento (Trigger) São utilizados para manter a consistência (integridade referencial) dos dados. Cada trigger está associado a uma tabela da base de dados. A acção provocada pela execução de um trigger pode por sua vez desencadear eventos que levam à execução de outros. Desta forma é possível a execução sequencial de múltiplos triggers em múltiplas relações.

Eventos (Triggers) Evento (Trigger) - Criação CREATE TRIGGER <nome_trigger> ON <tabela> FOR <acção> AS <BLOCO_SQL> <nome_trigger> Identificador do trigger <tabela> Relação que gera o evento que permite a execução do trigger. <acção> {INSERT UPDATE DELETE} <BLOCO_SQL> Código sql executado após a ocorrência do evento.

Eventos (Triggers) Evento (Trigger) - Exemplo CREATE trigger Tg_actualiza_dir_data on directorio FOR insert AS insert into directorio_update (directorio_id,update_date) select max(directorio_id) as directorio_id, date() from directorio; Serve para actualizar o contéudo de uma relação directorio_update sempre que for inserida uma nova instancia na relação directorio

Eventos (Triggers) Evento (Trigger) - Exemplo Para eliminar um trigger, o procedimento é o seguinte: DROP trigger <nome_trigger> ON <nome_tabela> <nome_trigger> Identificador do trigger. <nome_tabela> Nome da tabela sobre a qual o trigger foi definido.

Tendo o seguinte esquema de relações: Departamento(CodDepartamento, Nome, Piso, CodChefe(*)) Empregado(CodEmpregado, Nome, Salario, CodSuperior, Departamento(*)) Venda(Departamento(*), CodProduto(*), Data, Quantidade) Produto(CodProduto, Descricao, Valor)

Listar o nome de todos os empregados, ordenados alfabeticamente. SELECT Nome FROM Empregado ORDER BY Nome;

Determinar o total de salários que a empresa paga por mês. SELECT Sum(Salario) AS Total FROM Empregado;

Determinar os produtos que nunca foram vendidos. SELECT CodProduto, Descricao FROM Produto WHERE CodProduto NOT IN( SELECT CodProduto FROM Venda);

Qual a soma dos salários dos empregados que trabalham no segundo piso? SELECT SUM(E.Salario) AS Total FROM Empregado E, Departamento D WHERE E.Departamento=D.CodDepartamento AND D.Piso=2;

Determinar o nome dos funcionários que têm como chefe o João Armando SELECT Nome FROM Empregado WHERE Departamento IN( SELECT D.CodDepartamento FROM Departamento D, Empregado E WHERE D.CodChefe=E.CodEmpregado AND E.Nome= João Armando );

Determinar os produtos que foram vendidos em pelo menos 2 departamentos. SELECT DISTINCT P.CodProduto, P.Descricao FROM Produto P, Venda V WHERE P.CodProduto=V.CodProduto GROUP BY P.CodProduto, P.Descricao HAVING COUNT (DISTINCT CodDepartamento)>=2;

Determinar os produtos que foram vendidos em todos os pisos. SELECT DISTINCT P.CodProduto, P.Descricao FROM Produto P, Venda V, Departamento D WHERE P.CodProduto=V.CodProduto AND D.CodDepartamento=V.Departmento GROUP BY P.CodProduto, P.Descricao HAVING COUNT (DISTINCT Piso)= (SELECT COUNT (DISTINCT Piso) FROM Departamento);

Determinar os produtos que foram vendidos exclusivamente pelo departamento de Criança SELECT DISTINCT P.CodProduto, P.Descricao FROM Produto P, Venda V, Departamento D WHERE P.CodProduto=V.CodProduto AND V.Departamento=D.CodDepartamento AND D.Nome= Criança AND P.CodProduto NOT IN ( SELECT P.CodProduto FROM Produto P, Venda V, Departamento D WHERE P.CodProduto=V.CodProduto AND V.Departamento=D.CodDepartamento AND D.Nome<> Criança )

Qual a soma dos salários dos empregados que trabalham em departamentos com menos de 10 funcionários. SELECT SUM(E0.Salario) AS TOTAL FROM Empregado E0 WHERE Departamento IN (SELECT D.CodDepartamento FROM Departamento D, Empregado E WHERE D.CodDepartamento=E.Departamento GROUP BY CodDepartamento HAVING COUNT(*)<10);

Em que departamentos todos os empregados ganham menos que o respectivo patrão? SELECT D.Nome FROM Departamento D, Empregado E0 WHERE D.CodDepartamento=E0.Departamento GROUP BY D.Nome HAVING COUNT(*)=( SELECT COUNT(*) FROM Empregado E1, Departamento D1 WHERE E1.Departamento=D1.CodDepartamento AND E1.Departamento=E0.Departamento AND E1.salario< ( SELECT Salario FROM Empregado E2 WHERE E2.CodEmpregado=D1.CodChefe));

Quais os departamentos em que todos os empregados ganham menos que o chefe pior remunerado da empresa. SELECT D.Nome FROM Departamento D, Empregado E0 WHERE D.CodDepartamento=E0.Departamento GROUP BY D.Nome HAVING COUNT(*)=( SELECT COUNT(*) FROM Empregado E1, Departamento D1 WHERE E1.Departamento=D1.CodDepartamento AND E1.Departamento=E0.Departamento AND E1.salario< ( SELECT Min(Salario) FROM Empregado E2, Departamento D2 WHERE E2.CodEmpregado=D2.CodChefe));

THE END