Você está na página 1de 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 de dados
 Modificação de dados no BD
 Especificação de restrições de segurança
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
SQL

 Versão original desenvolvida pela IBM, no


início dos anos 70
 Originalmente denominada Sequel
 Structured English Query Language

 Linguagem de Consulta Estruturada em Inglês
SQL
 É composta de:
 Linguagem de definição de dados

 Linguagem de manipulação de dados

 Incorporação DML

 Definição de visões

 Autorização

 Integridade

 Controle de transações
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
Cláusula select
 Encontre os nomes de todas as
agencias da relação emprestimo
 select agencia_nome
 from emprestimo; (omissão de where ⇒ predicado é
TRUE)

 Encontre os nomes de todas as


agencias da relação emprestimo,
eliminando duplicidades
 select distinct agencia_nome
 from emprestimo;
 
Cláusula select
 Encontre os nomes de todas as
agencias da relação emprestimo,
especificando explicitamente que as
duplicidades não serão eliminadas
 select all agencia_nome
 from emprestimo;

 Multiplicar os totais da relação


emprestimo por 100
 select agencia_nome, emprestimo_numero,
total*100
 from emprestimo;
Cláusula where
 Encontre todos os números de
emprestimos feitos na agencia
“Monteiro Lobato” com totais acima
de R$1200
 select emprestimo_numero
 from emprestimo
 where agencia_nome= "Monteiro Lobato" and
total>1200;
Cláusula where
 Encontrar os números de emprestimo cujos
totais estejam entre R$500 e R$1000
inclusive
 select emprestimo_numero

 from emprestimo

 where total between 500 and 1000;

ou
 
 select emprestimo_numero
 from emprestimo
 where total >= 500 and total <= 1000;
Cláusula from
 Encontre os nomes, números de
emprestimo e total de todos os clientes
que tenham um emprestimo no banco
 select cliente_nome,
devedor.emprestimo_numero, total
 from devedor, emprestimo
 where
devedor.emprestimo_numero=emprestimo.empr
estimo_numero;
Cláusula from
 Encontre os nomes e os números de
emprestimo de todos os clientes que
tenham um emprestimo na agencia
“Independência”
 select cliente_nome,
devedor.emprestimo_numero
 from devedor, emprestimo
 where devedor.emprestimo_numero =
emprestimo.emprestimo_numero and
agencia_nome = "Independência";
Operação Rename
 Encontre os nomes e os números de
emprestimo de todos os clientes que
tenham um emprestimo na agencia
“Independência”, substituindo o
atributo emprestimo_numero por
emprestimo_id
 select cliente_nome,
devedor.emprestimo_numero as emprestimo_id
 from devedor, emprestimo

 where devedor.emprestimo_numero =

emprestimo.emprestimo_numero and
agencia_nome
•AS não é opcional = "Independência";
•Não funciona substituir os campos emprestimo_numero, por emprestimo_id
Variáveis Tuplas
 Para todos os clientes que possuem um
emprestimo, encontre seus nomes e
respectivos números de emprestimo e totais
 select distinct cliente_nome,

d.emprestimo_numero, total
 from devedor as d, emprestimo as e

 where d.emprestimo_numero =

e.emprestimo_numero;
 
 Encontre os nomes das agencias que tenham
fundos maiores que ao menos uma agencia de
Taubaté
a palavra
 select distinct a.agencia_nome chave AS é
opcional
 from agencia a, agencia g


Operações com strings
 Encontre os nomes de agencias que
comecem pela letra c
 select agencia_nome
 from agencia
 where agencia_nome like "C%";
Obs: no access usa-se *.

 Encontre os nomes de agencias que


possuam a substring “ça” em seus
nomes
 select agencia_nome
 from agencia
 where agencia_nome like "%ça%";
Operações com strings
 Encontre os nomes de agencias que
não comecem pela letra c
 select agencia_nome
 from agencia
 where agencia_nome not like "C%";
Operações com strings
 Encontre os nomes de agencias que
possuam pelo menos 4 caracteres na
string do seu nome
 select agencia_nome
 from agencia
 where agencia_nome like "____%";
Ordenação
 Classificar em ordem alfabética os
nomes de todos os clientes que
tenham um emprestimo na agencia
“Monteiro Lobato”
 select cliente_nome
 from devedor, emprestimo
 where
devedor.emprestimo_numero=emprestimo.empr
estimo_numero and agencia_nome= "Monteiro
Lobato"
 order by cliente_nome;
Ordenação
 Listar a relação emprestimo inteira em
ordem decrescente de Total. Se
emprestimos possuírem totais iguais,
organizar os números de emprestimo
em ordem ascendente
 select *
 from emprestimo
 order by total desc, emprestimo_numero asc;
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 Como na Álgebra
relacional, as
 from depositante relações
participantes da
 union operação de união
precisam ser
 select cliente_nome compatíveis

 from devedor;

 Exercício: obter o resultado da consulta


anterior com todas as repetições
Operação Interseção
 Encontre os nomes de todos os clientes que
tenham emprestimo e conta no banco
Como na Álgebra
relacional, as
relações
participantes da
operação de
interseção precisam
ser compatíveis

 select distinct depositante.cliente_nome


 from depositante, devedor
 where depositante.cliente_nome=devedor.cliente_nome;

Exercício: obter o resultado da consulta anterior com


todas as repetições
Operação Diferença
 Encontre os nomes de todos os clientes que
tenham uma conta e nenhum emprestimo no
banco
Como na Álgebra
relacional, as
relações
participantes da
operação Diferença
precisam ser
compatíveis

 select distinct cliente_nome


 from depositante
 where cliente_nome not in (select cliente_nome from
devedor);

 Exercício: obter o resultado da consulta anterior


com todas as repetições

Você também pode gostar