105
SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura de dados Modificação de dados no BD Especificação de restrições de segurança

SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Embed Size (px)

Citation preview

Page 1: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD,

possui muitos outros recursos como: Definição da estrutura de dados Modificação de dados no BD Especificação de restrições de segurança

Page 2: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Linguagens de consulta SQL

Combina álgebra relacional e cálculo relacional

QBE (Query-by-Example) Baseada no cálculo relacional de domínio

QUEL Baseada no cálculo relacional de tuplas

Page 3: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

SQL

Versão original desenvolvida pela IBM, no início da década de 1970

Originalmente denominada Sequel Structured English Query Language Linguagem de Consulta Estruturada em Inglês

Page 4: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

SQL Em 1986, o ANSI (American National

Standards Institute) e a ISO (International Organization for Standardization) publicaram um padrão SQL, chamado SQL-86

Em 1989, o ANSI publicou um padrão estendido chamado SQL-89

Depois foi a SQL-92, seguida da SQL:1999 A versão mais recente é a SQL:2003.

Page 5: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

SQL É composta de:

Linguagem de definição de dados (DDL) Linguagem de manipulação de dados

(DML) Integridade Definição de visões (view) Controle de transação SQL embutida e SQL dinâmica Autorização

Page 6: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Tipos de Domínio Básicos em SQL

O padrão SQL aceita vários tipos de domínio internos, incluindo: char(n) ou character(n) – cadeia de caracteres de

tamanho fixo com tamanho n especificado pelo usuário

varchar(n) ou character varying(n) – cadeia de caracteres de tamanho variável com tamanho n máximo definido pelo usuário

int ou integer – subconjunto finito dos inteiros dependente da máquina

smallint – inteiro pequeno Subconjunto dos inteiros que depende

do equipamento

Page 7: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

numeric(p,d) – número de ponto fixo, cuja precisão é definida pelo usuário onde p é a quantidade de dígitos do

número e d é o número de casas decimais Exemplo:

numeric(3,1) permite 44,5 não permite 444,5 não permite 0,32

Tipos de Domínio Básicos em SQL

Page 8: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

real - número de ponto flutuante, cuja precisão depende do equipamento

double precision – número de ponto flutuante de precisão dupla, cuja precisão depende do equipamento

float(n) – número de ponto flutuante, com precisão definida pelo usuário em pelo menos n dígitos

Tipos de Domínio Básicos em SQL

Page 9: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

date – data contendo ano com quatro dígitos, mês e dia do mês

time – horário em horas, minutos e segundos Obs.: a SQL permite que a declaração de

domínio de um atributo seja especificada como NOT NULL

A SQL92 permite a definição de domínios usando a cláusula create domain

Exemplo: create domain nome_pessoa char(20)

Tipos de Dados Internos na SQL

Page 10: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Definição de Esquema em SQL

Uma relação SQL é definida pelo comando create table:

create table r (A1D1, ..., AnDn,<regras de integridade1>, ...,<regras de integridadek>)

Onde: r: nome da relação Ai: nome do atributo Di: tipo de domínio

Page 11: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Definição de Esquema em SQL

As regras de integridade, permitidas pelo comando create table, englobam: primary key (Aj1, Aj2, ..., Ajm)

diz que os atributos Aj1, Aj2, ..., Ajm formam a chave primária da relação

check (P) especifica um predicado P que precisa ser

satisfeito por todas as tuplas em uma relação

Page 12: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Definição de Esquema em SQL

A cláusula UNIQUE define as chaves alternativas (secundárias) [2]

UNIQUE (atributo_nome)

Page 13: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exemplo de Definição de Esquema em SQL

create table cliente (cliente_nome char(30), ou cliente_nome char(30) primary key , cliente_rg char(12) not null,cliente_rua char(30),primary key (cliente_nome))

create table agencia (agencia_nome char(20),agencia_cidade char(20),ativo numeric(16,2),primary key (agencia_nome),check (ativo >= 0))

Obs.: Os atributos declarados como chave primária são necessariamente not null e unique

Page 14: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exemplo de Definição de Esquema em SQL – Cont.

create table conta (conta_numero char(5),agencia_nome char(20), saldo numeric(12,2),primary key (conta_numero),check (saldo >= 0))

create table depositante (cliente_nome char(30),conta_numero char(5),primary key (cliente_nome, conta_numero))

