sql server

37
José Simão de Paula Pinto 1 SQL Linguagem de Consulta Estruturada Treinamento básico José Simão de Paula Pinto 2 Servidores de arquivos x Gerenciadores de Bancos de Dados Revisão

Upload: sandra-rocha

Post on 23-Jul-2015

56 views

Category:

Education


1 download

TRANSCRIPT

José Simão de Paula Pinto1

SQLLinguagem de Consulta Estruturada

Treinamento básico

José Simão de Paula Pinto2

Servidores de arquivosx

Gerenciadores de Bancos de Dados

Revisão

José Simão de Paula Pinto3

uVisã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 Pinto4

uAcesso a Dados

n Sistemas de Arquivos

l Os dados são obtidos após percorrer-se um ou maisarquivos, por meio de linguagens de programação,sendo em geral necessária a construção de um novoprograma para cada nova consulta

n Banco de Dados Relacional

l O gerenciador de banco de dados obtém asinformações que foram solicitadas por meio de umalinguagem de consulta padrão, e entrega-as em formade lista (ou relatório)

José Simão de Paula Pinto5

uO Modelo de Entidades e Relacionamentos

Existe comoExiste como

ExemplosExemplos

EntidadesEntidadesEntidades RelacionamentosRelacionamentosRelacionamentos AtributosAtributosAtributos

TabelasTabelas

Informação deum cliente;

informação deum pedido

Informação deum cliente;

informação deum pedido

Colunasou TabelasColunas

ou Tabelas

Pedidos deum cliente

Pedidos deum cliente

Colunas(ou Campos)numa Tabela

Colunas(ou Campos)numa Tabela

Nome,Endereço,

Telefone docliente

Nome,Endereço,

Telefone docliente

José Simão de Paula Pinto6

identificador nome endereço telefone … … ...

100110021003100410051006

JoãoAlbertoFrancisoMariaSôniaRoberto

… … .… … .… … ..… … ..… … ...… … … .

55544444687999NULL56789000988855NULL

~~~~~~~~~

~~~~~~

clientesclientes

