Vous êtes sur la page 1sur 37

Treinamento bsico

SQL
Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
1

Reviso
Servidores de arquivos x Gerenciadores de Bancos de Dados

Jos Simo de Paula Pinto


2

u Viso Geral

n n

Sistemas de Arquivos x Banco de Dados Relacional Conceitos Bsicos de Bancos de Dados Relacional

Jos Simo de Paula Pinto


3

u Acesso a Dados

Sistemas de Arquivos
l

Os dados so obtidos aps percorrer-se um ou mais arquivos, por meio de linguagens de programao, sendo em geral necessria a construo de um novo programa para cada nova consulta O gerenciador de banco de dados obtm as informaes que foram solicitadas por meio de uma linguagem de consulta padro, e entrega-as em forma de lista (ou relatrio)
Jos Simo de Paula Pinto

Banco de Dados Relacional


l

u O Modelo de Entidades e Relacionamentos

Entidades Entidades
Existe como Existe como

Relacionamentos Relacionamentos
Colunas Colunas ou Tabelas ou Tabelas

Atributos Atributos
Colunas Colunas (ou Campos) (ou Campos) numa Tabela numa Tabela Nome, Nome, Endereo, Endereo, Telefone do Telefone do cliente cliente

Tabelas Tabelas Informao de Informao de um cliente; um cliente; informao de informao de um pedido um pedido

Exemplos Exemplos

Pedidos de Pedidos de um cliente um cliente

Jos Simo de Paula Pinto


5

u Tabelas (Entidades) e Colunas (Atributos)


n n n n

Tabelas tem nomes nicos So compostas por linhas e colunas Linhas e colunas podem estar em qualquer ordem Tem um identificador nico: chave primria (Primary Key) clientes endereo telefone Colunas: atributos identificador nome
1001 1002 1003 1004 1005 1006 Joo Alberto Franciso Maria Snia Roberto . . .. .. ... . 5554444 4687999 NULL 5678900 0988855 NULL

... ~~~ ~~~ ~~~ ~~~ ~~~

Jos Simo de Paula Pinto


6

u Relacionamentos
clientes
identificador PK 1001 1002 1008 nome NN Joo Alberto. Wilson . NN S .. S .. . NN . . . .. NN 98022 98022 98026 05 Jun 1992 NULL 206-555-1212 07 Ago 1992 03 Mar 1993 NULL . ..

Pedidos
numero PK 1 1 2 cliente PK,FK, NN 1002 1001 1001 produto NN 567 566 122

Jos Simo de Paula Pinto


7

u SQL - Structured Query Language

SQL - linguagem estruturada criada para a manipulao dos elementos do banco de dados Caractersticas importantes:
l l

Padronizada para os bancos de dados relacionais. Cada comando uma descrio do que se deseja obter. Quem executa o comando o gerenciador do banco de dados.

Jos Simo de Paula Pinto


8

Definio de dados - DDL

Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
9

u Criar uma tabela - CREATE TABLE

Permite a criao de uma tabela e a especificao de como ser seu contedo (nomes e tipos de dados das colunas) Palavras chave:
l l l

CREATE TABLE - especifica o nome da tabela. CHAR, VARCHAR - tipos de dados para caracteres. INT - tipo de dados para nmeros.

Jos Simo de Paula Pinto


10

u Exemplo de criao de tabela - CREATE TABLE


CREATE TABLE clientes CREATE TABLE clientes ( ( nome VARCHAR(40), nome VARCHAR(40), telefone VARCHAR(10) telefone VARCHAR(10) ) )
ANTES nome DEPOIS telefone

Jos Simo de Paula Pinto


11

u Apagar (destruir) uma tabela - DROP TABLE

Permite apagar uma tabela (no somente o contedo, mas a tabela em si) de um banco de dados. Palavras chave:
l

DROP TABLE - apaga a tabela indicada

ATENO: este comando apagar a tabela e todo o seu contedo do banco de dados especificado ou em uso. No existe volta ! Use com cuidado !

