Documente Academic
Documente Profesional
Documente Cultură
SQL
Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
1
Reviso
Servidores de arquivos x Gerenciadores de Bancos de Dados
u Viso Geral
n n
Sistemas de Arquivos x Banco de Dados Relacional Conceitos Bsicos de Bancos de Dados Relacional
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
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
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
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
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.
Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
9
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.
Permite apagar uma tabela (no somente o contedo, mas a tabela em si) de um banco de dados. Palavras chave:
l
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 !
ANTES nome Joo Alberto Maria Francisco telefone 445-0988 465-98-87 789-9877 null
DEPOIS
Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
14
n n
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
nome Joo
telefone 445-0988
n n
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.
ANTES nome Joo Alberto Maria Francisco telefone 445-0988 465-98-87 789-9877 null nome
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.
n n
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) !
ANTES nome Joo Alberto Maria Francisco Snia telefone 445-0988 465-98-87 789-9877 null 882-3344 nome
ANTES nome Joo Alberto Maria Francisco Snia telefone 445-0988 465-98-87 789-9877 null 882-3344 nome
DEPOIS telefone
FROM WHERE
colunas tabela condio tabela ( contedo a armazenar ) tabela coluna = novo contedo condio tabela condio
Jos Simo de Paula Pinto
n INSERT
n UPDATE
n DELETE
25
Exerccios de fixao
Prtica
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
26
cliente
cod
nome
produto
cod
descricao
preco
cod
valor
venda
comprador
produto
qtdade
CREATE TABLE cliente ( cod INT, nome CHAR(20) ) CREATE TABLE produto ( cod INT, descricao CHAR(20) )
CREATE TABLE preco ( cod INT, valor MONEY ) CREATE TABLE venda ( comprador INT, produto INT, qtdade INT )
Jos Simo de Paula Pinto
29
cod
1 2 3
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
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
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
Selecionar todos os clientes Selecionar todos os produtos Selecionar todos os preos Selecionar todos os registros das vendas efetuadas
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
Comandos
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
39
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)
SELECT nome SELECT nome FROM cliente FROM cliente ORDER BY nome DESC ORDER BY nome DESC
DESC
u Operadores de comparao
= > < >= <= <> ou != LIKE Igual Maior Menor Maior ou igual Menor ou igual Diferente ou no igual Parecido
nome Maria
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
nome nome cliente cliente cod > 40 cod > 40 nome = Maria Maria nome =
nome nome cliente cliente cod > 40 cod > 40 nome = Maria Maria nome =
nome nome cliente cliente cod < 3 cod < 3 nome LIKE %o %o nome LIKE nome = Maria Maria nome =
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
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
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
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
unidades 11 2 13
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
SELECT DISTINCT (descricao) SELECT DISTINCT (descricao) FROM produto, venda FROM produto, venda WHEREproduto.cod = venda.produto WHEREproduto.cod = venda.produto
Usando DISTINCT
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.
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.
descricao Sabonete
unidades 13
Exerccios de fixao
Prtica
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
63
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
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.
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
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
QualNome 5 QualNome 5
cod 5
nome Joo
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
SP_WHO - mostra quem est usando o servidor. SP_HELP - mostra objetos do banco de dados. SP_HELP parmetro - mostra caractersticas de parmetro.
l
72
Exerccios de fixao
Prtica
da Linguagem de Consulta Estruturada
Jos Simo de Paula Pinto
73
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.