uTabelas (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 (PrimaryKey)

n Colunas: atributos

José Simão de Paula Pinto7

uRelacionamentos

identificador nome … … … . … … … .. … … . … … … … ..

100110021008

JoãoAlberto.Wilson

S… ..S… ..… … .

… .… .… .

980229802298026

NULL206-555-1212NULL

05 Jun 199207 Ago 199203 Mar 1993

clientesclientes

PK NN NN NN NN

numero cliente produto

112

100210011001

PedidosPedidos

PK PK,FK, NN NN

567566122

José Simão de Paula Pinto8

uSQL - “Structured Query Language”

n SQL - linguagem estruturada criada para a manipulaçãodos 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 desejaobter.

l Quem executa o comando é o gerenciador do banco dedados.

José Simão de Paula Pinto9

Comandosda

Linguagem de Consulta Estruturada

Definição de dados - DDL

José Simão de Paula Pinto10

uCriar uma tabela - CREATE TABLE

n Permite a criação de uma tabela e a especificação decomo será seu conteúdo (nomes e tipos de dados dascolunas)

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 Pinto11

uExemplo de criação de tabela - CREATE TABLE

ANTES

telefonenome

DEPOIS

CREATE TABLE clientes(

nome VARCHAR(40),telefone VARCHAR(10)

)

CREATE TABLE clientes(

nome VARCHAR(40),telefone VARCHAR(10)

)

José Simão de Paula Pinto12

uApagar (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 seuconteúdo do banco de dados especificado ou em uso.Não existe volta ! Use com cuidado !

José Simão de Paula Pinto13

uExemplo de deleção de tabela - DROP TABLE

ANTES

telefone

JoãoAlbertoMariaFrancisco

445-0988465-98-87789-9877

null

nome

DEPOIS

DROP TABLE clientesDROP TABLE clientes

José Simão de Paula Pinto14

Comandosda

Linguagem de Consulta Estruturada

Manipulação de dados - DML

José Simão de Paula Pinto15

uObtendo informações - SELECT

n Seleciona linhas e colunas de uma tabela

n Palavras chave:

l SELECT - determina quais as colunas a seremretornadas ( o asterisco “ * ” seleciona todas).

l FROM - determina de quais tabelas serão selecionadosos dados.

l WHERE - determina quais as linhas deverão serretornadas. A cláusula where também é conhecida porcritério.

José Simão de Paula Pinto16

SELECT nome,telefoneFROM clientesSELECT nome,telefoneFROM clientes

nome telefone

JoãoAlbertoMariaFrancisco

445-0988465-98-87789-9877null

uExemplo do comando SELECT

José Simão de Paula Pinto17

SELECT nome,telefoneFROM clientesWHERE nome = ‘João’

SELECT nome,telefoneFROM clientesWHERE nome = ‘João’

nome telefone

João 445-0988

uExemplo do comando SELECT condicional

José Simão de Paula Pinto18

uAdicionando linhas - INSERT

n Insere linhas em uma tabela

n Palavras chave:

l INSERT - indica a tabela e os nomes das colunas nasquais será realizada a inclusão dos dados.

l VALUES - informa quais são os valores a seremincluídos nas respectivas colunas.

José Simão de Paula Pinto19

INSERT clientes (nome,telefone)VALUES (Sônia, null)INSERT clientes (nome,telefone)VALUES (Sônia, null)

uExemplo do comando INSERT

telefone

JoãoAlbertoMariaFranciscoSônia

445-0988465-98-87789-9877

nullnull

nome

ANTES

telefone

JoãoAlbertoMariaFrancisco

445-0988465-98-87789-9877

null

nome

DEPOIS

José Simão de Paula Pinto20

uAlterando informações - UPDATE

n Altera o conteúdo de determinadas colunas em uma oumais 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 seremrealizadas, em em quais colunas elas ocorrerão.

l WHERE - determina quais são as linhas a seremalteradas.

José Simão de Paula Pinto21

UPDATE clientesSET telefone = ”882-3344”WHERE nome = ”Sônia”

UPDATE clientesSET telefone = ”882-3344”WHERE nome = ”Sônia”

uExemplo do comando UPDATE

telefone

JoãoAlbertoMariaFranciscoSônia

445-0988465-98-87789-9877

null882-3344

nome

ANTES DEPOIS

telefone

JoãoAlbertoMariaFranciscoSônia

445-0988465-98-87789-9877

nullnull

nome

José Simão de Paula Pinto22

uApagando informações - DELETE

n Apaga uma ou mais linhas de uma tabela.

n Palavras chave:

l DELETE - determina qual a tabela que terá linhasapagadas.

l WHERE - determina quais são as linhas a seremapagadas.

n Atenção: este comando não apaga a tabela, somente assuas linhas (seu conteúdo) !

José Simão de Paula Pinto23

telefone

JoãoAlbertoMariaFranciscoSônia

445-0988465-98-87789-9877

null882-3344

nome

ANTES

telefone

JoãoAlbertoMariaFrancisco

445-0988465-98-87789-9877

null

nome

DEPOIS

DELETE clientesWHERE nome = ”Sônia”

DELETE clientesWHERE nome = ”Sônia”

uExemplo do comando DELETE condicional

José Simão de Paula Pinto24

uExemplo de comando DELETE sem condição !

telefone

JoãoAlbertoMariaFranciscoSônia

445-0988465-98-87789-9877

null882-3344

nome

ANTES

telefonenome

DEPOIS

DELETE clientesDELETE clientes

José Simão de Paula Pinto25

uResumo dos comandos de manipulação vistos

nSELECT colunasFROM tabelaWHERE condição

n INSERT tabelaVALUES ( conteúdo a armazenar )

nUPDATE tabelaSET coluna = novo conteúdoWHERE condição

nDELETE tabelaWHERE condição

José Simão de Paula Pinto26

Práticada

Linguagem de Consulta Estruturada

Exercícios de fixação

José Simão de Paula Pinto27

uExercício - Criação de tabelas

nomecod

descricaocod

valorcod

produtocomprador qtdade

n cliente

n produto

n preco

n venda

José Simão de Paula Pinto28

uRespostas - 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 Pinto29

uRespostas - 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 Pinto30

uExercício - Inserção de valores

descricaocod

BarcoSaboneteAbacaxi

123

nomecod

AnaPedroTâniaMariaJoão

12345

José Simão de Paula Pinto31

uExercício - Inserção de valores

valorcod

500.8032.892.00

123

produtocomprador qtdade

312142

1851

101

122331

José Simão de Paula Pinto32

uRespostas - 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 Pinto33

uRespostas - 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 Pinto34

uExercí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 Pinto35

uResposta - Selecionar todos os clientes

SELECT nome FROM clienteSELECT nome FROM cliente

AnaPedroTâniaMariaJoão

nome

José Simão de Paula Pinto36

uResposta - Selecionar todos os produtos

SELECT descricao FROM produtoSELECT descricao FROM produto

BarcoSaboneteAbacaxi

descricao

José Simão de Paula Pinto37

uResposta - Selecionar todos os preços

SELECT valor FROM precoSELECT valor FROM preco

500.8032.892.00

valor

José Simão de Paula Pinto38

uResposta - Selecionar todas as vendas efetuadas

SELECT * FROM vendaSELECT * FROM venda

???

produtocomprador qtdade

312142

1851

101

122331

José Simão de Paula Pinto39

Comandosda

Linguagem de Consulta Estruturada

Classificação, comparações,junção e operadores agregadores

José Simão de Paula Pinto40

uOperador de classificação - ORDER BY

n Destina-se à classificação (ordenação) dos dados, naapresentaçã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 omenor)

José Simão de Paula Pinto41

uExemplo do uso de ORDER BY

AnaJoãoMariaPedroTânia

nome

ASC

SELECT nomeFROM clienteORDER BY nome

SELECT nomeFROM clienteORDER BY nome

TâniaPedroMariaJoãoAna

nome

DESC

SELECT nomeFROM clienteORDER BY nome DESC

SELECT nomeFROM clienteORDER BY nome DESC

José Simão de Paula Pinto42

uOperadores 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 Pinto43

uExemplo do uso do operador igual (=)

SELECT nomeFROM clienteWHERE cod = 4

SELECT nomeFROM clienteWHERE cod = 4

Maria

nome

José Simão de Paula Pinto44

uExemplo do uso do operador diferente ( <> ou != )

AnaPedroTâniaJoão

nome

SELECT nomeFROM clienteWHERE cod <> 4

SELECT nomeFROM clienteWHERE cod <> 4

José Simão de Paula Pinto45

uExemplo do uso do operador LIKE

AnaTâniaMaria

nome

SELECT nomeFROM clienteWHERE nome LIKE ‘%a’

SELECT nomeFROM clienteWHERE nome LIKE ‘%a’

José Simão de Paula Pinto46

uOperadores AND e OR

n Operador AND

E = somente retornará os dados quando as condiçõesforem todas satisfeitas

n Operador OR

OU = retorna dados assim que qualquer das condiçõesfor satisfeita

José Simão de Paula Pinto47

uExemplo de uso do operador AND

nome

SELECT nomeFROM clienteWHERE cod > 40AND nome = ‘Maria’

SELECT nomeFROM clienteWHERE cod > 40AND nome = ‘Maria’

José Simão de Paula Pinto48

uExemplo do uso do operador OR

Maria

nome

SELECT nomeFROM clienteWHERE cod > 40OR nome = ‘Maria’

SELECT nomeFROM clienteWHERE cod > 40OR nome = ‘Maria’

José Simão de Paula Pinto49

uExemplo do uso dos operadores AND e OR juntos

PedroMaria

nome

SELECT nomeFROM clienteWHERE cod < 3AND nome LIKE ‘%o’OR nome = ‘Maria’

SELECT nomeFROM clienteWHERE cod < 3AND nome LIKE ‘%o’OR nome = ‘Maria’

José Simão de Paula Pinto50

uJunção de tabelas - JOIN

n Utilizamos a junção (JOIN) de tabelas, e seusoperadores, de maneira a expressar os relacionamentosque foram criados quando da montagem da base dedados, obtendo os conjuntos de valores originais,desnormalizados.

n A junção é efetuada basicamente efetuando-se umacomparação entre dois campos de valores semelhantesem tabelas distintas, selecionando em ambas as tabelasas linhas que atendam estes valores e combinando-as.Estas operações serão efetuadas automaticamente pelogerenciador de bancos de dados.

José Simão de Paula Pinto51

uExemplo de junção - JOIN

descricaocod

BarcoSaboneteAbacaxi

123

valorcod

500.8032.892.00

123

SELECT descricao, valorFROM produto, precoWHERE produto.cod = preco.cod

SELECT descricao, valorFROM produto, precoWHERE produto.cod = preco.cod

valordescricao

500.8032.892.00

BarcoSaboneteAbacaxi

José Simão de Paula Pinto52

uOperadores de agregação

MIN Retorna o menor valor

MAX Retorna o maior valor

COUNT Retorna a quantidadede valores

AVG Retorna a média dosvalores

SUM Retorna a soma dosvalores

José Simão de Paula Pinto53

uExemplos de uso de operadores de agregação

SELECT MAX( valor )FROM preco

--> Retorna o maior preço

SELECT MAX( valor )FROM preco

--> Retorna o maior preço

SELECT AVG( valor )FROM preco

--> Retorna a média de preços

SELECT AVG( valor )FROM preco

--> Retorna a média de preços

SELECT COUNT( * )FROM cliente

--> Retorna a quantidade de clientes

SELECT COUNT( * )FROM cliente

--> Retorna a quantidade de clientes

José Simão de Paula Pinto54

uAgrupamento / Subtotais - GROUP BY

n Este comando permite que a apresentação dos dadosretornados da consulta seja agrupada de acordo comuma determinada condição, digamos a soma dosvalores vendidos para cada produto. É utilizado emconjunto com o comando SELECT.

n Uso:SELECT colunasFROM tabelaWHERE condiçãoGROUP BY coluna ou agregado

José Simão de Paula Pinto55

uExemplo de agrupamento - GROUP BY

SELECT descricao, unidades=sum(qtdade)FROM produto, vendaWHERE produto.cod = venda.produtoGROUP BY descricao

SELECT descricao, unidades=sum(qtdade)FROM produto, vendaWHERE produto.cod = venda.produtoGROUP BY descricao

unidadesdescricao

112

13

AbacaxiBarcoSabonete

José Simão de Paula Pinto56

uOperador DISTINCT

n O operador DISTINCT possibilita que uma consultaretorne valores únicos, sem repetições, para a colunade dados.Este operador deve ser utilizado em conjuntocom a declaração SELECT.

n Uso:SELECT DISTINCT (coluna)FROM tabelaWHERE condição

José Simão de Paula Pinto57

uExemplo do uso do operador DISTINCT

BarcoSaboneteSaboneteAbacaxiAbacaxiBarco

descricao

SEM usar DISTINCT

SELECT descricaoFROM produto, vendaWHEREproduto.cod = venda.produto

SELECT descricaoFROM produto, vendaWHEREproduto.cod = venda.produto

AbacaxiBarcoSabonete

descricao

Usando DISTINCT

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

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

José Simão de Paula Pinto58

uOperadores IN e BETWEEN

n IN = para testar se um valor está dentro de umdeterminado conjunto de valores. Pode utilizar ooperador IN em conjunto com o operador NOT(formando a expressão NOT IN).

n BETWEEN = para testar se um valor está entre umadeterminada faixa de valores.

José Simão de Paula Pinto59

uExemplo do uso do operador IN

SELECT descricaoFROM produtoWHERE descricao IN (‘Abacaxi, ‘Sabonete’)

SELECT descricaoFROM produtoWHERE descricao IN (‘Abacaxi, ‘Sabonete’)

SaboneteAbacaxi

descricao

José Simão de Paula Pinto60

uExemplo do uso do operador BETWEEN

SELECT nomeFROM clienteWHERE cod BETWEEN 2 and 3

SELECT nomeFROM clienteWHERE cod BETWEEN 2 and 3

BarcoSaboneteAbacaxi

descricao

PedroTânia

nome

José Simão de Paula Pinto61

uOperador HAVING

n O operador HAVING deverá ser utilizado em conjuntocom a declaração SELECT e sua função será a deestabelecer um critério extra de agrupamento ouseleção de valores, quando utilizando-se a cláusulaGROUP BY. Pode-se entender a declaração HAVINGcomo sendo uma cláusula WHERE para a declaraçãoGROUP BY.

José Simão de Paula Pinto62

uExemplo de uso do operador HAVING

SELECT descricao, unidades=sum(qtdade)FROM produto, vendaWHERE produto.cod = venda.produtoGROUP BY descricaoHAVING sum(qtdade) > 12

SELECT descricao, unidades=sum(qtdade)FROM produto, vendaWHERE produto.cod = venda.produtoGROUP BY descricaoHAVING sum(qtdade) > 12

unidadesdescricao

13Sabonete

José Simão de Paula Pinto63

Práticada

Linguagem de Consulta Estruturada

Exercícios de fixação

José Simão de Paula Pinto64

uExercí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 equantidade) 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 Pinto65