Jos Simo de Paula Pinto


12

u Exemplo de deleo de tabela - DROP TABLE

DROP TABLE clientes DROP TABLE clientes

ANTES nome Joo Alberto Maria Francisco telefone 445-0988 465-98-87 789-9877 null

DEPOIS

Jos Simo de Paula Pinto


13

Manipulao de dados - DML

Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
14

u Obtendo informaes - SELECT

n n

Seleciona linhas e colunas de uma tabela Palavras chave:


l

SELECT - determina quais as colunas a serem retornadas ( o asterisco * seleciona todas). FROM - determina de quais tabelas sero selecionados os dados. WHERE - determina quais as linhas devero ser retornadas. A clusula where tambm conhecida por critrio.
Jos Simo de Paula Pinto

15

u Exemplo do comando SELECT


SELECT nome,telefone SELECT nome,telefone FROM clientes FROM clientes

nome Joo Alberto Maria Francisco

telefone 445-0988 465-98-87 789-9877 null

Jos Simo de Paula Pinto


16

u Exemplo do comando SELECT condicional


SELECT nome,telefone SELECT nome,telefone FROM clientes FROM clientes WHERE nome = Joo WHERE nome = Joo

nome Joo

telefone 445-0988

Jos Simo de Paula Pinto


17

u Adicionando linhas - INSERT

n n

Insere linhas em uma tabela Palavras chave:


l

INSERT - indica a tabela e os nomes das colunas nas quais ser realizada a incluso dos dados. VALUES - informa quais so os valores a serem includos nas respectivas colunas.

Jos Simo de Paula Pinto


18

u Exemplo do comando INSERT


INSERT clientes (nome,telefone) INSERT clientes (nome,telefone) VALUES (Snia, null) VALUES (Snia, null)

ANTES nome Joo Alberto Maria Francisco telefone 445-0988 465-98-87 789-9877 null nome

DEPOIS telefone 445-0988 465-98-87 789-9877 null null

Joo Alberto Maria Francisco Snia

Jos Simo de Paula Pinto


19

u Alterando informaes - UPDATE

Altera o contedo de determinadas colunas em uma ou mais linhas de uma tabela. Palavras chave:
l l

UPDATE - determina qual a tabela que ser alterada. SET - determina quais so as alteraes a serem realizadas, em em quais colunas elas ocorrero. WHERE - determina quais so as linhas a serem alteradas.

Jos Simo de Paula Pinto


20

u Exemplo do comando UPDATE


UPDATE clientes UPDATE clientes SET telefone = 882-3344 SET telefone = 882-3344 WHERE nome = Snia WHERE nome = Snia
ANTES nome Joo Alberto Maria Francisco Snia telefone 445-0988 465-98-87 789-9877 null null nome Joo Alberto Maria Francisco Snia DEPOIS telefone 445-0988 465-98-87 789-9877 null 882-3344

Jos Simo de Paula Pinto


21

u Apagando informaes - DELETE

n n

Apaga uma ou mais linhas de uma tabela. Palavras chave:


l

DELETE - determina qual a tabela que ter linhas apagadas. WHERE - determina quais so as linhas a serem apagadas.

Ateno: este comando no apaga a tabela, somente as suas linhas (seu contedo) !

Jos Simo de Paula Pinto


22

u Exemplo do comando DELETE condicional


DELETE clientes DELETE clientes WHERE nome = Snia WHERE nome = Snia

ANTES nome Joo Alberto Maria Francisco Snia telefone 445-0988 465-98-87 789-9877 null 882-3344 nome

DEPOIS telefone 445-0988 465-98-87 789-9877 null

Joo Alberto Maria Francisco

Jos Simo de Paula Pinto


23

u Exemplo de comando DELETE sem condio !


DELETE clientes DELETE clientes

ANTES nome Joo Alberto Maria Francisco Snia telefone 445-0988 465-98-87 789-9877 null 882-3344 nome

DEPOIS telefone

