Treinamento básico
SQL
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
1
Revisão
Servidores de arquivos
x
Gerenciadores de Bancos de Dados
José Simão de Paula Pinto
2
u Visão Geral
n Sistemas de Arquivos x Banco de Dados Relacional
n Conceitos Básicos de Bancos de Dados Relacional
José Simão de Paula Pinto
3
u Acesso a Dados
n Sistemas de Arquivos
l Os dados são obtidos após percorrer-se um ou mais
arquivos, por meio de linguagens de programação,
sendo em geral necessária a construção de um novo
programa para cada nova consulta
n Banco de Dados Relacional
l O gerenciador de banco de dados obtém as
informações que foram solicitadas por meio de uma
linguagem de consulta padrão, e entrega-as em forma
de lista (ou relatório)
José Simão de Paula Pinto
4
u O Modelo de Entidades e Relacionamentos
Entidades
Entidades Relacionamentos
Relacionamentos Atributos
Atributos
Colunas
Colunas
Existe Colunas
Existe como
como Tabelas
Tabelas
Colunas
ou
(ou
(ou Campos)
Campos)
ou Tabelas
Tabelas numa
numa Tabela
Tabela
Informação
Informação dede Nome,
Nome,
um
um cliente;
cliente; Pedidos
Pedidos dede Endereço,
Endereço,
Exemplos
Exemplos informação
informação dede um cliente
um cliente Telefone
Telefone dodo
um pedido
um pedido cliente
cliente
José Simão de Paula Pinto
5
u Tabelas (Entidades) e Colunas (Atributos)
n Tabelas tem nomes únicos
n São compostas por linhas e colunas
n Linhas e colunas podem estar em qualquer ordem
n Tem um identificador único: chave primária (Primary
Key)
clientes
n Colunas: atributos identificador nome endereço telefone … … ...
1001 João … … . 5554444 ~~~
1002 Alberto … … . 4687999 ~~~
1003 Franciso … … .. NULL ~~~
1004 Maria … … .. 5678900
1005 Sônia … … ... 0988855 ~~~
1006 Roberto … … …. NULL ~~~
José Simão de Paula Pinto
6
u Relacionamentos
clientes
identificador nome ………. …… … .. ……. … … … … ..
PK NN NN NN NN
1001 João S… .. …. 98022 NULL 05 Jun 1992
1002 Alberto. S… .. …. 98022 206-555-1212 07 Ago 1992
1008 Wilson ……. …. 98026 NULL 03 Mar 1993
Pedidos
numero cliente produto
PK PK,FK, NN NN
1 1002 567
1 1001 566
2 1001 122
José Simão de Paula Pinto
7
u SQL - “Structured Query Language”
n SQL - linguagem estruturada criada para a manipulação
dos elementos do banco de dados
n Características importantes:
l Padronizada para os bancos de dados relacionais.
l Cada comando é uma descrição do que se deseja
obter.
l Quem executa o comando é o gerenciador do banco de
dados.
José Simão de Paula Pinto
8
Definição de dados - DDL
Comandos
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
9
u Criar uma tabela - CREATE TABLE
n Permite a criação de uma tabela e a especificação de
como será seu conteúdo (nomes e tipos de dados das
colunas)
n Palavras chave:
l CREATE TABLE - especifica o nome da tabela.
l CHAR, VARCHAR - tipos de dados para caracteres.
l INT - tipo de dados para números.
José Simão de Paula Pinto
10
u Exemplo de criação de tabela - CREATE TABLE
CREATE
CREATE TABLE
TABLE clientes
clientes
((
nome
nome VARCHAR(40),
VARCHAR(40),
telefone
telefone VARCHAR(10)
VARCHAR(10)
))
ANTES DEPOIS
nome telefone
José Simão de Paula Pinto
11
u Apagar (destruir) uma tabela - DROP TABLE
n Permite apagar uma tabela (não somente o conteúdo,
mas a tabela em si) de um banco de dados.
n Palavras chave:
l DROP TABLE - apaga a tabela indicada
n ATENÇÃO: este comando apagará a tabela e todo o seu
conteúdo do banco de dados especificado ou em uso.
Não existe volta ! Use com cuidado !
José Simão de Paula Pinto
12
u Exemplo de deleção de tabela - DROP TABLE
DROP
DROP TABLE
TABLE clientes
clientes
ANTES DEPOIS
nome telefone
João 445-0988
Alberto 465-98-87
Maria 789-9877
Francisco null
José Simão de Paula Pinto
13
Manipulação de dados - DML
Comandos
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
14
u Obtendo informações - SELECT
n Seleciona linhas e colunas de uma tabela
n Palavras chave:
l SELECT - determina quais as colunas a serem
retornadas ( o asterisco “* ”seleciona todas).
l FROM - determina de quais tabelas serão selecionados
os dados.
l WHERE - determina quais as linhas deverão ser
retornadas. A cláusula where também é conhecida por
critério.
José Simão de Paula Pinto
15
u Exemplo do comando SELECT
SELECT
SELECT nome,telefone
nome,telefone
FROM clientes
FROM clientes
nome telefone
João 445-0988
Alberto 465-98-87
Maria 789-9877
Francisco null
José Simão de Paula Pinto
16
u Exemplo do comando SELECT condicional
SELECT
SELECT nome,telefone
nome,telefone
FROM clientes
FROM clientes
WHERE
WHERE nome
nome == ‘João’
‘João’
nome telefone
João 445-0988
José Simão de Paula Pinto
17
u Adicionando linhas - INSERT
n Insere linhas em uma tabela
n Palavras chave:
l INSERT - indica a tabela e os nomes das colunas nas
quais será realizada a inclusão dos dados.
l VALUES - informa quais são os valores a serem
incluídos nas respectivas colunas.
José Simão de Paula Pinto
18
u Exemplo do comando INSERT
INSERT
INSERT clientes
clientes (nome,telefone)
(nome,telefone)
VALUES
VALUES (Sônia,
(Sônia, null)
null)
ANTES DEPOIS
nome telefone nome telefone
João 445-0988 João 445-0988
Alberto 465-98-87 Alberto 465-98-87
Maria 789-9877 Maria 789-9877
Francisco null Francisco null
Sônia null
José Simão de Paula Pinto
19
u Alterando informações - UPDATE
n Altera o conteúdo de determinadas colunas em uma ou
mais linhas de uma tabela.
n Palavras chave:
l UPDATE - determina qual é a tabela que será alterada.
l SET - determina quais são as alterações a serem
realizadas, em em quais colunas elas ocorrerão.
l WHERE - determina quais são as linhas a serem
alteradas.
José Simão de Paula Pinto
20
u Exemplo do comando UPDATE
UPDATE
UPDATE clientes
clientes
SET telefone == ”882-3344”
SET telefone ”882-3344”
WHERE nome = ”Sônia”
WHERE nome = ”Sônia”
ANTES DEPOIS
nome telefone nome telefone
João 445-0988 João 445-0988
Alberto 465-98-87 Alberto 465-98-87
Maria 789-9877 Maria 789-9877
Francisco null Francisco null
Sônia null Sônia 882-3344
José Simão de Paula Pinto
21
u Apagando informações - DELETE
n Apaga uma ou mais linhas de uma tabela.
n Palavras chave:
l DELETE - determina qual a tabela que terá linhas
apagadas.
l WHERE - determina quais são as linhas a serem
apagadas.
n Atenção: este comando não apaga a tabela, somente as
suas linhas (seu conteúdo) !
José Simão de Paula Pinto
22
u Exemplo do comando DELETE condicional
DELETE
DELETE clientes
clientes
WHERE nome == ”Sônia”
WHERE nome ”Sônia”
ANTES DEPOIS
nome telefone nome telefone
João 445-0988 João 445-0988
Alberto 465-98-87 Alberto 465-98-87
Maria 789-9877 Maria 789-9877
Francisco null Francisco null
Sônia 882-3344
José Simão de Paula Pinto
23
u Exemplo de comando DELETE sem condição !
DELETE
DELETE clientes
clientes
ANTES DEPOIS
nome telefone nome telefone
João 445-0988
Alberto 465-98-87
Maria 789-9877
Francisco null
Sônia 882-3344
José Simão de Paula Pinto
24
u Resumo dos comandos de manipulação vistos
n SELECT colunas
FROM tabela
WHERE condição
n INSERT tabela
VALUES ( conteúdo a armazenar )
n UPDATE tabela
SET coluna = novo conteúdo
WHERE condição
n DELETE tabela
WHERE condição
José Simão de Paula Pinto
25
Exercícios de fixação
Prática
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
26
u Exercício - Criação de tabelas
cod nome
n cliente
n produto cod descricao
n preco cod valor
n venda comprador produto qtdade
José Simão de Paula Pinto
27
u Respostas - Criação de tabelas
n CREATE TABLE cliente
(
cod INT,
nome CHAR(20)
)
n CREATE TABLE produto
(
cod INT,
descricao CHAR(20)
)
José Simão de Paula Pinto
28
u Respostas - Criação de tabelas
n CREATE TABLE preco
(
cod INT,
valor MONEY
)
n CREATE TABLE venda
(
comprador INT,
produto INT,
qtdade INT
)
José Simão de Paula Pinto
29
u Exercício - Inserção de valores
cod nome
1 Ana
2 Pedro
3 Tânia
4 Maria
5 João
cod descricao
1 Barco
2 Sabonete
3 Abacaxi
José Simão de Paula Pinto
30
u Exercício - Inserção de valores
cod valor
1 500.80
2 32.89
3 2.00
comprador produto qtdade
3 1 1
1 2 8
2 2 5
1 3 1
4 3 10
2 1 1
José Simão de Paula Pinto
31
u Respostas - Inserção de valores
n INSERT cliente VALUES(1,'ANA')
n INSERT cliente VALUES(2,'PEDRO')
n INSERT cliente VALUES(3,'TÂNIA')
n INSERT cliente VALUES(4,'MARIA')
n INSERT cliente VALUES(5,'JOÃO')
n INSERT produto VALUES(1,'BARCO')
n INSERT produto VALUES(2,'SABONETE')
n INSERT produto VALUES(3,'ABACAXI')
José Simão de Paula Pinto
32
u Respostas - Inserção de valores
n INSERT preco VALUES(1, 500.80)
n INSERT preco VALUES(2, 32.89)
n INSERT preco VALUES(3, 2.00)
n INSERT venda VALUES(3,1,1)
n INSERT venda VALUES(1,2,8)
n INSERT venda VALUES(2,2,5)
n INSERT venda VALUES(1,3,1)
n INSERT venda VALUES(4,3,10)
n INSERT venda VALUES(2,1,1)
José Simão de Paula Pinto
33
u Exercício - Comandos de seleção
n Selecionar todos os clientes
n Selecionar todos os produtos
n Selecionar todos os preços
n Selecionar todos os registros das vendas efetuadas
José Simão de Paula Pinto
34
u Resposta - Selecionar todos os clientes
SELECT
SELECT nome
nome FROM
FROM cliente
cliente
nome
Ana
Pedro
Tânia
Maria
João
José Simão de Paula Pinto
35
u Resposta - Selecionar todos os produtos
SELECT
SELECTdescricao
descricaoFROM
FROMproduto
produto
descricao
Barco
Sabonete
Abacaxi
José Simão de Paula Pinto
36
u Resposta - Selecionar todos os preços
SELECT
SELECTvalor
valorFROM
FROMpreco
preco
valor
500.80
32.89
2.00
José Simão de Paula Pinto
37
u Resposta - Selecionar todas as vendas efetuadas
SELECT
SELECT**FROM
FROMvenda
venda
comprador produto qtdade
3 1 1
1 2 8
2
1
4
2
3
3
5
1
10
???
2 1 1
José Simão de Paula Pinto
38
Classificação, comparações,
junção e operadores agregadores
Comandos
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
39
u Operador de classificação - ORDER BY
n Destina-se à classificação (ordenação) dos dados, na
apresentação (não afeta os dados originais na tabela).
n Palavras chave:
l ASC - ordenação ascendente (do menor para o maior).
l DESC - ordenação descendente (do maior para o
menor)
José Simão de Paula Pinto
40
u Exemplo do uso de ORDER BY
SELECT
SELECT nome
nome SELECT
SELECT nome
nome
FROM cliente
FROM cliente FROM
FROM cliente
cliente
ORDER
ORDER BY
BY nome
nome ORDER
ORDER BY
BY nome
nome DESC
DESC
ASC DESC
nome nome
Ana Tânia
João Pedro
Maria Maria
Pedro João
Tânia Ana
José Simão de Paula Pinto
41
u Operadores de comparação
= Igual
> Maior
< Menor
>= Maior ou igual
<= Menor ou igual
<> ou != Diferente ou não igual
LIKE Parecido
José Simão de Paula Pinto
42
u Exemplo do uso do operador igual (=)
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod==44
nome
Maria
José Simão de Paula Pinto
43
u Exemplo do uso do operador diferente ( <> ou != )
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod<><>44
nome
Ana
Pedro
Tânia
João
José Simão de Paula Pinto
44
u Exemplo do uso do operador LIKE
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE nome
nome LIKE
LIKE ‘‘%a’
%a’
nome
Ana
Tânia
Maria
José Simão de Paula Pinto
45
u Operadores AND e OR
n Operador AND
E = somente retornará os dados quando as condições
forem todas satisfeitas
n Operador OR
OU = retorna dados assim que qualquer das condições
for satisfeita
José Simão de Paula Pinto
46
u Exemplo de uso do operador AND
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod>>4040
AND
AND nome
nome == ‘‘Maria’
Maria’
nome
José Simão de Paula Pinto
47
u Exemplo do uso do operador OR
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod>>4040
OR
OR nome
nome == ‘‘Maria’
Maria’
nome
Maria
José Simão de Paula Pinto
48
u Exemplo do uso dos operadores AND e OR juntos
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod<<33
AND
AND nome
nome LIKE
LIKE ‘‘%o’
%o’
OR
OR nome
nome == ‘‘Maria’
Maria’
nome
Pedro
Maria
José Simão de Paula Pinto
49
u Junção de tabelas - JOIN
n Utilizamos a junção (JOIN) de tabelas, e seus
operadores, de maneira a expressar os relacionamentos
que foram criados quando da montagem da base de
dados, obtendo os conjuntos de valores originais,
desnormalizados.
n A junção é efetuada basicamente efetuando-se uma
comparação entre dois campos de valores semelhantes
em tabelas distintas, selecionando em ambas as tabelas
as linhas que atendam estes valores e combinando-as.
Estas operações serão efetuadas automaticamente pelo
gerenciador de bancos de dados.
José Simão de Paula Pinto
50
u Exemplo do uso do operador IN
SELECT
SELECT descricao
descricao
FROM
FROM produto
produto
WHERE
WHERE descricao
descricaoIN
IN(‘
(‘Abacaxi,
Abacaxi,‘‘Sabonete’
Sabonete’))
descricao
Sabonete
Abacaxi
José Simão de Paula Pinto
59
u Exemplo do uso do operador BETWEEN
SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
codBETWEEN
BETWEEN22and
and33
descricao
nome
Pedro
Barco
Sabonete
Tânia
Abacaxi
José Simão de Paula Pinto
60
u Operador HAVING
n O operador HAVING deverá ser utilizado em conjunto
com a declaração SELECT e sua função será a de
estabelecer um critério extra de agrupamento ou
seleção de valores, quando utilizando-se a cláusula
GROUP BY. Pode-se entender a declaração HAVING
como sendo uma cláusula WHERE para a declaração
GROUP BY.
José Simão de Paula Pinto
61
u Exemplo de uso do operador HAVING
SELECT
SELECT descricao,
descricao,unidades=sum(qtdade)
unidades=sum(qtdade)
FROM
FROM produto,
produto,venda
venda
WHERE
WHERE produto.cod
produto.cod== venda.produto
venda.produto
GROUP
GROUPBYBY descricao
descricao
HAVING
HAVING sum(qtdade)
sum(qtdade)>>1212
descricao unidades
Sabonete 13
José Simão de Paula Pinto
62
Exercícios de fixação
Prática
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
63
u Exercícios - Comandos de seleção avançados
n Quantas vendas foram registradas?
n Qual dos clientes não comprou nada?
n O que cada cliente comprou e por quanto?
n Descritivo (descricao, preços unitários e total e
quantidade) de cada venda, ordenado por produto
n Quais os totais de compras por cliente?
n Totais de vendas: quantas vendas e seu valor (geral)
José Simão de Paula Pinto
64
Stored Procedures
Comandos
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
65
u STORED PROCEDURES
n Stored Procedures, ou procedimentos armazenados,
são como que pequenos programas, escritos em
linguagem SQL, e ficam armazenados no gerenciador
de banco de dados.
n O servidor de bancos de dados realiza uma pré-
compilação dos procedimentos, e armazena-os em
memória cache após a sua primeira execução, de
maneira que tendem a ser / tornar-se mais rápidos que a
execução de declarações com mesma finalidade a partir
do cliente.
José Simão de Paula Pinto
66
u Criação de STORED PROCEDURES
n A sintaxe para a criação de uma stored procedure é:
l CREATE PROCEDURE nome do procedimento AS
l Exemplo:
l CREATE PROCEDURE TodosClientes AS
SELECT * FROM cliente
l Para sua execução, basta declarar o nome do
procedimento, neste exemplo TodosClientes
José Simão de Paula Pinto
67
u STORED PROCEDURES com parâmetros
n Podemos enviar parâmetros para uma stored
procedured, desde que ela tenha sido declarada de
maneira a recebê-lo.
n Os parâmetros são declarados por meio do uso do
símbolo @ seguido do nome da variável. Deve-se
informar também o tipo de dados que será tratado:
l @nome TipoDeDado
n Os parâmetros (de entrada) são informados antes do
uso da palavra reservada AS, na declaração da stored
procedure.
José Simão de Paula Pinto
68
u Exemplo de STORED PROCEDURE com parâmetro
CREATE
CREATEPROCEDURE
PROCEDUREQualNome
QualNome@codigo
@codigoint
intAS
AS
SELECT
SELECTcod,
cod, nome
nome
FROM
FROMcliente
cliente
WHERE
WHEREcodcod==@codigo
@codigo
QualNome
QualNome55
cod nome
5 João
José Simão de Paula Pinto
69
u Variáveis em STORED PROCEDURES
n Podemos utilizar variáveis dentro de uma stored
procedure, desde que elas sejam previamente
declaradas.
n A declaração ocorre dentro do corpo da stored
procedure, utilizando-se a palavra reservada DECLARE
e informando um nome de variável (precedido do
símbolo @) e o tipo de dados que ela conterá.
l DECLARE @nome TipoDeDado
José Simão de Paula Pinto
70
u Exemplo de STORED PROCEDURE com variável
CREATE
CREATEPROCEDURE
PROCEDURETotal Total@codigo
@codigoint,
int,@quantos
@quantosint
intAS
AS
DECLARE
DECLARE@saida
@saida money
money
SELECT
SELECT@saida
@saida==@quantos
@quantos**(SELECT
(SELECTvalor
valorFROM
FROMpreco
preco
WHERE
WHEREcodcod==@codigo)
@codigo)
SELECT
SELECT‘‘Preço
Preçototal’
total’==@saida
@saida
Total
Total3,
3,10
10
Preço total
20.00
José Simão de Paula Pinto
71
u Algumas STORED PROCEDURES do sistema
n SP_WHO - mostra quem está usando o servidor.
n SP_HELP - mostra objetos do banco de dados.
n SP_HELP parâmetro - mostra características de
“parâmetro”.
l SP_HELP cliente - exibe as características da tabela
“cliente”.
n SP_HELPTEXT parâmetro - exibe o conteúdo da stored
procedure passada em.
l “parâmetro”SP_HELP TodosClientes - exibe o
conteúdo da stored procedure “TodosClientes”.
José Simão de Paula Pinto
72
Exercícios de fixação
Prática
da
Linguagem de Consulta Estruturada
José Simão de Paula Pinto
73
u Exercícios usando STORED PROCEDURES
n Criar STORED PROCEDURES para:
l Exibir todos os produtos.
l Exibir todos os produtos, e seus preços.
l Retornar o preço de um produto desde que passado
seu código para o procedimento.
l Retornar quantos itens já foram vendidos de um
produto, e sua descrição, desde que passado seu
código para o procedimento.
José Simão de Paula Pinto
74