Comandosda

Linguagem de Consulta Estruturada

Stored Procedures

José Simão de Paula Pinto66

uSTORED PROCEDURES

n Stored Procedures, ou procedimentos armazenados,são como que pequenos programas, escritos emlinguagem SQL, e ficam armazenados no gerenciadorde banco de dados.

n O servidor de bancos de dados realiza uma pré-compilação dos procedimentos, e armazena-os emmemória cache após a sua primeira execução, demaneira que tendem a ser / tornar-se mais rápidos que aexecução de declarações com mesma finalidade a partirdo cliente.

José Simão de Paula Pinto67

uCriaçã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 ASSELECT * FROM cliente

l Para sua execução, basta declarar o nome doprocedimento, neste exemplo TodosClientes

José Simão de Paula Pinto68

uSTORED PROCEDURES com parâmetros

n Podemos enviar parâmetros para uma storedprocedured, desde que ela tenha sido declarada demaneira a recebê-lo.

n Os parâmetros são declarados por meio do uso dosímbolo @ seguido do nome da variável. Deve-seinformar também o tipo de dados que será tratado:

l @nome TipoDeDado

n Os parâmetros (de entrada) são informados antes douso da palavra reservada AS, na declaração da storedprocedure.

José Simão de Paula Pinto69

uExemplo de STORED PROCEDURE com parâmetro

