View Full Version: Dúvidas - Banco de Dados

concurseiros >>Tecnologia da Informação - TI >>Dúvidas - Banco de Dados


<< Prev | Next >>

LuizFranco- 07-28-2006
Dúvidas - Banco de Dados
Caros concurseiros ti, Será que alguém de vocês poderia me dizer qual a principal diferença entre triggers, stored procedures e view. Li numa prova que triggers é um tipo de stored procedures, isso não é meio estranho? :o Obrigaduuu. Luizfr

Bodisatva_br- 07-30-2006
Respondendo...
Oi Luiz Tudo bem ? Sem entrar muito em detalhes... Triggers - são comandos sql programados para serem executados quando ocorrer um determindo evento no banco de dados. Por exemplo, você pode programar uma trigger para executar quando um registro for inserido em uma determinada tabela. Stored procedure - também é uma sequência de comandos sql. A diferença para as triggers é que essa sequência não é executada quando ocorre um evento, e sim quando é chamada. Normalmente, a chamada às stored procedures estão inseridas no código do programa. View - como o nome dá a entender, é uma visão do banco de dados. Normalmente, quando uma determinada consulta ao banco é repedida diversas vezes na aplicação, cria-se no banco uma consulta e dá-se a ela um nome. Com isso, pode-se referenciar essa view como se fosse uma tabela do banco de dados. Os dados da view são atualizados sempre que as tabelas que a compõe sofrem alteração. Quanto à questão que você encontrou, seria bom postá-la aqui para o pessoal comentar. Espero ter ajudado. Grande abraço. Bodisatva.

ricvon- 08-04-2006
agradecendo
legal Bodisatva_br sempre tive essa duvida.... agora ja sei a diferenca entre trigger e stored procedure valeu mesmo

LuizFranco- 08-05-2006

Caro Bodisatva_br, a questão que eu vi sobre stored procedure e triggers é a seguinte: nº30, item III, da Prova de Analista de Planejamento e Orçamento/05/Esaf- "O trigger é um tipo de stored procedure chamado quando um evento particular ocorre". Essa alternativa foi dada como verdadeira. Caso alguém queira comentar... Abraços, Luiz.

Bodisatva_br- 08-06-2006
Trigger com tipo de stored procedure
Oi Luiz Realmente, eu nunca havia visto essa definição de trigger com sendo uma stored procedure (SP), nem em questões, nem em bibliografia. Mas se eu tivesse que responder em uma prova, eu marcaria verdadeira também. Se for pensar, o que difere uma SP de uma trigger é o meio pelo como o código é chamado para executar, mas ambos são igualmente procedures. Caso alguém tenha opinião diversa ou já tenha visto isso em algum lugar, seria bom comentar. Grande abraço a todos. Bodisatva.

Ju2- 08-07-2006

Concurseiros Guerreiros, Já que esta é a sala destinada a sanar dúvidas sobre banco de dados, gostaria de pedir a vocês que me esclareçam as seguintes dúvidas: 1º) Questão 54 de Analista do MPU/04/Esaf: Item II- "A função AVG calcula e retorna a média de valores da linha especificada. Só é possível utilizar essa função em linhas cujos campos sejam todos numéricos." Esta alternativa está incorreta, pelo gabarito da questão. Porém, não achei onde está o erro. alguém poderia me esclarecer? 2º) Questão 54 de Analista MPU/04/Esaf- Item III- "A instrução SUBSTRING ('Esta foi fácil' FROM 10 FOR 5) retorna a string 'facil'". Esta alternativa está correta, porém não entendi porque retorna a string 'facil'. Para mim não está nada fácil entender essa alternativa... Se alguém puder me ajudar a decifrá-la. 3º) Qual a finalidade da Cláusula WHENEVER? O que esta instrução retorna? 4º) Na linguagem SQL um INNER JOIN retorna todas as tuplas comuns às duas tabelas. Gostaria de saber o que as cláusulas RIGHT OUTER JOIN, LEFT OUTER JOIN e FULL OUTER JOIN retornam. Agradeço antecipadamente. Abraços, Ju2.

