SQL-99: Esquema de BD EMPRESA

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

SQL-99: Definição de esquema, restrições básicas e consultas

A Linguagem SQL. Introdução a Banco de Dados DCC 011

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

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

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

SQL (Tópicos) Structured Query Language

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

ANÁLISE E PROJETO DE BANCO DE DADOS

Banco de Dados I. Aula 14 - Prof. Bruno Moreno 11/10/2011

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 DML. Frederico D. Bortoloti

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

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

IMPLEMENTAÇÃO DE BANCO DE DADOS

Rápida revisão do Modelo Relacional

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

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

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

A Linguagem SQL. Introdução a Banco de Dados DCC 011

Introdução ao SQL. Aécio Costa

Manipulação de Dados com SQL

ALGEBRA RELACIONAL. Álgebra Relacional Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

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

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>

BCD29008 Banco de dados

Comandos de Manipulação

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

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

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:

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 PostgreSQL. I Criação de Tabelas. Disciplina: Banco de Dados e suas Aplicações Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Linguagem SQL Comando SELECT Agrupamento de Resultados

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

Introdução ao PostgreSQL

Linguagem de Consulta Estruturada SQL- DML

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

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

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

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

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai

Banco de Dados I Introdução SQL

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

Principais Conceitos. Modelo Relacional representa o banco de dados como uma coleção de relações Tupla Atributos Relação Domínio

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

Restrições do modelo relacional

Linguagem de Consulta - SQL

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

Revisão de Bancos de Dados

SQL Básica. Andre Noel

Álgebra Relacional e SQL

Projeto de Banco de Dados

Bancos (Bases) de Dados

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

Sintaxe do comando SELECT

Prova de Tecnologia da Informação

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

Teste Exemplo Revisão da tentativa 1

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

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

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

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

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

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

Banco de Dados. Prof. Antonio

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

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

SQL. Prof. Roger Cristhian Gomes

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

GBC043 - Sistemas de Banco de Dados SQL/DML no PostgreSQL. Ilmério Reis da Silva ilmerio@facom.ufu.br UFU/FACOM/BCC

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

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

SQL. Prof. Márcio Bueno.

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

Definida pelo American National Standard Institute (ANSI) em 1986

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

Ordenação de tuplos order by

Conceitos SQL SQL 19/03/2017 O que é dado? O que é BD? O que é uma informação? O que é SGBD? O que é SQL? O que é BD? O que é SGBD?

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

Transcrição:

SQL-99: Esquema de BD EMPRESA SQL-99: Instâncias do esquema EMPRESA 1

Consultas externa, aninhada e correlacionada para cada tupla da consulta externa, a consulta aninhada devolve o atributo solicitado Em geral uma consulta aninhada e que usa os operadores de comparação = ou IN poderá sempre ser expressa como um bloco único de consulta c) SELECT E.PNOME, E.UNOME FROM EMPREGADO AS E WHERE E.SSN IN (SELECT ESSN FROM DEPENDENTE WHERE E.PNOME=NOME_DEPENDENTE AND E.SEXO=SEXO); c) SELECT E.PNOME, E.UNOME FROM EMPREGADO AS E, DEPENDENTE AS D WHERE E.SSN = D.ESSN AND E.SEXO=D.SEXO AND E.PNOME=P.NOME_DEPENDENTE; A função EXISTS é usada para verificar se o resultado de uma consulta aninhada correlacionada é vazio (não contém nenhuma tupla) ou não em geral, EXISTS (Q) devolve true se existir ao menos uma tupla no resultado da consulta aninhada Q, caso contrário, devolverá false NOT EXISTS (Q) devolverá true se não existir nenhuma tupla no resultado da consulta aninhada Q, caso contrário, devolverá false opção para a consulta anterior usando EXISTS 1) SELECT E.PNOME, E.UNOME FROM EMPREGADO AS E WHERE EXISTS (SELECT * FROM DEPENDENTE WHERE E.SSN = ESSN AND E.SEXO=SEXO AND E.PNOME=NOME_DEPEDENTE); para cada tupla EMPREGADO, a consulta aninhada avalia devolvendo todas as tuplas de DEPENDENTE com o mesmo número de seguro social, sexo e nome da tupla EMPREGADO 2

