SQL Básico PDF
SQL Básico PDF
SQL Bsico
Captulo 3: SQL
Definio de dados
Estrutura bsica das consultas SQL
Operaes de conjunto
Funes agregadas
Valores nulos
Subconsultas aninhadas
Consultas complexas
Views
Histria
Linguagem IBM Sequel desenvolvida como parte do projeto System R no
IBM San Jose Research Laboratory
Renomeada para Structured Query Language (SQL)
Padro SQL ANSI e ISO:
SQL-86
SQL-89
SQL-92
SQL:1999 (nome da linguagem se tornou concordante com o Ano 2000!)
SQL:2003
Linguagem de definio de
dados
Permite a especificao no s de um conjunto de relaes, mas
tambm de informaes sobre cada relao, incluindo:
Exemplo:
integer,
Sintaxe:
ALTER TABLE "nome_tabela"
[especificao da alterao];
Ai representa um atributo
Ri representa uma relao
P um predicado.
O resultado de uma consulta SQL uma relao.
BASEADO NOS SLIDES DO CAPTULO 3 DO LIVRO
SISTEMA DE BANCO DE DADOS E MODIFICADO PELO
PROFESSOR EDUARDO HABIB BECHELANE MAIA
A clusula select
A clusula select lista os atributos desejados no resultado de uma
consulta
corresponde operao projeo da lgebra relacional
Exemplo: encontre o nome dos dependentes
SELECT dependent_name FROM bda.dependente;
NOTA: Os nomes SQL no fazem distino entre letras maisculas e
minsculas.
A clusula where
A clusula where especificam condies que o resultado precisa
satisfazer
Para encontrar todos os salrios superiores a 80.000:
SELECT fname, lname,bdate, salary FROM bda.EMPREGADO where salary>80000;
SELECT fname, lname,bdate, salary FROM bda.EMPREGADO where salary>80000
and salary<90000;
SELECT fname, lname,bdate, salary FROM bda.EMPREGADO where salary>80000 or
salary<50000;
A clusula from
A clusula from lista as relaes envolvidas na consulta
Corresponde operao de produto cartesiano da lgebra relacional.
Geralmente utilizado em conjunto com a clusula Where. Exemplos
SELECT * FROM bda.departamento, bda.empregado;
SELECT * FROM bda.departamento, bda.empregado where dnumber=dno;
A operao de renomeao
A SQL permite renomear relaes e atributos usando a clusula as:
nome-antigo as nome-novo
Exemplo:
Compare o resultado de:
SELECT fname as primeiroNome, lname as ultimoNome, bdate dataNascimento, salary as
salario FROM bda.EMPREGADO where salary between 80000 and 90000;
SELECT fname, lname,bdate, salary FROM bda.EMPREGADO where salary between 80000 and 90000;
Variveis de tupla
As variveis de tupla so definidas na clusula from por meio da
clusula as.
Exemplo:
SELECT * FROM bda.departamento as d, bda.empregado as e where d.dnumber=e.dno;
Operaes de string
A SQL incui um operador de correspondncia de string para comparaes em strings de
caractere. O operao like usa padres que so descritos usando dois caracteres especiais:
Porcentagem (%): O caractere % corresponde a qualquer substring.
Sublinhado (_): O caractere _ corresponde a qualquer caractere.
Encontre os nomes de todos os clientes cujos endereos de rua incluem a substring Atlanta.
SELECT * FROM bda.empregado where address like "%Atlanta%";
Localize o nome Atlanta%
like Atlanta\% escape \
Ordenao da exibio de
tuplas
Liste em ordem alfabtica todos os dependentes dos empregados da empresa:
SELECT * from BDA.dependente as d, BDA.empregado as e where
d.essn=e.ssn order by dependent_name;
Podemos especificar desc para ordem decrescente ou asc para ordem crescente,
para cada atributo; a ordem crescente o padro.
Exemplo: SELECT * from BDA.dependente as d, BDA.empregado as e where
d.essn=e.ssn order by dependent_name desc;
Operaes em conjunto
Encontre todas as pessoas cadastradas que so dependentes ou empregados:
(select fname from BDA.empregado) union (select dependent_name from bda.dependente);
Funes agregadas
Essas funes operam no multiconjunto dos valores de uma coluna de
uma relao e retornam um valor
Valores nulos
possvel que as tuplas tenham um valor nulo, indicado por nulo, para
algum(ns) de seus atributos
nulo significa um valor desconhecido ou que um valor no existe.
O predicado is null/is not null pode ser usado para verificar a presena de
valores nulos.
Exemplo: Encontre todos empregados que recebem salrio.
select fname, salary from empregado where salary is not null;
Subconsultas aninhadas
A SQL fornece um mecanismo para aninhar subconsultas.
Uma subconsulta uma expresso select-from-where que aninhada
dentro de outra consulta.
Um uso comum das subconsultas realizar testes para participao de
conjuntos, fazer comparaes de conjuntos e determinar cardinalidade
de conjuntos.
Consulta de exemplo
Encontre todos os clientes que possuem uma conta e um emprstimo
no banco.
Exemplo fictcio
select * from (select fname,lname,ssn,sex,salary from bda.empregado where
sex="M") as emp where emp.salary>60000;
Comparao de conjuntos
Encontre todos os empregados que possuem salrio maior do que o
salrio de pelo menos um outro empregado cujo endereo em Houston.
select distinct emp1.fname,emp1.lname from bda.empregado as emp1,
bda.empregado as emp2 where emp1.salary>emp2.salary and emp1.address
like "%Houston%";
(5 < some
(5 < some
(5 = some
(5 some
(= some) in
0
5
) = verdadeiro
6
)0= falso
5
0
) = verdadeiro
5
0
) = verdadeiro (j que 0 5)
5
Consulta de exemplo
Encontre os nomes dos funcionrios que possuem salrio maior do
que todos os empregados que residem em Houston.
select distinct fname, lname,salary,address from bda.empregado where
salary> all (select salary from bda.empregado as emp where address like
"%Houston%") order by fname;
(5 < all )
0
5
6
6
10
(5 = all )
(5 all )
4
5
4
6
= falso
= verdadeiro
= falso
= verdadeiro (j que 5 4 e 5 6)
( all) not in
BASEADO NOS SLIDES DO CAPTULO 3 DO LIVRO
SISTEMA DE BANCO DE DADOS E MODIFICADO PELO
PROFESSOR EDUARDO HABIB BECHELANE MAIA
Views
Em alguns casos, no desejvel que todos os usurios vejam o modelo
lgico inteiro (ou seja, todas as relaes reais armazenadas no banco de
dados.)
Definio de view
Uma view definida usando o comando create view, que tem a forma
create view v as <expresso de consulta>
Consultas de exemplo
Exemplos:
CREATE VIEW v1 AS SELECT fname,lname, ssn, bdate, address AS value FROM empregado;
select * from v1;
CREATE VIEW v2 AS SELECT fname,salary*1.2 AS value FROM empregado;
select * from v2;
update empregado
set salary = salary * 1.05
where salary >= 80000
update empregado
set salary = salary * 1.06
where salary < 80000
A ordem importante
Pode ser feito melhor usando a instruo case (prximo slide)
BASEADO NOS SLIDES DO CAPTULO 3 DO LIVRO
SISTEMA DE BANCO DE DADOS E MODIFICADO PELO
PROFESSOR EDUARDO HABIB BECHELANE MAIA
Relaes de juno
As operaes de juno pegam como base duas relaes e retornam como resultado outra
relao.
Essas operaes adicionais normalmente so usadas como expresses de subconsulta na
clusula from.
As junes (joins) so ferramentas presentes na maioria dos bancos de dados que suportam
SQL
So usadas quando precisamos recuperar dados de uma ou mais tabelas com base em suas relaes
lgicas.
Desta forma, possvel combinar os registros de tais tabelas de forma a construir um super registro,
que nos permitir exibir relatrios mais elaborados.
Inner Join
Nas pesquisas com INNER JOIN o resultado trar somente as linhas que
sejam comum nas 2 tabelas, ligadas pelos campos das tabelas em
questo na pesquisa.
SELECT e.fname, d.dname FROM empregado e INNER JOIN
departamento d ON d.dnumber=e.dno;
Fim do Captulo 3