Jos Simo de Paula Pinto


24

u Resumo dos comandos de manipulao vistos


n SELECT

FROM WHERE

colunas tabela condio tabela ( contedo a armazenar ) tabela coluna = novo contedo condio tabela condio
Jos Simo de Paula Pinto

n INSERT

VALUES SET WHERE WHERE

n UPDATE

n DELETE

25

Exerccios de fixao

Prtica
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
26

u Exerccio - Criao de tabelas


n

cliente

cod

nome

produto

cod

descricao

preco

cod

valor

venda

comprador

produto

qtdade

Jos Simo de Paula Pinto


27

u Respostas - Criao de tabelas

CREATE TABLE cliente ( cod INT, nome CHAR(20) ) CREATE TABLE produto ( cod INT, descricao CHAR(20) )

Jos Simo de Paula Pinto


28

u Respostas - Criao de tabelas

CREATE TABLE preco ( cod INT, valor MONEY ) CREATE TABLE venda ( comprador INT, produto INT, qtdade INT )
Jos Simo de Paula Pinto

29

u Exerccio - Insero de valores


cod 1 2 3 4 5 nome Ana Pedro Tnia Maria Joo

cod

descricao Barco Sabonete Abacaxi

1 2 3

Jos Simo de Paula Pinto


30

u Exerccio - Insero de valores


cod 1 2 3 valor 500.80 32.89 2.00

comprador 3 1 2 1 4 2

produto 1 2 2 3 3 1
Jos Simo de Paula Pinto

qtdade 1 8 5 1 10 1

31

u Respostas - Insero de valores

n n n n n n n n

INSERT cliente VALUES(1,'ANA') INSERT cliente VALUES(2,'PEDRO') INSERT cliente VALUES(3,'T NIA') INSERT cliente VALUES(4,'MARIA') INSERT cliente VALUES(5,'JOO') INSERT produto VALUES(1,'BARCO') INSERT produto VALUES(2,'SABONETE') INSERT produto VALUES(3,'ABACAXI')
Jos Simo de Paula Pinto

32

u Respostas - Insero de valores


n n n n n n n n n
33

INSERT preco VALUES(1, 500.80) INSERT preco VALUES(2, 32.89) INSERT preco VALUES(3, 2.00) INSERT venda VALUES(3,1,1) INSERT venda VALUES(1,2,8) INSERT venda VALUES(2,2,5) INSERT venda VALUES(1,3,1) INSERT venda VALUES(4,3,10) INSERT venda VALUES(2,1,1)
Jos Simo de Paula Pinto

u Exerccio - Comandos de seleo

Selecionar todos os clientes Selecionar todos os produtos Selecionar todos os preos Selecionar todos os registros das vendas efetuadas

Jos Simo de Paula Pinto


34

u Resposta - Selecionar todos os clientes


SELECT nome FROM cliente SELECT nome FROM cliente

nome Ana Pedro Tnia Maria Joo

Jos Simo de Paula Pinto


35

u Resposta - Selecionar todos os produtos


SELECT descricao FROM produto SELECT descricao FROM produto

descricao Barco Sabonete Abacaxi

Jos Simo de Paula Pinto


36

u Resposta - Selecionar todos os preos


SELECT valor FROM preco SELECT valor FROM preco

valor 500.80 32.89 2.00

Jos Simo de Paula Pinto


37

u Resposta - Selecionar todas as vendas efetuadas


SELECT * FROM venda SELECT * FROM venda

comprador 3 1 2 1 4 2

produto 1 2 2 3 3 1
Jos Simo de Paula Pinto

qtdade 1 8 5 1 10 1

???

38

Classificao, comparaes, juno e operadores agregadores

Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
39

u Operador de classificao - ORDER BY

Destina-se classificao (ordenao) dos dados, na apresentao (no afeta os dados originais na tabela). Palavras chave:
l l

ASC - ordenao ascendente (do menor para o maior). DESC - ordenao descendente (do maior para o menor)

