sql server
Post on 23-Jul-2015
56 Views
Preview:
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.
top related