Relacione os nomes dos gerentes que possuam ao menos um dependente 2) SELECT PNOME, UNOME FROM EMPREGADO WHERE EXISTS (SELECT * FROM DEPENDENTE WHERE SSN = ESSN AND EXISTS (SELECT * FROM DEPARTAMENTO WHERE SSN=GERSSN); tem-se duas consultas aninhadas e correlacionadas a primeira seleciona todas as tuplas de DEPENDENTE relacionadas a EMPREGADO e a segunda seleciona todas as tuplas de DEPARTAMENTO gerenciadas por um EMPREGADO se ao menos uma da primeira e uma da segunda existirem, seleciona-se a tupla de EMPREGADO É possível usar um conjunto de valores explícitos na cláusula WHERE em vez de consultas aninhadas esse conjunto é colocado entre parênteses recupere os números dos seguros sociais de todos os empregados que trabalham nos projetos 1, 2 ou 3: 3) SELECT DISTINCT ESSN FROM TRABALHA_EM WHERE PNO IN (1, 2, 3); O conceito de junção de tabelas foi incorporado para que os usuários pudessem especificar uma tabela que fosse resultado da aplicação da operação de junção na cláusula FROM de uma consulta (por exemplo, junção natural) recupere o nome e o endereço de todos os empregados que trabalham no departamento Pesquisa : 4) SELECT PNOME, UNOME ENDERECO FROM (EMPREGADO JOIN DEPARTAMENTO ON DNO=DNUMERO) WHERE DNOME= Pesquisa ; 3

Há diversas funções pré-construídas para diversas aplicações em BD: COUNT, SUM, MAX, MIN, AVG COUNT: devolve o número de tuplas ou valores especificado em uma consulta SUM, MAX, MIN, AVG: são aplicadas em um conjunto de valores e devolvem, respectivamente, a soma, o valor máximo, o valor mínimo e a média desses valores MAX e MIN podem ser usadas com atributos que não tenham domínios numéricos desde que esses domínios tenham uma ordenação total entre eles encontre a soma dos salários, o maior salário, o menor salário e a média salarial de todos os empregados 5) SELECT SUM (SALARIO), MAX (SALARIO), MIN (SALARIO, AVG (SALARIO) FROM EMPREGADO; COUNT (*) o * se refere às linhas, logo count(*) devolverá o número de linhas Recupere o número total de empregados da empresa 6) SELECT COUNT (*) FROM EMPREGADO; Recupere o número de empregados do departamento Pesquisa 7) SELECT COUNT (*) FROM EMPREGADO, DEPARTAMENTO WHERE DNO=DNUMERO AND DNOME= Pesquisa ; COUNT para contar o número de valores em uma coluna em vez de tuplas Conte o número dos diferentes valores de salário contidos no BD 8) SELECT COUNT (DISTINCT SALARIO) FROM EMPREGADO; 4

Para COUNT (SALARIO), os valores repetidos não serão eliminados tuplas com null não são contabilizadas Os valores NULL são descartados quando se aplicam as funções agregadas em um atributo em particular Pode-se especificar uma consulta aninhada correlacionada com funções agregadas Recupere os nomes de todos os empregados que têm dois ou mais dependentes 9) SELECT PNOME, UNOME FROM EMPREGADO WHERE (SELECT COUNT(*) FROM DEPENDENTE WHERE SSN=ESSN) >= 2; a tupla aninhada correlacionada conta o número de dependentes que cada um dos empregados tem; se esse número for maior ou igual a dois, a tupla desse empregado será selecionada Cláusula GROUP BY em alguns casos, precisa-se aplicar as funções agregadas para alguns subgrupos de tuplas e não para a totalidade das tuplas em conjunto exemplo: quando precisa-se encontrar a média de salário dos empregados de cada departamento ou dos empregados que trabalham em cada projeto na cláusula SELECT aparece o(s) atributo(s) de agrupamento e as funções que serão aplicadas em cada grupo de atributos, quando for o caso para cada departamento, recupere seu número, o número de empregados que nele trabalham e a média de seus salários Q24) SELECT DNO, COUNT (*), AVG (SALARIO) FROM EMPREGADO GROUP BY DNO; se houver NULL no atributo de agrupamento, um grupo separado será criado para as tuplas com valores NULL nesse atributo 5