Jos Simo de Paula Pinto


40

u Exemplo do uso de ORDER BY


SELECT nome SELECT nome FROM cliente FROM cliente ORDER BY nome ORDER BY nome
ASC

SELECT nome SELECT nome FROM cliente FROM cliente ORDER BY nome DESC ORDER BY nome DESC
DESC

nome Ana Joo Maria Pedro Tnia

nome Tnia Pedro Maria Joo Ana

Jos Simo de Paula Pinto


41

u Operadores de comparao
= > < >= <= <> ou != LIKE Igual Maior Menor Maior ou igual Menor ou igual Diferente ou no igual Parecido

Jos Simo de Paula Pinto


42

u Exemplo do uso do operador igual (=)


SELECT SELECT FROM FROM WHERE WHERE nome nome cliente cliente cod = 4 cod = 4

nome Maria

Jos Simo de Paula Pinto


43

u Exemplo do uso do operador diferente ( <> ou != )


SELECT SELECT FROM FROM WHERE WHERE nome nome cliente cliente cod <> 4 cod <> 4

nome Ana Pedro Tnia Joo

Jos Simo de Paula Pinto


44

u Exemplo do uso do operador LIKE


SELECT SELECT FROM FROM WHERE WHERE nome nome cliente cliente nome LIKE %a %a nome LIKE

nome Ana Tnia Maria

Jos Simo de Paula Pinto


45

u Operadores AND e OR

Operador AND E = somente retornar os dados quando as condies forem todas satisfeitas Operador OR OU = retorna dados assim que qualquer das condies for satisfeita

Jos Simo de Paula Pinto


46

u Exemplo de uso do operador AND


SELECT SELECT FROM FROM WHERE WHERE AND AND
nome

nome nome cliente cliente cod > 40 cod > 40 nome = Maria Maria nome =

Jos Simo de Paula Pinto


47

u Exemplo do uso do operador OR


SELECT SELECT FROM FROM WHERE WHERE OR OR
nome Maria

nome nome cliente cliente cod > 40 cod > 40 nome = Maria Maria nome =

Jos Simo de Paula Pinto


48

u Exemplo do uso dos operadores AND e OR juntos


SELECT SELECT FROM FROM WHERE WHERE AND AND OR OR
nome Pedro Maria

nome nome cliente cliente cod < 3 cod < 3 nome LIKE %o %o nome LIKE nome = Maria Maria nome =

Jos Simo de Paula Pinto


49

u Juno de tabelas - JOIN