Page 15: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exemplo de Definição de Esquema em SQL – Cont.

create table emprestimo (emprestimo_numero char(4), agencia_nome char(20),quantia numeric(12,2),primary key (emprestimo_numero))

create table devedor (cliente_nome char(30),emprestimo_numero char(4),primary key (cliente_nome, emprestimo_numero))

Page 16: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Outros Comandos Drop table – remove todas as tuplas e

o esquema de uma relação Drop table r Exemplo: drop table devedor

Delete from - remove todas as tuplas de uma relação delete from r Exemplo: delete from devedor

Page 17: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Outros Comandos Alter table – adiciona atributos a uma

relação existente Alter table r add A D

r é o nome de uma relação existente A é o nome do atributo a ser acrescentado e D é o domínio do atributo acrescentado

Exemplo: Alter table conta add conta_codigo int

Page 18: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Outros Comandos Alter table r drop A – remove atributos

de uma relação Alter table r drop A

r é o nome de uma relação existente A é o nome de um atributo da relação

Exemplo: Alter table conta drop conta_codigo

Page 19: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Outros Comandos Alter table r

add column nacionalidade char(15) comando para adicionar o atributo

nacionalidade à uma relação Exemplo:

Alter table cliente add column nacionalidade char(15) drop column nacionalidade

comando para eliminar o atributo nacionalidade de uma relação

Exemplo: Alter table cliente drop column nacionalidade

Page 20: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exemplo de Definição de Esquema em SQL – Cont.

Exercício 1): Adicionar os seguintes campos a tabela

cliente cliente_rua_numero smallint cliente_bairro char(20) cliente_cidade char(20) cliente_estado char(2)

Page 21: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção de Dadosinsert into cliente values('ademar','31-326-028-3','rua jorge winter',

11,'centro','taubate','sp');insert into cliente values('andre','32-326-028-3','rua jaques felix',

12,'centro','taubate','sp'); insert into cliente values('bruna','33-326-028-3','av. getulio vargas',

13,'centro','pindamonhangaba','sp');insert into cliente values('carlos','34-326-028-3','rua general cana barros',

14,'centro','caçapava','sp'); insert into cliente values('glenda','35-326-028-3','av. ademar de barros', 15,'centro','sao

jose dos campos','sp');insert into cliente values('helena','36-326-028-3', 'av. presidente dutra',

16,'centro','guaratingueta','sp'); insert into cliente values('joana','37-326-028-3','rua barao de mesquita', 17,'centro','rio de

janeiro','rj');insert into cliente values('joao','38-326-028-3','av. presidente dutra',

18,'centro','guaratingueta','sp'); insert into cliente values('liliane','39-326-028-3','rua jorge winter',

19,'centro','taubate','sp'); insert into cliente values('silvio','40-326-028-3','rua general cana barros',

20,'centro','caçapava','sp');insert into cliente values('tiago','41-326-028-3','av. voluntarios da patria',

21,'centro','mairipora','sp'); insert into cliente values('vivian','42-326-028-3','av. voluntarios da patria',

22,'centro','mairipora','sp'); insert into cliente values('william','43-326-028-3','av. paulista', 23,'centro','sao paulo','sp');

Page 22: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção de Dadosinsert into agencia values('caçapava','caçapava',16000000); insert into agencia values('central', 'guaratingueta',8300000);insert into agencia values('centro', 'mairipora',15000000);insert into agencia values('cta','sao jose dos campos',24000000);insert into agencia values('independencia',

'guaratingueta',47000000);insert into agencia values('justiça federal','sao jose dos

campos',52000000);insert into agencia values('monte castelo','taubate',4000000);insert into agencia values('monteiro lobato','taubate',9000000);insert into agencia values('silva barros',

'guaratingueta',68000000);

Page 23: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção de Dados

insert into conta values('a-306', 'caçapava',500);insert into conta values('a-305', 'centro',350);insert into conta values('a-222', 'centro', 700);insert into conta values('a-101', 'cta', 500);insert into conta values('a-217', 'cta', 750);insert into conta values('a-201', 'justiça federal',

900);insert into conta values('a-215', 'monteiro lobato',

700);insert into conta values('a-102', 'monteiro lobato',

400);

