Baixe o app para aproveitar ainda mais
Prévia do material em texto
Projeção em SQL APRESENTAÇÃO Atualmente, vive-se em uma sociedade cada vez mais orientada a dados e, com isso, existe uma grande demanda por tecnologias que permitem o gerenciamento e a manipulação desses dados. Entre essas possibilidades, muitas ferramentas em uso utilizam Sistemas de Gerenciamento de Banco de Dados (SGBDs). No SGBD, entre outros recursos, é possível criar tabelas para armazenar os dados e, se for necessário recuperá-los, desenvolver consultas na linguagem SQL. A SQL tem como parte dos seus fundamentos a teoria das operações da álgebra relacional. Entre as operações básicas, existe a Projeção, que permite expressar quais colunas podem ser apresentadas para uma tabela de interesse. Nesta Unidade de Aprendizagem, você vai aprender a formalização teórica para a operação de projeção em álgebra relacional. Além disso, vai compreender como a projeção é utilizada em banco de dados relacionais. Por fim, verá alguns exemplos práticos de como essa operação é implementada no SGBD PostgreSQL. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Definir a operação de projeção em álgebra relacional.• Exemplificar a operação de projeção em banco de dados relacional.• Implementar a operação de projeção em SQL.• DESAFIO Muitos softwares em uso, atualmente, utilizam banco de dados relacionais para gerenciar e armazenar os dados de interesse. Portanto, o conhecimento de operações que permitam a consulta desses dados é de extrema importância tanto para operacionalizar o software como para auxiliar gestores na tomada de decisão com base na análise dos dados. Você foi contratado para trabalhar como desenvolvedor de sistemas para um cliente que realiza vendas de produtos de esporte em lojas distribuídas em cinco endereços. Essa empresa utiliza o SGBD PostgreSQL, considerando que você tem acesso às tabelas VENDAS e PRODUTOS e suas respectivas colunas entre parênteses. VENDAS (ID_VENDA, ID_CLIENTE, ID_LOJA, ID_VENDEDOR, NR_ITENS, VALOR, DT_OPERACAO). PRODUTOS (ID_PRODUTO, FORNECEDOR, DESCRICAO, ESPORTE, NR_ESTOQUE). O time de gestores está avaliando algumas métricas e estratégias de vendas e solicitou que você desenvolva consultas em SQL que retornem as seguintes relações: (A) Lista de todas as vendas com valor maior que 800 reais realizadas na loja de código 1. As informações de interesse a serem projetas (em ordem) são: número identificador do vendedor; total do valor da venda; e data da venda. E a ordem de apresentação dos elementos deve ser do maior valor vendido para o menor. (B) Lista de todos os clientes que totalizaram compras com valor igual e maior que 600 reais. As informações de interesse a serem projetas (em ordem) são: número identificador do cliente; data da compra; loja em que foi feita; número de itens comprados; e valor da compra. E a ordem de apresentação dos elementos deve ser de tal forma que facilite a visualização de todas as compras realizadas pelo mesmo cliente. (C) Lista de todas as categorias esportivas em que há produtos disponíveis. Essa relação será utilizada como lista de opções de um relatório digital que está sendo desenvolvido. A ordem de apresentação dos elementos deve ser ascendente da descrição das categorias. Observações: Na base de dados, as vendas são armazenadas sem a indicação da moeda e com uso de ponto para indicar os centavos. Por exemplo: “120.34”. Além da operação de projeção (cláusula "SELECT"), você precisará combinar a operação de seleção (cláusula “WHERE”). O comando para ordenação também será necessário ("ORDER BY"). Sendo assim, você deverá utilizar a sintaxe válida de SQL, ou seja, de forma que sua consulta possa ser executada no SGBD PostgreSQL sem erros de interpretação. Obviamente, aqui, devem ser consideradas as prévias criações das tabelas, a inserção dos dados e tudo o que for necessário para operacionalizar as consultas reais. INFOGRÁFICO Há duas operações relacionais classificadas como unárias por ocorrerem sobre relações isoladas. São elas: projeção e seleção. Essas operações podem, inicialmente, causar alguma confusão devido às suas similaridades. No Infográfico, você verá a comparação entre as duas operações por meio da apresentação de pontos em comum e, principalmente, das diferenças entre elas. CONTEÚDO DO LIVRO A álgebra relacional é composta por um conjunto de operações usadas para manipular relações como um todo. Uma dessas operações é a projeção. Por meio dela, é possível expressar quais atributos de interesse se deseja recuperar de determinada relação. Por sua vez, uma relação pode ser entendida como um conjunto de elementos ou uma tabela de dados. Sendo assim, esse é um conceito de suma importância para consultas em banco de dados. No capítulo Projeção em SQL, da obra Consultas em banco de dados, você conhecerá a operação de projeção em álgebra relacional e sua relação com consultas em banco de dados relacionais. Além disso, alguns casos serão apresentados para melhor ilustrar as possibilidades de uso do SGBD PostgreSQL. Boa leitura. CONSULTAS EM BANCO DE DADOS Alessandra Maciel Paz Milani Projeção em SQL Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Definir a operação de projeção em álgebra relacional. � Exemplificar a operação de projeção em banco de dados relacional. � Implementar a operação de projeção em SQL. Introdução Você já deve ter escutado que, além dos conceitos do modelo de dados para definir a estrutura do banco de dados, será necessário um conjunto básico de operações para manipulá-lo, conhecido, no modelo relacional, como álgebra relacional (ELMASRI; NAVATHE, 2011). Por conseguinte, há diferentes operações fundamentais na álgebra relacional, como seleção, projeção, produto cartesiano, união, etc. Neste capítulo, você conhecerá a operação de projeção em álgebra relacional, identificará a operação de projeção em banco de dados re- lacionais por meio de diversos exemplos conceituais e compreenderá como implementar a operação de projeção em SQL no SGBD PostgreSQL. 1 Projeção em álgebra relacional É importante lembrar que a álgebra relacional oferece um alicerce formal para as operações do modelo relacional, por meio dos quais o usuário conseguirá especificar as solicitações de recuperação para conjuntos ou relações. Note, ainda, que “[...] as entradas e as saídas de uma consulta são relações [...]” (RAMAKRISHNAN; GEHRKE, 2011, p. 84). Elmasri e Navathe (2011) apontam que as operações da álgebra relacional podem ser divididas em dois grupos: um inclui o conjunto de operações da teoria de conjunto da matemática (união, intersecção, diferença de conjunto e produto cartesiano), e o outro consiste em operações desenvolvidas espe- cificamente para banco de dados relacionais, como projeção e seleção. Além disso, uma vez que a projeção trabalha apenas com um conjunto de entrada, ela é classificada como uma operação relacional unária, ou seja, trata-se de uma função com somente uma variável de entrada. Em seu dicionário de banco de dados relacionais, Date (2016) define sim- plificadamente projeção de como: deixe a relação r ter atributos chamados A1, A2, ..., An. Então, e somente então, a expressão r{A1, A2, ..., An} denota a projeção de r em {A1, A2, ..., An} e retorna a relação com o cabeçalho {A1, A2, ..., An} e o corpo constituído por todas as tuplas t, de modo que exista uma tupla em r que tenha o mesmo valor para os atributos A1, A2, ..., An, como t tem. Outra maneira de formalizar a operação de projeção, representada pela letra grega pi (π), seria utilizarmos a seguinte expressão: π<Lista de atributos> (Relação) Então, por exemplo, considere a seguinte relação: Funcionarios = {matricula, nome, endereco, data _ nascimento, estado _ civil} E esta instância: Funcionarios = {1001, Ana, Rua Florida, 12/05/1970, Casado,1002, Carlos, Rua Tulipa, 22/06/1990, Solteiro, 1003, João, Avenida Flor, 01/02/1975, Casado, 1004, Rubens, Rua Violeta, 02/10/1980, Casado} Projeção em SQL2 Suponha que seja necessário buscar uma relação que apresente a matri- cula, o nome e o estado_civil dos funcionários — a formalização dessa operação poderá ser representada como: πmatrícula, nome, estado civil (Funcionários) Por fim, o retorno dessa operação de projeção será a relação Funcionarios2={matricula, nome, estado_civil} contendo as seguintes tuplas: Funcionarios2 = {1001, Ana, Casado, 1002, Carlos, Solteiro, 1003, João, Casado, 1004, Rubens, Casado} Outra analogia para entender esse conceito reside no fato de que a projeção produzirá como saída um subconjunto vertical do conjunto sob análise. Além disso, intuitivamente, você pode visualizar essa estrutura de dados como uma tabela; portanto, podemos dizer que a operação de projeção (π) selecionará colunas de interesse dessa tabela, como exemplificado na Figura 1. Figura 1. Representação visual da operação de projeção. 3Projeção em SQL A seguir, observaremos como se comportam as buscas com projeção de dados por exemplos em tabelas. 2 Exemplos de projeção em banco de dados relacional Vamos conferir mais alguns exemplos para a operação de projeção em banco de dados, iniciando pelo caso de uma relação ou um conjunto, que aqui cha- maremos de tabela aluno, que contém dados de alunos. Nessa tabela, há seis atributos, ou colunas, listados a seguir: 1. id_aluno = número identificador do aluno; 2. nome = nome de registro do aluno; 3. nome_pref = nome preferencial do aluno; 4. data_nasc = data de nascimento; 5. sit_matr = situação de matrícula, onde 0 = Não Ativo e 1 = Ativo; 6. email = endereço eletrônico do aluno. Considere um caso no qual você precisa enviar uma mensagem de alerta por e-mail para todos os alunos. Com base no que já vimos neste capítulo, como poderíamos escrever uma expressão para essa consulta? E qual seria o resultado dessa busca considerando o exemplo da instância apresentada no Quadro 1? id_ aluno nome nome_ pref data_ nasc sit_ matr email 27001 João Gustavo Rico João Gustavo 12/04/1990 0 Jg_rico@ mail.com 27043 Luís Tadeu Marciano Marciano 26/08/1999 1 tadeum@ mail.com 27023 Otávio Nunes Santos Nunes 05/05/1998 1 o_nunes@ mail.com Quadro 1. Tabela para representação do conjunto de aluno (Continua) Projeção em SQL4 id_ aluno nome nome_ pref data_ nasc sit_ matr email 28056 Marta Azevedo Marta 10/06/1992 1 m.azevedo@ mail.com 28943 Michele Lima Toledo Mi 22/12/1995 0 mi_lt@ mail.com Quadro 1. Tabela para representação do conjunto de aluno (Continuação) A resposta para essa questão está apresentada na Figura 2, na qual há uma representação visual para ilustrar o problema discutido, relacionado à tabela aluno. Na sequência, são apresentados a formulação da operação de projeção em álgebra relacional e o resultado esperado para essa operação de projeção, indicado por meio de uma nova tabela, de coluna única (email), na qual aparece o endereço eletrônico para os alunos que constavam na tabela original. Figura 2. Representação visual para a operação de projeção da coluna email para a tabela aluno. 5Projeção em SQL Agora, suponha que você tem interesse em saber também o nome preferen- cial pelo qual o aluno gostaria de ser chamado. O que seria preciso alterar nessa operação de projeção para considerar esse atributo adicional? Simples! Basta adicionarmos o nome do atributo correspondente, quando a nova expressão fica da seguinte maneira: πnome_pref, email (aluno) A nova relação resultante para essa operação de projeção está apresentada no Quadro 2. NOME_PREF EMAIL João Gustavo jg_rico@mail.com Marciano tadeum@mail.com Nunes o_nunes@mail.com Marta m.azevedo@mail.com Mi mi_lt@mail.com Quadro 2. Resultado da operação de Projeção na tabela aluno, considerando o novo atributo a ser apresentado Outro exemplo seria considerar um conjunto de dados para clientes de uma loja de vendas pela internet. Em uma tabela chamada cliente_compra, 10 atributos foram criados para armazenar os dados dos clientes e de suas compras. Considerando os elementos da relação apresentada no Quadro 3, você consegue identificar qual seria a operação de projeção aplicada para gerar esse retorno? Projeção em SQL6 cp nome_cli dt_compra qtde_itens valor_total 12345678987 Gustavo Rico 10/03/2020 3 50 34125678943 Tadeu Marciano 10/03/2020 6 180 34561278956 Jardel Nunes 11/03/2020 2 600 34567891278 Joaquim Azevedo 11/03/2020 4 150 12563478990 Paulo Lima 12/03/2020 10 200 Quadro 3. Tabela para representação do conjunto cliente_compra resultante de uma operação de projeção Para obtermos o retorno apresentado no Quadro 3, precisaremos forma- lizar uma operação de projeção que indique nosso interesse em apresentar as mesmas colunas que aparecem na tabela resultante; portanto, deveremos escrever o nome dessas cinco colunas: cpf_cli, nome_cli, dt_com- pra, qtde_itens, valor_total. Ainda, precisaremos informar qual é a tabela de origem para recuperar esses dados, ou seja, incluir o nome da cliente_compra. Dessa maneira, podemos formular a seguinte expres- são em álgebra relacional, lembrando-se de iniciar com a letra pi, já que ela representa a operação de projeção. π CPF_CLI, NOME_CLI, DT_COMPRA, QTDE_ITENS, VALOR_TOTAL (CLIENTE_COMPRA) 3 Implementação de projeção em SQL Agora que você já está familiarizado com a operação de projeção, veremos como ela pode ser implementada na linguagem prática para o modelo rela- cional. Vale ressaltar que a linguagem SQL (Structured Query Language) foi desenvolvida com base em linguagens de consultas formais, entre elas a álgebra relacional. Assim, você consegue identificar qual seria a parte correspondente 7Projeção em SQL em uma instrução SQL para a operação de projeção? Na Figura 3, observamos como se daria a implementação SQL correspondente ao primeiro exemplo deste capítulo, da relação de funcionários. Figura 3. Exemplo de problema, expressão da álgebra relacional e sua conversão para SQL. A partir desse momento, usaremos em nossos exemplos o Sistema de Gerenciamento de Banco de Dados (SGBD) PostgreSQL (POSTGRE, 2020). Para apresentarmos as execuções dos comandos de consulta e dos respectivos resultados, usaremos o software gráfico pgAdmin, disponibilizado gratuita- mente junto ao pacote de instalação do PostgreSQL. Note ainda que, para esse exemplo funcionar, precisamos ter criado antes uma tabela funcionarios e, então, inserir alguns elementos de exemplo. Nesse processo, ajustaremos os nomes dos atributos para remover acentos or- tográficos e espaços em branco entre as palavras. Assim, você pode considerar o seguinte comando para a criação da tabela de funcionários: CREATE TABLE public.funcionarios (matricula varchar(20), nome varchar(20), endereco varchar(20), dt _ nascimento date, es- tado _ civil varchar(20)); Projeção em SQL8 Depois, alguns dados de funcionários podem ser adicionados à tabela criada. No nosso exemplo, adicionamos informações para quatro funcionários, conforme os comandos indicados a seguir: INSERT INTO public.funcionarios(matricula, nome, endereco, dt _ nascimento, estado _ civil)VALUES ('1001', 'Ana', 'Rua Flo- rida', to _ date('12-05-1970','DD-MM-YYYY'), 'Casado'); INSERT INTO public.funcionarios(matricula, nome, endereco, dt _ nascimento, estado _ civil)VALUES ('1002', Carlos, 'Rua Tu- lipa, to _ date('22-06-1990','DD-MM-YYYY'), 'Solteiro'); INSERT INTO public.funcionarios(matricula, nome, endereco, dt _ nascimento, estado _ civil)VALUES ('1003', 'João', 'Avenida Flor', to _ date('01-02-1975','DD-MM-YYYY'), 'Casado'); INSERT INTO public.funcionarios(matricula, nome, endereco, dt _ nascimento, estado _ civil)VALUES ('1004', 'Rubens', 'Rua Violeta', to _ date('02-10-1970','DD-MM-YYYY'), 'Casado'); Aofinal desse processo, temos disponível uma tabela de funcionários com colunas e linhas conforme indicado na Figura 4: no topo, aparece o comando SQL (iniciado com o comando SELECT), utilizado para a opera- ção de projetar todas as colunas e todas as possíveis linhas dessa tabela de funcionários; e, abaixo (com o título Data Output), o resultado da execução desse comando, em uma visão tabular, com todas as informações contidas na tabela funcionarios. Figura 4. Exemplo de implementação da operação de projeção em SQL no SGBD Post- greSQL. Nesse caso, é realizada uma consulta para apresentar os dados de todas as colunas da tabela de funcionários. 9Projeção em SQL Agora, confira na Figura 5, o detalhe para a implementação da operação de projeção em SQL do nosso problema de exemplo, o mesmo apresentado na Figura 3. No topo da imagem, aparece a linha correspondente ao comando SQL, para que sejam projetadas apenas duas colunas específicas, e, logo abaixo, consta a informação resultante dessa operação de projeção. Figura 5. Implementação da operação de projeção em SQL no SGBD PostgreSQL. Nesse caso, é realizada uma consulta para apresentar as informações contidas em duas colunas específicas: estado_civil e nome da tabela funcionarios. Em SQL, a projeção corresponderá à cláusula SELECT: você poderá esco- lher listar apenas alguns atributos da sua tabela, informando, assim, o nome de cada um deles na cláusula SELECT, como no exemplo da Figura 5, ou, então, indicar que tem a intenção de projetar todos os atributos por meio do asterisco, como no exemplo da Figura 4. Projeção em SQL10 Apesar de a operação de projeção dispor de uma estrutura simples, na prática a maneira como você implementa o seu comando SELECT poderá impactar o desempenho da sua consulta. Por exemplo, o fato de você indicar que sua consulta deve projetar todas as colunas de uma tabela usando o asterisco “*” no lugar de apenas indicar aquelas colunas que sejam realmente o seu objeto de interesse pode resultar em um maior tempo de processamento para o SGBD retornar a consulta. Entre os motivos para isso, está a premissa de que, ao termos mais colunas projetadas, potencialmente teremos mais dados em escopo e, logo, mais “custo” para o SGBD. Evidentemente, essa questão dependerá muito de uma série de configurações do SGBD em uso, das características da sua tabela (número de colunas, tipos de dados, número de linhas, se índices de busca foram criados, etc.), da combinação da operação de projeção com outras operações relacionais e do problema em questão a que você precisa atender. Então, para alguns casos nos quais a consulta envolve uma tabela com poucas colunas e poucos dados, dificilmente o fato de solicitar a busca por todas as colunas causará um impacto perceptível aos usuários. Contudo, essa questão poderá ficar bastante evidente em cenários nos quais grandes volumes de dados estão sendo manipulados. Assim, como uma boa prática de desenvolvimento de consultas, principalmente quando da incorporação de uma solução a um sistema comercial, você deve considerar a indicação das colunas de interesse (somente). E, caso necessário, retornar todas colunas; então, ainda seria preferível que você indicasse explicitamente o nome de cada uma delas na sua cláusula SELECT (em vez de usar o “*”). A otimização de consulta é um tópico de estudo mais avançado, pois requerer o estudo prévio de outros temas, em especial as demais operações da álgebra relacional. Mas, se estiver curioso, pode consultar o capítulo 19 do livro de Elmasri e Navathe (2011), que está indicado na lista de referências deste capítulo. Além disso, considerando que você faça uma consulta para retornar somente o atributo estado_civil, você verá como resultado 4 linhas, uma para cada tupla; assim, aparecerão informações repetidas, como mostra a Figura 6. Esse não seria o resultado esperado para álgebra relacional. Então, por que isso aconteceu? Por questões de desempenho, o SGBD está configurado para realizar a consulta com o plano mais simples. Dessa maneira, ele não avalia duplicidades sem que seja requerido. 11Projeção em SQL Figura 6. Implementação em SQL no SGBD PostgreSQL para o exemplo da busca de funcionários com elementos duplicados. Para que as duplicidades não ocorram, você poderá utilizar o comando DISTINT logo após o SELECT e antes da lista de atributos. Por meio dessa especificação, o SGBD entenderá que precisa descartar duas ou mais linhas com os mesmos valores para as colunas em projeção, como exemplificado na Figura 7. Figura 7. Implementação em SQL no SGBD PostgreSQL para o exemplo da busca de funcionários com o uso de DISTINCT para que não retornem elementos duplicados. Observe que a ordem com que a colunas são informadas na cláusula SELECT será a mesma em que as informações serão apresentadas no conjunto resultante (veja o exemplo da Figura 5). No caso da escolha por todas as colunas, a ordem apresentada será a mesma na qual a tabela foi criada (veja o exemplo da Figura 4). Projeção em SQL12 Por fim, diferentes operações podem ser combinadas com a projeção, desde uma operação básica, como a seleção, que adicionará a cláusula WHERE ao comando SQL para que a consulta retorne apenas elementos que atendam à determinada condição, até operadores aritméticos, como um contador de ocorrências de elementos para uma coluna em especial. Contudo, por aqui encerramos a introdução à operação de projeção da álgebra relacional, com seus respectivos exemplos aplicados a tabelas e implementados em SQL. DATE, C. J. The new relational database dictionary: terms, concepts, and examples. Sebastopol: O’Reilly, 2016. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson Addison Wesley, 2011. POSTGRE. [Site]. 2020. Disponível em: https://www.Postgre.org/. Acesso em: 25 maio 2020. RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. Porto Alegre: AMGH, 2011. E-book. Leituras recomendadas MACHADO, F. N. R. Projeto e implementação de banco de dados. 3. ed. São Paulo: Érica, 2014. MANNINO, M. V. Projeto, desenvolvimento de aplicações e administração de banco de dados. 3. ed. Porto Alegre: AMGH, 2008. Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun- cionamento foi comprovado no momento da publicação do material. No entanto, a rede é extremamente dinâmica; suas páginas estão constantemente mudando de local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre qualidade, precisão ou integralidade das informações referidas em tais links. 13Projeção em SQL DICA DO PROFESSOR O uso de bancos de dados relacionais faz parte da realidade de muitas empresas dos mais variados negócios. Para fazer a consulta em banco de dados relacionais, o usuário pode usar operações escritas na linguagem SQL, que está baseada em conceitos da álgebra relacional, de maneira a recuperar os dados nas condições de interesse. Nesta Dica do Professor, você verá algumas aplicações da operação de projeção em SQL e dicas para garantir um desempenho mais eficiente da sua consulta. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) Há diferentes operações da álgebra relacional que são utilizadas em banco de dados relacionais. Entre as operações fundamentais, está a projeção, que, de maneira intuitiva, pode ser entendida como a operação que irá retornar uma relação baseada nas colunas de interesse de uma tabela. Assinale a alternativa que apresenta o conceito da operação de projeção da álgebra relacional: A) Select * Conjunto. B) Select A1, A2, An (*). C) π (Conjunto). D) π A1, A2, An (Conjunto). E) Projetar (A1, A2, An). 2) Você é professor e precisa listar a situação final de cada aluno (aprovado ou reprovado) em uma disciplina X. Para isso, criou uma expressão em álgebra relacional que projetou a seguinte relação: Alunos1 = { <10002, Aprovado>, <10003,Reprovado>, <10004, Aprovado>, <10005, Aprovado>, <10006, Aprovado>, <10007, Reprovado>, <10008, Aprovado> }. Considerando a seguinte estrutura de atributos para a relação original de Alunos: Alunos (Matrícula, Nome, Idade, Nota Prova, Nota Trabalho, Conceito Final). Qual expressão da operação de projeção produz a relação Alunos1 e qual a expressão correspondente para uma consulta SQL válida para ser executada no SGBD? Escolha a alternativa que contém as duas expressões: A) π Matrícula, Conceito Final (Alunos) e SELECT * FROM ALUNOS; B) π Matrícula, Conceito Final (Alunos) e SELECT MATRICULA, CONCEITO_FINAL FROM ALUNOS; C) π Matrícula, Conceito Final (Alunos) e SELECT MATRICULA, NOME, CONCEITO FROM ALUNOS; D) π <atributos> (Alunos) e SELECT * FROM ALUNOS; E) π Nome, Conceito Final (Alunos) e SELECT NOME, CONCEITO_FINAL FROM ALUNOS; Samuel está fazendo um levantamento de clientes frequentes em sua loja e deseja projetar uma relação dos clientes contendo informações na seguinte ordem: (1) Total de Compras, (2) Nome do cliente, (3) seu Email, (4) Endereço físico e (5) Número do 3) CPF do cliente. Ao desenvolver a consulta, ele também utilizou o comando SQL “ORDER BY” para ordenar a apresentação do resultado da sua projeção pelo valor dos elementos contidos na coluna correspondente ao total de compras do cliente. Sua intenção era que os clientes aparecessem do maior para o menor número total de compras. Para tanto, considera-se que a tabela no banco de dados do sistema da loja de Samuel que armazena essa informação foi criada da seguinte maneira: CREATE TABLE clientes ( cpf numeric, nome varchar(40), email varchar(20), endereco varchar(40), total_compras numeric) ) Assinale a alternativa que apresenta a consulta SQL desenvolvida pelo Samuel para gerar a relação de clientes planejada: A) SELECT * FROM clientes ORDER BY 1 DESC; B) SELECT * FROM clientes ORDER BY total_compras DESC; C) SELECT total_compras, * FROM clientes ORDER BY total_compras; D) SELECT total_compras, nome, email, endereco, cpf FROM clientes ORDER BY total_compras DESC; SELECT total_compras, cpf, nome, email, endereco FROM clientes ORDER BY E) total_compras DESC; 4) Carla precisa ligar para todos os seus fornecedores de painéis MDF para negociar novos pedidos. Considera-se o seguinte esquema de banco de dados: FORNECEDORES (ID, CNPJ, RAZAO_SOCIAL, NOME_COMERCIAL, ENDERECO, ESTADO, TELEFONE, FAX, EMAIL, MATERIAL). Assinale a alternativa que contém a consulta SQL para ser interpretada pelo SGBD e atender à necessidade de Carla: A) SELECT NOME, FONE FROM FORNECEDORES WHERE MATERIAL=’MDF’; B) SELECT <ATRIBUTOS> FROM FORNECEDORES WHERE MATERIAL=’MDF’; C) SELECT CNPJ, RAZAO_SOCIAL, NOME_COMERCIAL, ENDERECO, ESTADO, MATERIAL FROM FORNECEDORES; D) SELECT ID, EMAIL, FAX, TELEFONE, ENDERECO, MATERIAL FROM FORNECEDORES; E) SELECT NOME_COMERCIAL, TELEFONE FROM FORNECEDORES WHERE MATERIAL=’MDF’; Marcos é um analista de sistemas que foi solicitado para auxiliar na estratégia de vendas de uma loja de bazar com artigos variados. Todas as operações da loja, inclusive o registro das vendas, são armazenadas em um banco de dados relacional. Entre as inúmeras consultas que Marcos deverá realizar, uma delas deve apresentar as categorias dos itens vendidos durante o final de semana (que somam mais de 10 mil itens na tabela para o recorte de tempo selecionado para análise). A consulta implementada por Marcos resultou na seguinte relação de categorias para os itens vendidos: 5) CATEGORIA Infantil Ferragem Cozinha Decoração Casa Considera-se o seguinte esquema de banco de dados para a tabela sob consulta: VENDAS(ID_VENDAS, ID_VENDEDOR, ID_PRODUTO, CATEGORIA, VALOR, DT_VENDA, FINAL_SEMANA). Assinale a alternativa que corresponde ao comando SQL executado por Marcos para produzir esse resultado: A) SELECT * FROM VENDAS; B) SELECT * FROM VENDAS WHERE FINAL_SEMANA = ‘SIM’; C) SELECT CATEGORIA FROM VENDAS WHERE FINAL_SEMANA = ‘SIM’; D) SELECT DISTINCT CATEGORIA FROM VENDAS WHERE FINAL_SEMANA = ‘SIM’; E) SELECT *, DISTINCT CATEGORIA FROM VENDAS WHERE FINAL_SEMANA = ‘SIM’; NA PRÁTICA De maneira intuitiva, pode-se dizer que a operação de projeção da álgebra relacional produz um novo conjunto de elementos com base na escolha das colunas de uma tabela que deseja recuperar informações. Portanto, essa é uma operação fundamental para consultas em banco de dados. Neste Na Prática, você vai conhecer um estudo de caso de uma empreendedora que está expandindo seus negócios para vendas pela Internet. Para planejar e executar a campanha de fidelização dos primeiros clientes, ela precisa consultar sua base de dados. Conteúdo interativo disponível na plataforma de ensino! SAIBA MAIS Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Conceitos básicos para operações da álgebra relacional Neste site, você poderá ver seis operações da álgebra relacional explicadas de maneira resumida, o que pode ser um recurso interessante para comparar ou relembrar quais são essas operações fundamentais. Conteúdo interativo disponível na plataforma de ensino! Fundamentos de álgebra relacional e sua relação com o SQL Neste vídeo, você verá os fundamentos de álgebra relacional e sua relação com o SQL. Além da operação de projeção, coberta em detalhes, outras também são apresentadas: seleção, produto cartesiano, junção, união, interseção, diferença e divisão. Você acompanhará a teoria da álgebra relacional, bem como alguns exemplos práticos comparados com o SQL. Conteúdo interativo disponível na plataforma de ensino! Sistemas de Gerenciamento de Banco de Dados Para aprofundar seu conhecimento sobre o assunto, confira, nesta obra, de autoria de Ramakrishnan e Gehrke, o capítulo 4, dedicado à álgebra e aos cálculos relacionais. Tutorial para entender e exercitar SQL Este tutorial fornece instruções SQL fáceis de entender e permite que você pratique enquanto estiver aprendendo, usando um interpretador SQL on-line. Praticando seus comandos SQL e vendo resultados imediatos, você aprenderá rapidamente. Está disponível em inglês e em espanhol. Conteúdo interativo disponível na plataforma de ensino!
Compartilhar