Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 José Simão de Paula Pinto 3 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 Pinto 4 uAcesso 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 5 uO Modelo de Entidades e Relacionamentos Existe comoExiste como ExemplosExemplos EntidadesEntidadesEntidades RelacionamentosRelacionamentosRelacionamentos AtributosAtributosAtributos TabelasTabelas Informação de um cliente; informação de um pedido Informação de um cliente; informação de um pedido Colunas ou Tabelas Colunas ou Tabelas Pedidos de um cliente Pedidos de um cliente Colunas (ou Campos) numa Tabela Colunas (ou Campos) numa Tabela Nome, Endereço, Telefone do cliente Nome, Endereço, Telefone do cliente José Simão de Paula Pinto 6 identificador nome endereço telefone … … ... 1001 1002 1003 1004 1005 1006 João Alberto Franciso Maria Sônia Roberto … … . … … . … … .. … … .. … … ... … … … . 5554444 4687999 NULL 5678900 0988855 NULL ~~~ ~~~ ~~~ ~~~ ~~~ 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 (Primary Key) n Colunas: atributos José Simão de Paula Pinto 7 uRelacionamentos identificador nome … … … . … … … .. … … . … … … … .. 1001 1002 1008 João Alberto. Wilson S… .. S… .. … … . … . … . … . 98022 98022 98026 NULL 206-555-1212 NULL 05 Jun 1992 07 Ago 1992 03 Mar 1993 clientesclientes PK NN NN NN NN numero cliente produto 1 1 2 1002 1001 1001 PedidosPedidos PK PK,FK, NN NN 567 566 122 José Simão de Paula Pinto 8 uSQL - “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 9 Comandos da Linguagem de Consulta Estruturada Definição de dados - DDL José Simão de Paula Pinto 10 uCriar 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 11 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 Pinto 12 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 seu conteúdo do banco de dados especificado ou em uso. Não existe volta ! Use com cuidado ! José Simão de Paula Pinto 13 uExemplo de deleção de tabela - DROP TABLE ANTES telefone João Alberto Maria Francisco 445-0988 465-98-87 789-9877 null nome DEPOIS DROP TABLE clientesDROP TABLE clientes José Simão de Paula Pinto 14 Comandos da Linguagem de Consulta Estruturada Manipulação de dados - DML José Simão de Paula Pinto 15 uObtendo 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 16 SELECT nome,telefone FROM clientes SELECT nome,telefone FROM clientes nome telefone João Alberto Maria Francisco 445-0988 465-98-87 789-9877 null uExemplo do comando SELECT José Simão de Paula Pinto 17 SELECT nome,telefone FROM clientes WHERE nome = ‘João’ SELECT nome,telefone FROM clientes WHERE nome = ‘João’ nome telefone João 445-0988 uExemplo do comando SELECT condicional José Simão de Paula Pinto 18 uAdicionando 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 19 INSERT clientes (nome,telefone) VALUES (Sônia, null) INSERT clientes (nome,telefone) VALUES (Sônia, null) uExemplo do comando INSERT telefone João Alberto Maria Francisco Sônia 445-0988 465-98-87 789-9877 null null nome ANTES telefone João Alberto Maria Francisco 445-0988 465-98-87 789-9877 null nome DEPOIS José Simão de Paula Pinto 20 uAlterando 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 21 UPDATE clientes SET telefone = ”882-3344” WHERE nome = ”Sônia” UPDATE clientes SET telefone = ”882-3344” WHERE nome = ”Sônia” uExemplo do comando UPDATE telefone João Alberto Maria Francisco Sônia 445-0988 465-98-87 789-9877 null 882-3344 nome ANTES DEPOIS telefone João Alberto Maria Francisco Sônia 445-0988 465-98-87 789-9877 null null nome José Simão de Paula Pinto 22 uApagando 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 23 telefone João Alberto Maria Francisco Sônia 445-0988 465-98-87 789-9877 null 882-3344 nome ANTES telefone João Alberto Maria Francisco 445-0988 465-98-87 789-9877 null nome DEPOIS DELETE clientes WHERE nome = ”Sônia” DELETE clientes WHERE nome = ”Sônia” uExemplo do comando DELETE condicional José Simão de Paula Pinto 24 uExemplo de comando DELETE sem condição ! telefone João Alberto Maria Francisco Sônia 445-0988 465-98-87 789-9877 null 882-3344 nome ANTES telefonenome DEPOIS DELETE clientesDELETE clientes José Simão de Paula Pinto 25 uResumo dos comandos de manipulação vistos nSELECT colunas FROM tabela WHERE condição n INSERT tabela VALUES ( conteúdo a armazenar ) nUPDATE tabela SET coluna =novo conteúdo WHERE condição nDELETE tabela WHERE condição José Simão de Paula Pinto 26 Prática da Linguagem de Consulta Estruturada Exercícios de fixação José Simão de Paula Pinto 27 uExercício - Criação de tabelas nomecod descricaocod valorcod produtocomprador qtdade n cliente n produto n preco n venda José Simão de Paula Pinto 28 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 Pinto 29 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 Pinto 30 uExercício - Inserção de valores descricaocod Barco Sabonete Abacaxi 1 2 3 nomecod Ana Pedro Tânia Maria João 1 2 3 4 5 José Simão de Paula Pinto 31 uExercício - Inserção de valores valorcod 500.80 32.89 2.00 1 2 3 produtocomprador qtdade 3 1 2 1 4 2 1 8 5 1 10 1 1 2 2 3 3 1 José Simão de Paula Pinto 32 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 Pinto 33 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 Pinto 34 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 Pinto 35 uResposta - Selecionar todos os clientes SELECT nome FROM clienteSELECT nome FROM cliente Ana Pedro Tânia Maria João nome José Simão de Paula Pinto 36 uResposta - Selecionar todos os produtos SELECT descricao FROM produtoSELECT descricao FROM produto Barco Sabonete Abacaxi descricao José Simão de Paula Pinto 37 uResposta - Selecionar todos os preços SELECT valor FROM precoSELECT valor FROM preco 500.80 32.89 2.00 valor José Simão de Paula Pinto 38 uResposta - Selecionar todas as vendas efetuadas SELECT * FROM vendaSELECT * FROM venda ??? produtocomprador qtdade 3 1 2 1 4 2 1 8 5 1 10 1 1 2 2 3 3 1 José Simão de Paula Pinto 39 Comandos da Linguagem de Consulta Estruturada Classificação, comparações, junção e operadores agregadores José Simão de Paula Pinto 40 uOperador 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 41 uExemplo do uso de ORDER BY Ana João Maria Pedro Tânia nome ASC SELECT nome FROM cliente ORDER BY nome SELECT nome FROM cliente ORDER BY nome Tânia Pedro Maria João Ana nome DESC SELECT nome FROM cliente ORDER BY nome DESC SELECT nome FROM cliente ORDER BY nome DESC José Simão de Paula Pinto 42 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 Pinto 43 uExemplo do uso do operador igual (=) SELECT nome FROM cliente WHERE cod = 4 SELECT nome FROM cliente WHERE cod = 4 Maria nome José Simão de Paula Pinto 44 uExemplo do uso do operador diferente ( <> ou != ) Ana Pedro Tânia João nome SELECT nome FROM cliente WHERE cod <> 4 SELECT nome FROM cliente WHERE cod <> 4 José Simão de Paula Pinto 45 uExemplo do uso do operador LIKE Ana Tânia Maria nome SELECT nome FROM cliente WHERE nome LIKE ‘%a’ SELECT nome FROM cliente WHERE nome LIKE ‘%a’ José Simão de Paula Pinto 46 uOperadores 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 47 uExemplo de uso do operador AND nome SELECT nome FROM cliente WHERE cod > 40 AND nome = ‘Maria’ SELECT nome FROM cliente WHERE cod > 40 AND nome = ‘Maria’ José Simão de Paula Pinto 48 uExemplo do uso do operador OR Maria nome SELECT nome FROM cliente WHERE cod > 40 OR nome = ‘Maria’ SELECT nome FROM cliente WHERE cod > 40 OR nome = ‘Maria’ José Simão de Paula Pinto 49 uExemplo do uso dos operadores AND e OR juntos Pedro Maria nome SELECT nome FROM cliente WHERE cod < 3 AND nome LIKE ‘%o’ OR nome = ‘Maria’ SELECT nome FROM cliente WHERE cod < 3 AND nome LIKE ‘%o’ OR nome = ‘Maria’ José Simão de Paula Pinto 50 uJunçã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 51 uExemplo de junção - JOIN descricaocod Barco Sabonete Abacaxi 1 2 3 valorcod 500.80 32.89 2.00 1 2 3 SELECT descricao, valor FROM produto, preco WHERE produto.cod = preco.cod SELECT descricao, valor FROM produto, preco WHERE produto.cod = preco.cod valordescricao 500.80 32.89 2.00 Barco Sabonete Abacaxi José Simão de Paula Pinto 52 uOperadores de agregação MIN Retorna o menor valor MAX Retorna o maior valor COUNT Retorna a quantidade de valores AVG Retorna a média dos valores SUM Retorna a soma dos valores José Simão de Paula Pinto 53 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 Pinto 54 uAgrupamento / Subtotais - GROUP BY n Este comando permite que a apresentação dos dados retornados da consulta seja agrupada de acordo com uma determinada condição, digamos a soma dos valores vendidos para cada produto. É utilizado em conjunto com o comando SELECT. n Uso: SELECT colunas FROM tabela WHERE condição GROUP BY coluna ou agregado José Simão de Paula Pinto 55 uExemplo de agrupamento - GROUP BY SELECT descricao, unidades=sum(qtdade) FROM produto, venda WHERE produto.cod = venda.produto GROUP BY descricao SELECT descricao, unidades=sum(qtdade) FROM produto, venda WHERE produto.cod = venda.produto GROUP BY descricao unidadesdescricao 11 2 13 Abacaxi Barco Sabonete José Simão de Paula Pinto 56 uOperador DISTINCT n O operador DISTINCT possibilita que uma consulta retorne valores únicos, semrepetições, para a coluna de dados.Este operador deve ser utilizado em conjunto com a declaração SELECT. n Uso: SELECT DISTINCT (coluna) FROM tabela WHERE condição José Simão de Paula Pinto 57 uExemplo do uso do operador DISTINCT Barco Sabonete Sabonete Abacaxi Abacaxi Barco descricao SEM usar DISTINCT SELECT descricao FROM produto, venda WHEREproduto.cod = venda.produto SELECT descricao FROM produto, venda WHEREproduto.cod = venda.produto Abacaxi Barco Sabonete descricao Usando DISTINCT SELECT DISTINCT (descricao) FROM produto, venda WHEREproduto.cod = venda.produto SELECT DISTINCT (descricao) FROM produto, venda WHEREproduto.cod = venda.produto José Simão de Paula Pinto 58 uOperadores IN e BETWEEN n 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 expressão NOT IN). n BETWEEN = para testar se um valor está entre uma determinada faixa de valores. José Simão de Paula Pinto 59 uExemplo do uso do operador IN SELECT descricao FROM produto WHERE descricao IN (‘Abacaxi, ‘Sabonete’) SELECT descricao FROM produto WHERE descricao IN (‘Abacaxi, ‘Sabonete’) Sabonete Abacaxi descricao José Simão de Paula Pinto 60 uExemplo do uso do operador BETWEEN SELECT nome FROM cliente WHERE cod BETWEEN 2 and 3 SELECT nome FROM cliente WHERE cod BETWEEN 2 and 3 Barco Sabonete Abacaxi descricao Pedro Tânia nome José Simão de Paula Pinto 61 uOperador 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 62 uExemplo de uso do operador HAVING SELECT descricao, unidades=sum(qtdade) FROM produto, venda WHERE produto.cod = venda.produto GROUP BY descricao HAVING sum(qtdade) > 12 SELECT descricao, unidades=sum(qtdade) FROM produto, venda WHERE produto.cod = venda.produto GROUP BY descricao HAVING sum(qtdade) > 12 unidadesdescricao 13Sabonete José Simão de Paula Pinto 63 Prática da Linguagem de Consulta Estruturada Exercícios de fixação José Simão de Paula Pinto 64 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 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 65 Comandos da Linguagem de Consulta Estruturada Stored Procedures José Simão de Paula Pinto 66 uSTORED 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 67 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 AS SELECT * FROM cliente l Para sua execução, basta declarar o nome do procedimento, neste exemplo TodosClientes José Simão de Paula Pinto 68 uSTORED 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 69 uExemplo de STORED PROCEDURE com parâmetro CREATE PROCEDURE QualNome @codigo int AS SELECT cod, nome FROM cliente WHERE cod = @codigo CREATE PROCEDURE QualNome @codigo int AS SELECT cod, nome FROM cliente WHERE cod = @codigo nomecod João5 QualNome 5QualNome 5 José Simão de Paula Pinto 70 uVariá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 71 uExemplo de STORED PROCEDURE com variável CREATE PROCEDURE Total @codigo int, @quantos int AS DECLARE @saida money SELECT @saida = @quantos * (SELECT valor FROM preco WHERE cod = @codigo) SELECT ‘Preço total’ = @saida CREATE PROCEDURE Total @codigo int, @quantos int AS DECLARE @saida money SELECT @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 Pinto 72 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 stored procedure passada em. l “parâmetro” SP_HELP TodosClientes - exibe o conteúdo da stored procedure “TodosClientes”. José Simão de Paula Pinto 73 Prática da Linguagem de Consulta Estruturada Exercícios de fixação José Simão de Paula Pinto 74 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 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.
Compartilhar