duwde- 08-07-2006

Sobre a 1a questao: Ela esta errado porque a funcao retorna o AVG retorna a media dos valores de uma determinada coluna, calculo esse feito usando-se as linhas determinadas. Ou seja, como ele afirmou ele estaria calculando a media de uma unica linha usando todas as colunas dessa linha, o que nao eh o caso. Sobre a 2a questao: FROM 10 FOR 5 quer dizer, comece no 10 caractere e a partir dai pegue os 5 primeiros caracteres, portanto dara a string "facil". Sobre a 3a questao: Nao conhecia ela, mas pelo que vi no google ela eh usada para determinar uma acao a ser tomada depenedndo do resultado de um comando sql subsequente, usado para tratamente de erros, etc. (Mas nunca usei, entao realmente nao posso garantir) Sobre a 4a questao: Bom essa eh bem teorica, ao inves de tentar de explicar com palavras eu achei um bom exemplo na internet, de uma olhada em: (SQL) De antemao de digo que os tipos os OUTER JOINS sao usados para resolver o problema dos campos nulos (tanto o left, right e full), de uma olhada na pagina que ela tem um exemplo otimo explicando isso. Caso tenha alguma duvida eh so falar !!

CyPh3r- 08-08-2006

Com relação à questão 4... O inner join faz a intersecção entre duas tabelas, retornando somente as linhas que "fechem" as chaves. Nesta situação, linhas de uma tabela A que não tenham correspondente na tabela B (e vice-versa) ficariam de fora do resultado. O que RIGHT OUTER JOIN, LEFT OUTER JOIN e FULL OUTER JOIN fazem é permitir a inclusão no resultado das linhas que não teriam correspondência na outra tabela. RIGHT traz as linhas da tabela B que "fechem" chave com A, mais as linhas de B sem correspondência na tabela A. Por sua vez LEFT retorna todas as linha da tabela A que "fechem" chave com B, mais as linhas de A sem correspondência na tabela B. O FULL traz todas as linhas das duas tabelas A e B que "fechem" a chave, mais as linhas sem correspondência na tabela oposta. Tabela A e B refere-se à ordem digitada no select em relação ao "=": "... ON tabela.campo = tabela.campo..." Espero ter ajudado sem complicar... T+

akasakai- 11-05-2006

Pessoal, Tenho uma dúvida em relação a questão da prova de Analista de Controle Externo - TCU – 2002, segue abaixo: 34- Analise as seguintes afirmações relativas a Conceitos e arquitetura de um SGBD: I. Toda a informação em um banco de dados relacional é apresentada no nível lógico por valores em tabelas; II. Os dados em um banco de dados relacional não podem ser logicamente acessíveis; III. Um SGBD relacional deve ter uma linguagem para definição, detalhamento e manipulação de dados; IV. Um SGBD relacional não pode permitir valores nulos em nenhum campo de suas tabelas. Indique a opção que contenha todas as afirmações verdadeiras. a) I e II b) II e III c) III e IV d) I e III e) II e IV Resposta: D Comentários: O item I é verdadeiro, pois citando Silberschatz “Logical level describes what data are stores in the database, and what relationships exists among the data.” O item II é falso pois os dados podem ser acessados sim no nível lógico, o DBA inclusive trabalha neste nível. O item III é considerado verdadeiro, porém polêmico, pois segundo consta nos livros sobre BD as linguagens existentes são: DDL (Data Definition Language) – Definição DML (Data manipulation Language) – Manipulação SDL – (Storage Definition Language) Armazenagem VDL – (Vision Definition Language) Visões DCL – (Data Control Language) Acesso DIL – (Data Integrity language) Integridade Contudo não há uma citação específica para o termo detalhamento. Consultei os seguintes livros atrás disso. Silberschatz – Database Systems Concepts Elmasri – Sistemas de Banco de Dados Date, C. J. - Introdução a sistemas de banco de dados Ramakrishnamn – Database Management Systems Paul Beynon-Davies – Database Systems O item IV é falso pois é permitido valores nulos nos campos que não foram definidos como chaves primárias. Alguém conhece algum livro ou texto que especifique essa linguagem de detalhamento que consta no Item III ????? Valeu Akasakai