Page 24: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção de Dadosinsert into emprestimo values('l-17', 'caçapava', 750);insert into emprestimo values('l-93', 'central', 500);insert into emprestimo values('l-16', 'centro', 3000);insert into emprestimo values('l-15', 'independencia', 1500);insert into emprestimo values('l-23', 'justiça federal', 2000);insert into emprestimo values('l-14', 'monteiro lobato', 1500);insert into emprestimo values('l-11', 'silva barros', 900);

Page 25: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção de Dadosinsert into devedor (cliente_nome, emprestimo_numero)values('ademar', 'l-16');insert into devedor (cliente_nome, emprestimo_numero)values('carlos', 'l-93');insert into devedor (cliente_nome, emprestimo_numero)values('helena', 'l-15');insert into devedor (cliente_nome, emprestimo_numero)values('joana', 'l-14');insert into devedor (cliente_nome, emprestimo_numero)values('joao', 'l-17');insert into devedor (cliente_nome, emprestimo_numero)values('silvio', 'l-11');insert into devedor (cliente_nome, emprestimo_numero)values('silvio', 'l-23');insert into devedor (cliente_nome, emprestimo_numero)values('william', 'l-17');

Page 26: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exemplo de Definição de Esquema em SQL – Cont.

Exercício 2): Inserir os seguintes dados na tabela depositante (com

letras minúsculas e sem acento)

Page 27: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

SQL A estrutura básica de uma expressão

em SQL é composta de três cláusulas: Select

Corresponde à operação de PROJEÇÃO da álgebra relacional

From Corresponde à operação de produto

cartesiano da álgebra relacional Where

Corresponde à seleção do predicado da álgebra relacional

Page 28: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

SQL A SQL forma o produto cartesiano das

relações nomeadas na cláusula fromfrom Realiza uma seleção de álgebra

relacional usando o predicado da cláusula wherewhere

Depois, projeta o resultado nos atributos da cláusula selectselect

O resultado de uma consulta SQL é uma relação

Page 29: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre as cidades de residência dos clientes do banco select cliente_cidade from cliente; (omissão de where predicado

é TRUE)

Encontre as cidades de residência dos clientes do banco, eliminando duplicidades select distinct cliente_cidade from cliente; 

Cláusula select

Page 30: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exercício 3):a) Encontre os nomes de todas as agências

da relação empréstimob) Encontre os nomes de todas as agências

da relação empréstimo, eliminando duplicidades

c) Encontre os nomes de todas as agências da relação empréstimo, especificando explicitamente que as duplicidades não serão eliminadas

Cláusula select

Page 31: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula select Encontre as cidades de residência dos

clientes do banco, especificando explicitamente que as duplicidades não serão eliminadas select all cliente_cidade from cliente;

Multiplicar as quantias da relação empréstimo por 100 select agencia_nome, emprestimo_numero,

quantia*100 from emprestimo;

Page 32: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula where Encontre todos os números de

empréstimos feitos na agencia “Monteiro Lobato” com quantia acima de R$1200 select emprestimo_numero from emprestimo where agencia_nome= 'monteiro lobato' and

quantia>1200;

Page 33: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula where Encontrar os números de empréstimo

cujas quantias estejam entre R$500 e R$1000 inclusive select emprestimo_numero from emprestimo where quantia between 500 and 1000;

Page 34: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula where Exercício 4)

Encontrar os números de empréstimo cujas quantias estejam entre R$500 e R$1000 inclusive, sem utilizar a palavra between;

Page 35: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula from A clausula fromfrom isolada define um

produto cartesiano das relações na cláusula

Já que a junção natural é definida em termos de um produto cartesiano, uma seleção e uma projeção, é simples escrever uma expressão para a junção natural

Page 36: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula from Encontre os nomes, números de

empréstimo e quantia de todos os clientes que tenham um empréstimo no banco select cliente_nome,

devedor.emprestimo_numero, quantia from devedor, emprestimo where

devedor.emprestimo_numero=emprestimo.emprestimo_numero;

Page 37: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula from Exercício 5)

Encontre os nomes, números de conta e saldo de todos os clientes que tenham uma conta no banco

Page 38: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Cláusula from Encontre os nomes e os números de

empréstimo de todos os clientes que tenham um empréstimo na agencia “independencia” select cliente_nome,

devedor.emprestimo_numero, quantia from devedor, emprestimo where devedor.emprestimo_numero =