Cláusula HAVING proporciona a aplicação de uma condição para o grupo de tuplas associado a cada valor dos atributos de agrupamento para cada projeto em que trabalhem mais de dois empregados, recupere o número do projeto, seu nome e o número de empregados Q26) SELECT PNUMERO, PJNOME, COUNT (*) FROM PROJETO, TRABALHA_EM WHERE PNUMERO=PNO GROUP BY PNUMERO HAVING COUNT(*) > 2; a cláusula WHERE limita as tuplas e a cláusula HAVING escolhe grupos 6

INSERT (inserção), DELETE (exclusão) e UPDATE (atualização) INSERT usado para adicionar uma única tupla em uma relação estabelece-se o nome da relação e uma lista de valores para a tupla devem ser relacionados na mesma ordem em que foram especificados os atributos no comando CREATE TABLE para se adicionar uma nova tupla à relação EMPREGADO: INSERT INTO EMPREGADO VALUES ( Richard, K, Marini, 653298653, 1962-12-30, 98 Oak Forest, Katy, TX, M, 37000, 987654321, 4); INSERT outra forma do comando INSERT: INSERT INTO EMPREGADO (PNOME, UNOME, DNO, SSN) VALUES ( Richard, Marini, 4, 653298653 ); os atributos que não foram especificados serão registrados com seus valores DEFAULT ou NULL os comandos são rejeitados se o SGBD implementa a integridade referencial e a integridade de entidade: INSERT INTO EMPREGADO (PNOME, UNOME, DNO, SSN) VALUES ( Robert, Hatcher, 2, 980760540 ); não existe DEPARTAMENTO com DNUMERO=2 INSERT INTO EMPREGADO (PNOME, UNOME, DNO) VALUES ( Richard, Hatcher, 5); o valor do SSN não foi informado e ele foi declarado como NOT NULL 7

DELETE remove tuplas de uma relação DELETE FROM EMPREGADO; as tuplas serão removidas de uma única tabela de cada vez, entretanto, as remoções podem propagar-se nas tuplas de outras relações, se forem definidas ações engatilhadas se foi incluída a cláusula WHERE, serão selecionadas as tuplas que serão deletadas DELETE FROM EMPREGADO WHERE UNOME= Brown ; DELETE FROM EMPREGADO WHERE DNO IN (SELECT DNUMERO FROM DEPARTAMENTO WHERE DNOME= Pesquisa ); UPDATE modifica os valores dos atributos de uma ou mais tuplas a cláusula WHERE seleciona as tuplas de uma única relação que serão modificadas, entretanto, uma atualização no valor da chave primária pode propagar-se para os valores das chaves estrangeiras, nas tuplas de outras relações, se essa ação engatilhada for especificada uma cláusula adicional SET, dentro do comando UPDATE, especifica os atributos que serão modificados e seus novos valores UPDATE PROJETO SET PLOCALIZACAO= Bellaire, DNUM = 5 WHERE PNUMERO=10; altera a localização e o número do departamento do projeto de número 10 8

UPDATE dar um aumento de salário de 10% a todos os empregados do departamento Pesquisa UPDATE EMPREGADO SET SALARIO=SALARIO*1.1 WHERE DNO IN (SELECT DNUMERO FROM DEPARTAMENTO WHERE DNOME= Pesquisa ); Próximo capítulo: mais SQL... asserções e visões... 9