akasakai- 11-05-2006

Outra dúvida ... Na prova de Auditor-Fiscal da Receita Federal - AFRF – 2003 A questão abaixo teria resposta correta no gabarito, mas o problema está na afirmação da questão informando que os símbolos < > são da linguagem SQL padrão, ou seja, ANSI 99 48- Em uma consulta a uma tabela em um banco de dados relacional usando-se a linguagem SQL padrão, o usuário utilizou como complemento o comando WHERE Nome LIKE ‘%’. Considerando que a sintaxe do comando executado está toda correta, o resultado da consulta irá trazer somente informações das linhas nas quais o campo Nome contenha dados que a) comecem com o caractere A ou com o caractere D. b) comecem com o caractere A seguido do caractere D. c) comecem com qualquer caractere alfabético contido entre A e D. d) tenham em seu conteúdo os caracteres de A a D. e) tenham em seu conteúdo os caracteres AD. Resposta: A Questão polêmica, no livro SQL Bible os símbolos < > servem para: “Matches any single character within the specified range or set of characters” Está correto, bate com a alternativa A. Porém somente funciona no SQL Server 2000, ou seja não seria um padrão SQL. Ainda como suporte ao comentário acima, no livro SQL in a Nutshell, há o seguinte comentário sobre o símbolo < >: Matches any value in the specified set, as in , or any range, as in . Ex. SELECT * FROM authors WHERE au_lname LIKE 'arsn' Retrieves any author with a last name like Carson, Carsen, Karson, or Karsen. (Not supported by Oracle. Supported by Microsoft SQL Server.) Vejam que não é um padrão, pois é suportado pelo SQL server e não é suportado pelo Oracle. Alguém que manja de Oracle poderia confirmar essa afirmação retirado deste livro???

akasakai- 11-05-2006

Pessoal, sem querer abusar : ))) Aqui vai outra... BANCO CENTRAL DO BRASIL (2006) – ANALISTA - ÁREA 2 40. A função CAST( ) da linguagem SQL, especificamente, (A) converte um valor de um tipo caractere de dados para outro tipo de dados. (B) converte operações lógicas dentro do banco de dados em linguagem SQL. (C) converte uma string de dados em uma string numérica para efetuar operações lógicas. (D) transforma tipos de dados definidos como string para outros do tipo inteiros (integer). (E) converte os tipos de caracteres UNICODE para Western-1. Resposta Oficial: A Questão confusa da FCC uma vez que o item diz que a função CAST converte de tipo caractere para outro tipo de dados. Não obrigatoriamente, na verdade a função converte de um tipo para outro, pode ser por exemplo de datetime para string. CAST and CONVERT Explicitly converts an expression of one data type to another. CAST and CONVERT provide similar functionality (ver artigo no final) A rigor não haveria resposta correta, mas se a FCC considera a alternativa A como correta, o item D também estaria correto. Comentários: A seguir texto retirado do livro The Guru's Guide to Transact-SQL Converting data between types is equally simple. You can use either the CAST() or CONVERT() function to convert one data type to another, but CAST() is the SQL-92–compliant method. Here's a SELECT that converts the Amount column in the orders table to a character string: SELECT CAST(Amount AS varchar) FROM orders Link sobre artigo sobre Convert e Cast O que acham??? A função CAST de fato converte de um tipo para outro?? ou ela de fato converte um valor de um tipo caractere de dados para outro tipo de dados, como afirmado na alternativa A ?????????????? Sds. Akasakai