emprestimo.emprestimo_numero and agencia_nome = 'independencia';

Page 39: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação de Renomeação Encontre os nomes e os números de

empréstimo de todos os clientes que tenham um empréstimo na agência “independencia”, substituindo o atributo emprestimo_numero por emprestimo_id select cliente_nome, devedor.emprestimo_numero

as emprestimo_id, quantia from devedor, emprestimo where devedor.emprestimo_numero =

emprestimo.emprestimo_numero and agencia_nome = 'independencia';

•AS não é opcional

•Não funciona substituir os campos emprestimo_numero, por emprestimo_id

Page 40: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação de Renomeação Exercício 6)

Encontre os nomes e os números de conta de todos os clientes que tenham uma conta na agência “cta”, substituindo o atributo conta_numero por conta_id

Page 41: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Variáveis Tuplas Para todos os clientes que possuem

um empréstimo, encontre seus nomes e respectivos números de empréstimo e quantias, atribuindo a variável d à relação devedor e a variável e à relação empréstimo select distinct cliente_nome,

d.emprestimo_numero, quantia from devedor as d, emprestimo as e where d.emprestimo_numero =

e.emprestimo_numero; 

a palavra chave AS é

opcional

Page 42: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Variáveis Tuplas Exercício 7)

Para todos os clientes que possuem uma conta, encontre seus nomes e respectivos números de conta e saldo , atribuindo a variável d à relação depositante e a variável c à relação conta

 

Page 43: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Variáveis Tuplas Encontre os nomes das

agências que tenham ativo maiores que ao menos uma agência localizada em taubate select distinct a.agencia_nome from agencia a, agencia g where a.ativo>g.ativo and

g.agencia_cidade='taubate';a palavra

chave AS é opcional

Page 44: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Variáveis Tuplas Exercício 8):

Encontre os nomes e as cidades das agências que tenham ativo maiores que ao menos uma agência localizada em taubate. Observe que não devem constar no resultado da consulta as agências de taubate.

• DIFERENTE: <> ou !=

Page 45: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações com strings Encontre os nomes de agências que

comecem pela letra c select agencia_nome from agencia where agencia_nome like 'c%';Obs: no access usa-se *.

Encontre os nomes de agências que possuam a substring “ça” em seus nomes select agencia_nome from agencia where agencia_nome like '%ça%';

Page 46: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações com strings Encontre os nomes de agências

que não comecem pela letra c select agencia_nome from agencia where agencia_nome not like 'c%';

Page 47: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações com strings Encontre os nomes de agências

que comecem com ”Monte” concatenado com outro substring select agencia_nome from agencia where agencia_nome like 'monte'||'%';

Page 48: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações com strings A SQL:1999 também oferece a

operação similar tosimilar to, que fornece uma correspondência de padrões mais poderosa do que a operação likelike

Encontre os nomes de agências que possuam o caracter “ç” ou “c” em seus nomes select agencia_nome from agencia where agencia_nome similar to '%(ç|c)%';

Page 49: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações com strings Exercício 9)

Encontre os nomes de agências que iniciem com o caracter “c” ou “m”

Page 50: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações com strings Encontre a cidade onde está

localizada a agência ”Centro” select agencia_nome, agencia_cidade from agencia where agencia_nome = lower('CENTRO');

Page 51: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Ordenação Inserir os seguintes valores na relação

empréstimo e na relação devedor: insert into emprestimo values('l-18','monteiro

lobato',1000); insert into emprestimo values('l-19','monteiro

lobato',1000); insert into emprestimo values('l-20','monteiro

lobato',1000);

insert into devedor values('carlos','l-18'); insert into devedor values('maria cecilia','l-19'); insert into devedor values('hedvandro','l-20');

Page 52: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Ordenação Classificar em ordem alfabética os

nomes de todos os clientes que tenham um empréstimo na agência “Monteiro Lobato” select cliente_nome from devedor, emprestimo where

devedor.emprestimo_numero=emprestimo.emprestimo_numero and agencia_nome= lower('MONTEIRO LOBATO')

order by cliente_nome;

Page 53: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Ordenação Exercício 10)

Classificar em ordem alfabética os nomes de todos os clientes que tenham uma conta na agência “CENTRO”