Utilizamos a juno (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. A juno efetuada basicamente efetuando-se uma comparao entre dois campos de valores semelhantes em tabelas distintas, selecionando em ambas as tabelas as linhas que atendam estes valores e combinando-as. Estas operaes sero efetuadas automaticamente pelo gerenciador de bancos de dados.
Jos Simo de Paula Pinto

50

u Exemplo de juno - JOIN


SELECT SELECT FROM FROM WHERE WHERE
cod 1 2 3

descricao, valor descricao, valor produto, preco produto, preco produto.cod = preco.cod produto.cod = preco.cod
descricao Barco Sabonete Abacaxi descricao Barco Sabonete Abacaxi valor 500.80 32.89 2.00 cod 1 2 3 valor 500.80 32.89 2.00

Jos Simo de Paula Pinto


51

u Operadores de agregao
MIN MAX COUNT AVG SUM Retorna o menor valor Retorna o maior valor Retorna a quantidade de valores Retorna a mdia dos valores Retorna a soma dos valores

Jos Simo de Paula Pinto


52

u Exemplos de uso de operadores de agregao


SELECT MAX( valor )) SELECT MAX( valor FROM preco FROM preco --> Retorna o maior preo --> Retorna o maior preo SELECT AVG( valor )) SELECT AVG( valor FROM preco FROM preco --> Retorna aamdia de preos --> Retorna mdia de preos SELECT COUNT( * )) SELECT COUNT( * FROM cliente FROM cliente --> Retorna aaquantidade de clientes --> Retorna quantidade de clientes
Jos Simo de Paula Pinto
53

u Agrupamento / Subtotais - GROUP BY

Este comando permite que a apresentao dos dados retornados da consulta seja agrupada de acordo com uma determinada condio, digamos a soma dos valores vendidos para cada produto. utilizado em conjunto com o comando SELECT. Uso: SELECT FROM WHERE GROUP BY colunas tabela condio coluna ou agregado

Jos Simo de Paula Pinto


54

u Exemplo de agrupamento - GROUP BY


SELECT SELECT FROM FROM WHERE WHERE GROUP BY GROUP BY descricao, unidades=sum(qtdade) descricao, unidades=sum(qtdade) produto, venda produto, venda produto.cod = venda.produto produto.cod = venda.produto descricao descricao

descricao Abacaxi Barco Sabonete

unidades 11 2 13

Jos Simo de Paula Pinto


55

u Operador DISTINCT

O operador DISTINCT possibilita que uma consulta retorne valores nicos, sem repeties, para a coluna de dados.Este operador deve ser utilizado em conjunto com a declarao SELECT. Uso: SELECT FROM WHERE DISTINCT (coluna) tabela condio

Jos Simo de Paula Pinto


56

u Exemplo do uso do operador DISTINCT


SELECT descricao SELECT descricao FROM produto, venda FROM produto, venda WHEREproduto.cod = venda.produto WHEREproduto.cod = venda.produto
SEM usar DISTINCT

SELECT DISTINCT (descricao) SELECT DISTINCT (descricao) FROM produto, venda FROM produto, venda WHEREproduto.cod = venda.produto WHEREproduto.cod = venda.produto
Usando DISTINCT

descricao Barco Sabonete Sabonete Abacaxi Abacaxi Barco

descricao Abacaxi Barco Sabonete

Jos Simo de Paula Pinto


57

u Operadores IN e BETWEEN

IN = para testar se um valor est dentro de um determinado conjunto de valores. Pode utilizar o operador IN em conjunto com o operador NOT (formando a expresso NOT IN). BETWEEN = para testar se um valor est entre uma determinada faixa de valores.

Jos Simo de Paula Pinto


58

u Exemplo do uso do operador IN


SELECT SELECT FROM FROM WHERE WHERE descricao descricao produto produto descricao IN (Abacaxi,Sabonete Abacaxi, Sabonete) ) descricao IN (

descricao Sabonete Abacaxi

Jos Simo de Paula Pinto


59

u Exemplo do uso do operador BETWEEN


SELECT SELECT FROM FROM WHERE WHERE nome nome cliente cliente cod BETWEEN 2 and 3 cod BETWEEN 2 and 3

nome descricao Pedro Barco Tnia Sabonete Abacaxi

Jos Simo de Paula Pinto


60

u Operador HAVING

O operador HAVING dever ser utilizado em conjunto com a declarao SELECT e sua funo ser a de estabelecer um critrio extra de agrupamento ou seleo de valores, quando utilizando-se a clusula GROUP BY. Pode-se entender a declarao HAVING como sendo uma clusula WHERE para a declarao GROUP BY.

Jos Simo de Paula Pinto


61

u Exemplo de uso do operador HAVING


SELECT SELECT FROM FROM WHERE WHERE GROUP BY GROUP BY HAVING HAVING descricao, unidades=sum(qtdade) descricao, unidades=sum(qtdade) produto, venda produto, venda produto.cod = venda.produto produto.cod = venda.produto descricao descricao sum(qtdade) > 12 sum(qtdade) > 12

descricao Sabonete

unidades 13

Jos Simo de Paula Pinto


62

Exerccios de fixao

Prtica
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
63

u Exerccios - Comandos de seleo avanados


n n n n

Quantas vendas foram registradas? Qual dos clientes no comprou nada? O que cada cliente comprou e por quanto? Descritivo (descricao, preos unitrios e total e quantidade) de cada venda, ordenado por produto Quais os totais de compras por cliente? Totais de vendas: quantas vendas e seu valor (geral)

n n

Jos Simo de Paula Pinto


64

Stored Procedures

Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
65

u STORED PROCEDURES

Stored Procedures, ou procedimentos armazenados, so como que pequenos programas, escritos em linguagem SQL, e ficam armazenados no gerenciador de banco de dados. O servidor de bancos de dados realiza uma prcompilao dos procedimentos, e armazena-os em memria cache aps a sua primeira execuo, de maneira que tendem a ser / tornar-se mais rpidos que a execuo de declaraes com mesma finalidade a partir do cliente.

Jos Simo de Paula Pinto


66

u Criao de STORED PROCEDURES

A sintaxe para a criao de uma stored procedure :


l l l

CREATE PROCEDURE nome do procedimento AS Exemplo: CREATE PROCEDURE TodosClientes AS SELECT * FROM cliente Para sua execuo, basta declarar o nome do procedimento, neste exemplo TodosClientes

Jos Simo de Paula Pinto


67

u STORED PROCEDURES com parmetros

Podemos enviar parmetros para uma stored procedured, desde que ela tenha sido declarada de maneira a receb-lo. Os parmetros so declarados por meio do uso do smbolo @ seguido do nome da varivel. Deve-se informar tambm o tipo de dados que ser tratado:
l

@nome TipoDeDado

Os parmetros (de entrada) so informados antes do uso da palavra reservada AS, na declarao da stored procedure.
Jos Simo de Paula Pinto

68

u Exemplo de STORED PROCEDURE com parmetro


CREATE PROCEDURE QualNome @codigo int AS CREATE PROCEDURE QualNome @codigo int AS SELECT cod, nome SELECT cod, nome FROM cliente FROM cliente WHERE cod = @codigo WHERE cod = @codigo

QualNome 5 QualNome 5

cod 5

nome Joo

Jos Simo de Paula Pinto


69

u Variveis em STORED PROCEDURES

Podemos utilizar variveis dentro de uma stored procedure, desde que elas sejam previamente declaradas. A declarao ocorre dentro do corpo da stored procedure, utilizando-se a palavra reservada DECLARE e informando um nome de varivel (precedido do smbolo @) e o tipo de dados que ela conter.
l

DECLARE @nome TipoDeDado

Jos Simo de Paula Pinto


70

u Exemplo de STORED PROCEDURE com varivel


CREATE PROCEDURE Total @codigo int, @quantos int AS CREATE PROCEDURE Total @codigo int, @quantos int AS DECLARE @saida money DECLARE @saida money SELECT @saida = @quantos * (SELECT valor FROM preco SELECT @saida = @quantos * (SELECT valor FROM preco WHERE cod = @codigo) WHERE cod = @codigo) SELECT Preototal= @saida Preo total= @saida SELECT Total 3, 10 Total 3, 10
Preo total 20.00

Jos Simo de Paula Pinto


71

u Algumas STORED PROCEDURES do sistema


n n n

SP_WHO - mostra quem est usando o servidor. SP_HELP - mostra objetos do banco de dados. SP_HELP parmetro - mostra caractersticas de parmetro.
l

SP_HELP cliente - exibe as caractersticas da tabela cliente.

SP_HELPTEXT parmetro - exibe o contedo da stored procedure passada em.


l

parmetroSP_HELP TodosClientes - exibe o contedo da stored procedure TodosClientes .


Jos Simo de Paula Pinto

72

Exerccios de fixao

Prtica
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
73

u Exerccios usando STORED PROCEDURES

Criar STORED PROCEDURES para:


l l l

Exibir todos os produtos. Exibir todos os produtos, e seus preos. Retornar o preo de um produto desde que passado seu cdigo para o procedimento. Retornar quantos itens j foram vendidos de um produto, e sua descrio, desde que passado seu cdigo para o procedimento.

Jos Simo de Paula Pinto


74

Vous aimerez peut-être aussi