CREATE PROCEDURE QualNome @codigo int ASSELECT cod, nomeFROM clienteWHERE cod = @codigo

CREATE PROCEDURE QualNome @codigo int ASSELECT cod, nomeFROM clienteWHERE cod = @codigo

nomecod

João5

QualNome 5QualNome 5

José Simão de Paula Pinto70

uVariáveis em STORED PROCEDURES

n Podemos utilizar variáveis dentro de uma storedprocedure, desde que elas sejam previamentedeclaradas.

n A declaração ocorre dentro do corpo da storedprocedure, utilizando-se a palavra reservada DECLAREe informando um nome de variável (precedido dosímbolo @) e o tipo de dados que ela conterá.

l DECLARE @nome TipoDeDado

José Simão de Paula Pinto71

uExemplo de STORED PROCEDURE com variável

CREATE PROCEDURE Total @codigo int, @quantos int ASDECLARE @saida moneySELECT @saida = @quantos * (SELECT valor FROM preco

WHERE cod = @codigo)SELECT ‘Preço total’ = @saida

CREATE PROCEDURE Total @codigo int, @quantos int ASDECLARE @saida moneySELECT @saida = @quantos * (SELECT valor FROM preco

WHERE cod = @codigo)SELECT ‘Preço total’ = @saida

Preço total

20.00

Total 3, 10Total 3, 10

José Simão de Paula Pinto72

uAlgumas 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 storedprocedure passada em.

l “parâmetro” SP_HELP TodosClientes - exibe oconteúdo da stored procedure “TodosClientes”.

José Simão de Paula Pinto73

Práticada

Linguagem de Consulta Estruturada

Exercícios de fixação

José Simão de Paula Pinto74

uExercí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 passadoseu código para o procedimento.

l Retornar quantos itens já foram vendidos de umproduto, e sua descrição, desde que passado seucódigo para o procedimento.