Page 54: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Ordenação Listar a relação empréstimo inteira em

ordem decrescente de quantia. Se empréstimos possuírem quantias iguais, organizar os números de empréstimo em ordem ascendente select * from emprestimo order by quantia desc,

emprestimo_numero asc;

Page 55: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operações de Conjunto As operações SQL union, intersect e

except operam em relações e correspondem às operações da álgebra relacional , e -

Como na Álgebra relacional, as relações participantes da operação de união, interseção e diferença precisam ser compatíveis, isto é, precisam ter o mesmo conjunto de atributos

Page 56: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação de União Encontre os nomes de todos os

clientes que tenham um emprestimo, uma conta ou ambos no banco select cliente_nome from depositante union select cliente_nome from devedor;

Como na Álgebra relacional, as

relações participantes da

operação de interseção precisam

ser compatíveis

Page 57: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação de União Exercício 11):

Obter o resultado da consulta anterior com todas as repetições

Page 58: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação Interseção Encontre os nomes de todos os

clientes que tenham empréstimo e conta no banco select cliente_nome from depositante intersect select cliente_nome from devedor;

Como na Álgebra relacional, as

relações participantes da

operação de interseção precisam

ser compatíveis

Page 59: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação Interseção Exercício 12):

Obter o resultado da consulta anterior com todas as repetições

Page 60: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação Interseção Exercício 13)

Encontre os nomes de todos os clientes que tenham empréstimo e conta no banco, sem utilizar a palavra intersect

Page 61: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação Diferença Encontre os nomes de

todos os clientes que tenham uma conta e nenhum empréstimo no banco select cliente_nome from depositante except select

cliente_nome from devedor;

Como na Álgebra relacional, as

relações participantes da

operação Diferença precisam ser compatíveis

Page 62: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Operação Diferença Exercício 14):

Obter o resultado da consulta anterior com todas as repetições

Page 63: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas Funções que tomam um conjunto ou

subconjunto de valores como entrada e retornam um valor simples

Existem cinco funções agregadas: Média (average): avg Mínimo (minimum): min Máximo (maximum): max Total (total): sum Contagem (count): count

Page 64: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas A entrada para sum e avg precisa ser

um conjunto de números As outras operações podem operar

também com dados não numéricos como strings

Page 65: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Encontre a média dos saldos em

contas na agência “Monteiro Lobato” select avg(saldo) from conta where agencia_nome= 'monteiro lobato';

Page 66: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Exercício 15) Encontre a média das

quantias emprestadas em empréstimos na agência “Monteiro Lobato”

Page 67: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg É possível aplicar funções agregadas não

somente a um conjunto de tuplas, mas também a um grupo de conjunto de tuplas utilizando a cláusula Group by

Encontre a média dos saldos nas contas de cada uma das agências do banco select agencia_nome, avg(saldo) from conta group by agencia_nome;

Page 68: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Exercício 16) Encontre a média das

quantias nos empréstimos de cada uma das agências do banco

Page 69: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Count

Encontre o número de depositantes de cada agência select agencia_nome, count(distinct

cliente_nome) from depositante, conta where depositante.conta_numero

=conta.conta_numero group by agencia_nome;

Page 70: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Count

Exercício 17) Encontre o número de devedores de cada agência

Page 71: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Quando a condição não se aplica a uma única

tupla, mas a cada grupo determinado pela cláusula group by utiliza-se a cláusula Having

Encontre quais agências possuem média dos saldos aplicados em conta maior que 600 select agencia_nome, avg(saldo) from conta group by agencia_nome having avg(saldo)>600;

Page 72: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Exercício 18) Encontre quais

agências possuem média das quantias emprestadas em empréstimos maior que 1000

Page 73: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Encontre a média dos saldos de todas

as contas select avg(saldo) from conta;

Page 74: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Count

Encontre o número de tuplas da relação cliente select count(*) from cliente; No Postgres é

permitido o uso do distinct

com o count(*)

Page 75: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Encontre o saldo médio para cada

cliente que mora em Mairiporã e tenha ao menos uma conta select depositante.cliente_nome, avg(saldo) from cliente, depositante, conta where cliente_cidade= 'mairipora' and

cliente.cliente_nome=depositante.cliente_nome and depositante.conta_numero=conta.conta_numero

group by depositante.cliente_nome having count(depositante.cliente_nome) >= 1;

Se uma cláusula Where e uma cláusula Having aparecem na mesma consulta, o predicado de Where é aplicado primeiro. As tuplas que satisfazem a Where são agrupadas pela cláusula Group by. Somente então Having é aplicada a cada grupo.

Page 76: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Exercício 19) Encontre a quantia média

devida por cada cliente que mora em Caçapava e tenha ao menos dois empréstimo

Page 77: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Encontre o saldo mais alto em

uma conta do banco select max(saldo) from conta

Page 78: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Funções Agregadas - Avg Exercício 20):

Encontre o menor saldo em uma conta do banco

Page 79: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Valores Nulos Encontrar todos os números de

empréstimo que aparecem na relação empréstimo com valores nulos para quantia select emprestimo_numero from emprestimo where quantia is null;

O predicado IS NOT NULL testa a ausência de valores nulos.

Page 80: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Valores Nulos Totalize o montante de todos os

empréstimos select sum(quantia) from emprestimo; Em geral todas as

funções agregadas, exceto

o count(*), ignoram os

valores nulos de entrada

Page 81: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Subconsultas Aninhadas – Membros de Conjuntos

Encontre todos os clientes que tenham tanto conta quanto empréstimo no banco select distinct cliente_nome from devedor where cliente_nome in (select cliente_nome from

depositante);

O conectivo NOT IN verifica a ausência de membros de um conjunto

Page 82: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre todos os clientes que tenham tanto conta quanto um empréstimo na agência “Monteiro Lobato”

select distinct cliente_nome from depositante, conta where depositante.conta_numero = conta.conta_numero

and agencia_nome = 'monteiro lobato' and cliente_nome in (select cliente_nome from devedor, emprestimo where devedor.emprestimo_numero =

emprestimo.emprestimo_numero and agencia_nome = 'monteiro lobato' );

Subconsultas Aninhadas – Membros de Conjuntos

Page 83: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exercício 21): Encontre todos os clientes que tenham tanto conta quanto um empréstimo na agência “Caçapava”

insert into depositante values('joao', 'a-306');

Subconsultas Aninhadas – Membros de Conjuntos

Page 84: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Subconsultas Aninhadas – Membros de Conjuntos

Encontre os nomes de todos os clientes que tenham um empréstimo e nenhuma conta no banco select cliente_nome from devedor where cliente_nome not in (select

cliente_nome from depositante);

Page 85: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Subconsultas Aninhadas – Membros de Conjuntos

Exercício 22): Encontre os nomes de todos os clientes que tenham conta mas não tenham empréstimo no banco

Page 86: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Selecione os nomes do clientes que tenham um empréstimo no banco e cujos nomes não sejam nem Silvio nem joao

select distinct cliente_nome from devedor where cliente_nome not in ('silvio','joao');

Subconsultas Aninhadas – Membros de Conjuntos

Page 87: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre os nomes das agências que tenham ativo maiores que ao menos uma agência localizada em taubate select agencia_nome from agencia where ativo > some (select ativo from agencia where agencia_cidade = 'taubate')

Subconsultas Aninhadas – Comparação de Conjuntos

A SQL permite também comparações < some, <= some, >= some, = some e <> some. Obs: = some é idêntico a in, e <> some não é idêntico a not in. A palavra-chave any é sinônimo de some em SQL.

Page 88: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Exercício 23): Encontre os nomes das agências que tenham quantia de empréstimo maior que ao menos uma quantia de empréstimo da agência “Monteiro Lobato”

Subconsultas Aninhadas – Comparação de Conjuntos

Page 89: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre os nomes de todas as agências que tenham ativo maiores que cada uma agência localizada em taubate select agencia_nome from agencia where ativo > all (select ativo from agencia where agencia_cidade = 'taubate' )

Subconsultas Aninhadas – Comparação de Conjuntos

O construtor >all corresponde a frase maior que todos.A SQL permite também comparações < all, <= all, >= all, = all e <> all. Obs: <> all é idêntico a not in.

Page 90: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre a agência que tem o maior saldo médio select agencia_nome from conta group by agencia_nome having avg(saldo) >= all (select avg (saldo) from

conta group by agencia_nome)

Subconsultas Aninhadas – Comparação de Conjuntos

Page 91: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre todos os clientes que tenham tanto conta quanto empréstimo no banco select cliente_nome from devedor where exists (select * from depositante

where depositante.cliente_nome = devedor.cliente_nome)

Verificação de Relações Vazias

O construtor exists retorna

true se o argumento de

uma subconsulta é não-vazio

Page 92: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Encontre quais agências possuem média dos saldos aplicados em conta maior que 600 select agencia_nome, saldo_medio from (select agencia_nome, avg(saldo) from conta group by agencia_nome) as resultado

(agencia_nome,saldo_medio) where saldo_medio > 600

Relações Derivadas

• Caso haja uma subconsulta na cláusula from, a relação resultante deve receber um nome e os atributos precisam ser rebatizados

• Note que não é necessário usar a cláusula having, uma vez que a relação temporária resultado é computada na cláusula from

Page 93: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Visões Uma visão em SQL é definida usando o

comando create view. Para definir a visão é preciso dar-lhe um nome

e definir a consulta que processará essa visão. A forma do comando create view é:

create view v as <expressão da consulta> <expressão da consulta> é qualquer

consulta válida nome da visão é representado por v

Page 94: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Visão composta dos nomes de agências e nomes de clientes que tenham uma conta ou um empréstimo no banco create view todos_clientes as

select agencia_nome, cliente_nomefrom depositante, contawhere depositante.conta_numero = conta.conta_numerounionselect agencia_nome, cliente_nomefrom devedor, emprestimowhere devedor.emprestimo_numero = emprestimo.emprestimo_numero;

Visões

Page 95: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

A visão calcula para cada agência a soma das quantias de todos os empréstimos por agência create view emprestimo_quantia_agencia

(agencia_nome,emprestimo_quantia) as select agencia_nome, sum(quantia) from emprestimo group by agencia_nome

Visões

Page 96: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Usando a visão todos_clientes encontrar todos os clientes da agência Monteiro Lobato select cliente_nome from todos_clientes where agencia_nome = 'monteiro lobato'

Visões

O nome de uma visão pode

aparecer em qualquer lugar

onde o nome de uma relação

aparece.

Page 97: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Visões definidas usando outras views create view cliente_monteiro_lobato

as select cliente_nome from todos_clientes where agencia_nome = 'monteiro

lobato'

Visões

Page 98: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Visões Consultas complexas são mais fáceis

de escrever e entender se divididas em visões menores para depois serem combinadas

Entretanto, a cláusula create view cria uma definição em um banco de dados e essa definição fica no banco até que um comando drop view nome_visão seja executado.

Page 99: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Remoção Remova todos os registros de conta do

cliente Silvio delete from depositante where cliente_nome='silvio';

  Remova todos os empréstimos com

quantia entre R$1300 e R$1500 delete from emprestimo where quantia between 1300 and 1500;

Page 100: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Remoção Remova todos os registros da relação

devedor delete from devedor

  Remova todas as contas das agências de

Taubaté delete from conta where agencia_nome in (select agencia_nome

from agenciawhereagencia_cidade='taubate')

Page 101: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Remoção Remova os registros de todas as

contas com saldos abaixo da média do banco delete from conta where saldo < (select avg(saldo)

from conta)

Page 102: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção Inserir na agência Caçapava, a conta de

número A-310, com um saldo de R$1200 insert into conta values ('a-310', 'caçapava' ,1200);

Inserir na agência Caçapava, a conta de número A-311, com um saldo de R$1500 insert into conta

(conta_numero,agencia_nome,saldo) values ('a-311', 'caçapava' ,1500)

Page 103: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Inserção Inserir na relação conta os

registros de empréstimo da agência Monteiro lobato insert into conta select emprestimo_numero,

agencia_nome, 200 from emprestimo where agencia_nome ='monteiro lobato'

Page 104: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Atualização Aumentar todos os saldos em 5%

update conta set saldo = saldo * 1.05;

Alterar o dado de um atributo update conta set saldo = 580 where saldo = 525;

Page 105: SQL Structured Query Language Linguagem de Consulta Estruturada Além de realizar consultas ao BD, possui muitos outros recursos como: Definição da estrutura

Referência Bibliográfica SILBERSCHATZ, A.; KORTH, H. F.;

SUDARSHAN, S. Sistema de Banco de Dados. Rio de Janeiro: Elsevier, 2006 – 2ª reimpressão.