CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

Tamanho: px
Começar a partir da página:

Download "CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo"

Transcrição

1 CONCORRÊNCIA 1. Introdução Recursos exclusivos Não necessita controle Abundância de recursos compartilhados Controle necessário mas mínimo Harmonia, provavelmente não haverá conflito Recursos disputados e escassos Espera Controle seria necessário Provável conflito

2 2. Concorrência em BD A concorrência (por dados) existe quando temos: Múltiplos Usuários Múltiplas Operações Operações que buscam os mesmos recursos (dados) Operações Simultâneas O termo concorrência refere-se ao fato de que os SGBDs em geral permitem que muitos usuários/muitas transações tenham acesso ao mesmo banco de dados (mesmo dado) ao mesmo tempo. Em um sistema desse tipo, é necessário algum tipo de mecanismo de controle (bloqueio) para assegurar que transações concorrentes não interfiram umas nas outras ou não causem inconsistência. Em uma situação ideal, cada um destes usuários deveria executar os seus comandos como se ele fosse o único. Este seria o maior nível de isolamento. Entretanto, é muito baixo o nível de concorrência correspondente a tal nível de isolamento e usuários poderão ficar aguardando por informações durante tempos relativamente longos, à espera do término de outras transações. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento total, a SQL definiu alguns níveis de isolamento. SGBD BD/Dado (recurso) Transação T1 concorre com T2 pelo recurso (principalmente dado), (pode haver interferência em T2). Transação T2 concorre com T1 pelo recurso (principalmente dado), (pode haver interferência em T1).

3 3. Transações x Concorrência (Efeitos da Concorrência) Em um ambiente onde não existe isolamento total entre as transações, a intercalação entre os comandos das transações pode produzir os efeitos (problemas) que serão apresentados a seguir. Efeitos que podem ser produzidos pela concorrência: Leitura Suja (ou Dependência sem commit) 1. Transações T1 e T2 são iniciadas. 2. A transação T1 modifica a linha L1. 3. A transação T2 lê a linha L1 antes que T1 termine. 4. T1 termina com fracasso e suas operações são desfeitas. Assim: T2 terá lido uma informação que nunca foi confirmada. Viu algo que não existe. Problema comum na maioria dos SGBD s. Leitura Não Repetida (ou Análise inconsistente) 1. Transações T1 e T2 são iniciadas. 2. A transação T1 lê a linha L1. 3. A transação T2 modifica a linha L1, atualizando seus dados ou apagando a linha. 4. A transação T2 é concluída com sucesso e as suas operações são confirmadas. 5. A transação T1 lê (ou tenta ler) a linha L1. Assim: T1 nunca modificou os dados da linha L1, mas não obteve a mesma leitura dentro da mesma transação. Pense, por exemplo, em T1 fazendo duas operações de soma (totalização de uma determinada coluna). Este efeito fará com que o valor na coluna que está sendo totalizada seja alterado em uma das linhas antes da segunda totalização, produzindo uma soma (sum) diferente da primeira.

4 Leitura Fantasma (ou Leitura dupla) 1. Transações T1 e T2 são iniciadas. 2. A transação T1 lê um conjunto de linhas que atendem a uma condição C1; 3. A transação T2 executa uma operação de atualização que cria uma ou mais linhas que atendem à condição C1; 4. A transação T1 lê, novamente, um conjunto de linhas que atendem a uma condição C1. Assim: Embora T1 não tenha criado linhas que atendem à condição C1, novas linhas participarão do resultado da mesma consulta na transação. Pense no exemplo apresentado no item anterior. A diferença é que, na leitura fantasma, aparece um novo registro e na Leitura Não Repetida houve uma alteração em um registro já lido. Perda de Atualização 1. Transações T1 e T2 são iniciadas. 2. A transação T1 lê o dado D1 e armazena seu valor na variável X. 3. A transação T2 lê o dado D1 e armazena seu valor na variável Y. 4. A transação T1 atualiza D1 com o valor A transação T2 atualiza D1 com o valor A transação T1 termina com sucesso. 7. A transação T2 termina com sucesso. Assim: Para a transação T1 o valor de D1 deveria ser 10, mas efetivamente, o valor é 11 (último valor gravado no BD).

5 4. Níveis de Isolamento Em razão da influência existente entre as transações, o padrão SQL criou vários Níveis de Isolamento, eles definem a relação adotada pela transação com os efeitos da concorrência (problemas) listados no item 3. Os níveis de isolamento definem: Quando eu ler vou bloquear? O bloqueio será durante toda a transação ou durante minha leitura? As leituras devem ler a última versão comitada? As leituras podem ler dados não comitados (leitura suja)? Níveis de isolamento definidos no padrão SQL: Serializable Read Uncommitted Read Committed Repeatable Read O nível de isolamento a ser utilizado pode ser definido: - Através do comando de início de uma transação: Padrão SQL: START TRANSACTION [nível-de-isolamento] SQL Server: BEGIN TRANSACTION [nível-de-isolamento] - Pelo comando de alteração das propriedades da transação: SET TRANSACTION ISOLATION LEVEL [nível-de-isolamento] Níveis de Isolamento x Concorrência CONCORRÊNCIA CONSISTÊNCIA Read Committed Read Uncommitted Serializable MÍN ISOLAMENTO MÁX (pode resultados errados) (sem interferência, com espera)

6 Detalhamento dos Níveis de Isolamento Para cada nível de isolamento, demonstraremos, através de exemplos práticos, alguns dos efeitos da concorrência que se aplicam a ele. Assim, será necessário criar o BD do modelo apresentado abaixo (Sistema de Leilão). Faça-o agora, utilizando os scripts que serão fornecidos. Obs.: para simplificar os exemplos este modelo não segue regras rígidas de normalização. Read Uncommitted - Permite a leitura de dados não comitados. Ao não impor bloqueio de leitura (lê como está), se o dado estiver sendo atualizado, é possível que se leia algo que não vai ser confirmado posteriormente. - Grande nível de concorrência mas sujeito a todos os problemas de concorrência vistos no item 3 (leitura suja, leitura não repetida, leitura fantasma, perda de atualização). Exemplo prático (LEITURA SUJA): Situação do Produto cujo IdProduto é 10: IdProduto NomeProduto PrecoInicial MelhorOferta 10 Adaptador PCI Express Wireless 150Mbps 42,00 NULL Atenção: para fazer a simulação da LEITURA SUJA, copie todo o código do usuário 1 e cole em uma nova sessão (janela de query). Faça o mesmo com o código do usuário 2. No SQL SERVER, selecione todo o código do usuário 1 menos as linhas do ROLLBACK (inclusive) em diante. Clique no botão EXECUTAR.

7 A seguir, execute todo o código do usuário 2 e observe o resultado do select deste usuário. Qual o valor da MELHOR OFERTA para o usuário 2? Retorne para o código do usuário 1 e execute as linhas do ROLLBACK em diante que estavam pendentes. Qual o valor da MELHOR OFERTA? Qual o problema gerado para o usuário 2 considerando que a transação dele já terminou ou mesmo que houvesse outros comandos nela? USUÁRIO 1\SESSÃO 1 -- Mudar o contexto de banco de dados -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = Abre uma transação BEGIN TRAN -- Cria e grava dados em variáveis dentro da transação SMALLMONEY = = ' ' = André = Adaptador PCI Express Wireless 150Mbps = = NEWID() -- Insere uma nova oferta para o produto 10 INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) -- Recupera a melhor oferta para o produto 10 = (SELECT MelhorOferta FROM Produtos WHERE IdProduto = 10) -- Verifica se o valor da oferta é a melhor oferta para esse produto IS NULL

8 -- Atualiza o produto 10 se for a melhor oferta UPDATE Produtos SET MelhorOferta WHERE IdProduto = Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = 10 ROLLBACK -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = 10 USUÁRIO 2\SESSÃO 2 -- Mudar o contexto de banco de dados ATENÇÃO! -- Muda o nível de isolamento SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = 10

9 Read Committed - O padrão para o ANSI. - Só é possível ler dados comitados (não permite leitura suja). - Diminui um pouco o nível de concorrência em relação ao read uncommitted. - Sujeito aos outros problemas de concorrência (leitura não repetida, leitura fantasma, perda de atualização). Exemplo prático (ATUALIZAÇÃO PERDIDA): Situação do Produto cujo IdProduto é 10: IdProduto NomeProduto PrecoInicial MelhorOferta 10 Adaptador PCI Express Wireless 150Mbps 42,00 NULL Atenção: para fazer a simulação da ATUALIZAÇÃO PERDIDA, copie todo o código do usuário 1 e cole em uma nova sessão (janela de query). Faça o mesmo com o código do usuário 2. A seguir, execute a transação (completa) do usuário 1 e em seguida a transação (completa) do usuário 2. USUÁRIO 1\SESSÃO 1 (pretende fazer uma oferta de 50,40): -- Mudar o contexto de banco de dados -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = Abre uma transação BEGIN TRAN -- Cria e grava dados em variáveis dentro da transação SMALLMONEY = = ' ' = André = Adaptador PCI Express Wireless 150Mbps = = NEWID()

10 -- Insere uma nova oferta para o produto 10 INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) -- Recupera a melhor oferta para o produto 10 = (SELECT MelhorOferta FROM Produtos WHERE IdProduto = 10) -- Espera 15 segundos propositalmente WAITFOR DELAY '00:00:15' Retornou null -- Verifica se o valor da oferta é a melhor oferta para esse produto IS NULL -- Atualiza o produto 10 UPDATE Produtos SET MelhorOferta WHERE IdProduto = 10 COMMIT -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = 10 Resultado esperado da transação do usuário 1: como a melhor oferta estava NULL, ela será substituída por 50,40 (oferta do usuário 1). Mas atenção, a linha WAITFOR DELAY '00:00:15' fará a transação parar neste ponto por 15 segundos antes de atualizar o valor da melhor oferta para 50,40 (o comando update está em uma linha posterior à linha do delay). Enquanto os 15 segundos correm, o usuário 2 inicia a sua transação. USUÁRIO 2\SESSÃO 2 (pretende fazer uma oferta de 49,20): -- Mudar o contexto de banco de dados -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = Abre uma transação BEGIN TRAN

11 -- Cria e grava dados em variáveis dentro da transação SMALLMONEY = = ' ' = Davi = Adaptador PCI Express Wireless 150Mbps = = NEWID() -- Insere uma nova oferta para o produto 10 INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) Retornou null -- Recupera a melhor oferta para o produto 10 = (SELECT MelhorOferta FROM Produtos WHERE IdProduto = 10) -- Espera 15 segundos propositalmente WAITFOR DELAY '00:00:15' -- Verifica se o valor da oferta é a melhor oferta para esse produto IS NULL -- Atualiza o produto 10 UPDATE Produtos SET MelhorOferta WHERE IdProduto = 10 COMMIT -- Recupera os dados do produto 10 SELECT IdProduto, NomeProduto, PrecoInicial, MelhorOferta FROM Produtos WHERE IdProduto = 10 Resultado esperado da transação do usuário 2: como o usuário 1 fez uma oferta maior, a oferta de 49,20 do usuário 2, não será gravada como a melhor oferta (que deve ficar com o usuário 1, cuja oferta é de 50,40). Mas atenção, a linha WAITFOR DELAY '00:00:15', existente nas duas transações, fará com que a transação do usuário 1 termine (commit) ANTES da transação do usuário 2 (pois a transação do usuário 2 iniciou o processamento depois da transação do usuário 1). Responda: Qual o valor gravado na coluna MelhorOferta quando as duas transações encerrarem?

12 Atenção: execute os comandos abaixo para que os dados do produto 10 retornem ao estado anterior -- Mudar o contexto de banco de dados -- Volta a situação do produto UPDATE Produtos SET MelhorOferta = NULL WHERE IdProduto = Elimina as duas ofertas DELETE FROM Ofertas WHERE IdOferta >= Complete a frase: O exemplo acima mostra que o nível de isolamento READ COMMITED permite o efeito/problema de concorrência (entre outros), embora proteja a transação quanto ao problema.

13 Repeatable Read - Os bloqueios de leitura duram até o fim da transação (quando uma transação faz uma leitura, os registros lidos ficam bloqueados até que tal transação finalize, mesmo que a leitura já tenha terminado). - Leituras sempre consistentes. - Há redução da concorrência em razão da duração dos bloqueios (se alguém quiser atualizar vai ter que esperar). - Apenas um problema de concorrência pode ocorrer: Registros Fantasmas. Exemplo prático 1: funcionamento do Repeatable Read: Atualmente, as 10 melhores ofertas são: IdOferta DataOferta IdUsuário IdProduto ValorOferta :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: ,02 Atenção: para fazer a simulação do funcionamento do nível Repeatable Read, copie todo o código do usuário 1 e cole em uma nova sessão (janela de query). Faça o mesmo com o código do usuário 2. Não os execute ainda. USUÁRIO 1\SESSÃO 1 (seleciona as 10 melhores ofertas): -- Mudar o contexto de banco de dados -- Muda o nível de isolamento SET TRANSACTION ISOLATION LEVEL REPEATABLE READ -- Abre uma transação BEGIN TRAN -- Mostra as dez melhores ofertas SELECT TOP(10) * FROM Ofertas ORDER BY ValorOferta DESC COMPUTE SUM(ValorOferta), MAX(ValorOferta)

14 COMMIT -- Mostra as dez melhores ofertas novamente SELECT TOP(10) * FROM Ofertas ORDER BY ValorOferta DESC COMPUTE SUM(ValorOferta), MAX(ValorOferta) USUÁRIO 2\SESSÃO 2 (altera o valor da oferta ): -- Atualiza a melhor oferta UPDATE Ofertas SET ValorOferta = WHERE IdOferta = Instruções: No SQL SERVER, selecione todo o código do usuário 1 menos a linha do COMMIT. Clique no botão EXECUTAR. Note que os resultados dos dois comandos select são os mesmos (como esperado), sendo também iguais ao apresentado no início deste exemplo prático (note o valor da oferta : 2.808,02). Obs.: a transação não foi completada (sem commit). A seguir, execute todo o código do usuário 2 e observe na parte inferior da janela que o comando update está aguardando (mensagem Executing query... não termina) a liberação dos registros lidos pelo usuário 1 (especificamente a oferta cujo valor se deseja alterar para ,00). Retorne para a sessão do usuário 1, selecione e execute apenas o comando select acima do commit. O valor da oferta foi alterado? Justifique. Selecione e execute apenas o commit que estava pendente. Retorne para a sessão do usuário 2. Observe que o comando update foi completado ( 1 row(s) affected ). Retorne para a sessão do usuário 1, selecione e execute apenas o comando select acima do commit. O valor da oferta foi alterado? Justifique. Qual a outra mudança que podemos notar em relação ao registro da oferta ? Justique.

15 Atenção: agora copie e execute os comandos abaixo para que os dados retornem ao estado anterior. -- Mudar o contexto de banco de dados -- Desfaz o UPDATE UPDATE Ofertas SET ValorOferta = WHERE IdOferta = Exemplo prático 2 (REGISTROS FANTASMAS (ANSI / SQL SERVER) ou LEITURA NÃO REPETIDA (DB2)): No momento, as 10 melhores ofertas permanecem as mesmas: IdOferta DataOferta IdUsuário IdProduto ValorOferta :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: ,02 Atenção: para fazer a simulação do problema Registros Fantasmas no nível de isolamento Repeatable Read, copie todo o código do usuário 1 e cole em uma nova sessão (janela de query). Faça o mesmo com o código do usuário 2. Não os execute ainda. USUÁRIO 1\SESSÃO 1 (seleciona as 10 melhores ofertas): -- Mudar o contexto de banco de dados -- Muda o nível de isolamento SET TRANSACTION ISOLATION LEVEL REPEATABLE READ -- Abre uma transação BEGIN TRAN -- Mostra as dez melhores ofertas SELECT TOP(10) * FROM Ofertas ORDER BY ValorOferta DESC COMPUTE SUM(ValorOferta), MAX(ValorOferta)

16 -- Mostra as dez melhores ofertas SELECT TOP(10) * FROM Ofertas ORDER BY ValorOferta DESC COMPUTE SUM(ValorOferta), MAX(ValorOferta) COMMIT USUÁRIO 2\SESSÃO 2 (insere uma nova oferta (valor de 4.000,00) para o produto 333): -- Mudar o contexto de banco de dados -- Nova oferta (valor 4.000) para o produto 333 INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) VALUES (424075, ' ', 300, 333, 4000, NEWID()) O INSERT desta transação será executado ou ficará aguardando o encerramento da transação do usuário 1 (como o update do exemplo anterior)? Instruções e observações: No SQL SERVER, selecione todo o código do usuário 1 menos a linha do COMMIT. Clique no botão EXECUTAR. Note que os resultados dos dois comandos select são os mesmos (como esperado), sendo também iguais ao apresentado no início deste exemplo prático. Obs.: a transação não foi completada (sem commit). A seguir, execute todo o código do usuário 2. Note que o comando INSERT foi executado ( 1 row(s) affected ). Não houve espera. Por quê? Retorne para a sessão do usuário 1, selecione e execute o comando select acima do commit. Note a alteração no resultado desta execução do select em comparação à anterior. A justificativa é a presença de uma nova linha na tabela (gerada pelo insert do usuário 2, uma oferta de 4.000,00) que atende aos requisitos do select (está entre as 10 maiores ofertas, substituindo a oferta de 2.808,02 que era a menor entre as 10 maiores). Selecione e execute apenas o commit que estava pendente. Selecione e execute novamente o comando select acima do commit. Note que a leitura é a mesma (a nova oferta aparece).

17 Conclusão: A oferta número no valor de 4.000,00 apareceu para a transação do usuário 1 como um registro fantasma (apareceu no meio da transação 1 sem que esta tenha feito algo para isso). Este é o padrão ANSI. Alguns SGBD consideram que a leitura não foi exatamente a mesma (base alterada pelo insert), estes consideram como uma leitura não repetida. Atenção: agora copie e execute os comandos abaixo para que os dados retornem ao estado anterior. -- Exclui o registro DELETE FROM Ofertas WHERE IdOferta = Exercício: a) Execute a transação do usuário 1 menos o commit. b) Execute a transação do usuário 2. c) Execute o select do usuário 1. d) Execute o delete acima (DELETE FROM Ofertas WHERE IdOferta = ) O que aconteceu? O que fazer para completar o exercício?

18 Serializable - Isolamento puro (nível mais alto). Efeitos de uma transação não influenciam em outra transação. - Redução muito grande da concorrência. - Impede todos os problemas gerados pelos acessos concorrentes. - Bloqueia os dados acessados até o final da transação (como faz o nível Repeatable Read ) e impede a inserção de novas linhas (tuplas) nas tabelas em uso. Elimina Registros Fantasmas também. Obs.: Bloqueia inclusive insert s que mudem o resultado de um select (visualização). Exemplo prático 1 (FUNCIONAMENTO DO NÍVEL SERIALIZABLE): No momento, as 10 melhores ofertas permanecem as mesmas: IdOferta DataOferta IdUsuário IdProduto ValorOferta :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: , :00: ,02 Atenção: para fazer a simulação, copie todo o código do usuário 1 e cole em uma nova sessão (janela de query). Faça o mesmo com o código do usuário 2. Não os execute ainda. USUÁRIO 1\SESSÃO 1 (seleciona as 10 melhores ofertas): -- Mudar o contexto de banco de dados -- Muda o nível de isolamento SET TRANSACTION ISOLATION LEVEL SERIALIZABLE -- Abre uma transação BEGIN TRAN -- Mostra as dez melhores ofertas SELECT TOP(10) * FROM Ofertas ORDER BY ValorOferta DESC COMPUTE SUM(ValorOferta), MAX(ValorOferta) COMMIT

19 USUÁRIO 2\SESSÃO 2 (insere uma nova oferta (valor de 4.000,00) para o produto 333): -- Mudar o contexto de banco de dados -- Inclui uma oferta alta INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) VALUES (424075, ' ', 300, 333, 4000, NEWID()) -- Inclui uma oferta baixa INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) VALUES (424075, ' ', 300, 333, 2000, NEWID()) -- Exclui o registro DELETE FROM Ofertas WHERE IdOferta = Instruções e observações: No SQL SERVER, selecione todo o código do usuário 1 menos a linha do COMMIT. Clique no botão EXECUTAR. Note que, conforme esperado, o resultado do comando select é o mesmo da tabela apresentada no início deste exemplo prático (10 melhores ofertas). Obs.: a transação não foi completada (sem commit). Agora, vá para a sessão do usuário 2, selecione todas as linhas referentes ao comando use e ao comando insert (não selecione do delete em diante). Clique no botão EXECUTAR. Note que, a sessão 2 está tentando incluir uma oferta de R$4.000,00. Esta oferta, se confirmada, tornaria falso o resultado do select feito pelo usuário 1 (que está usando o nível serializable). Assim, a operação do usuário 2 será bloqueada e terá que aguardar o término da transação do usuário 1. Note na parte inferior da janela o Executing query que não termina. Agora selecione o commit existente na transação do usuário 1 e clique no botão EXECUTAR. Retorne à sessão do usuário 2 e veja que a inclusão da nova oferta foi realizada. Retorne à sessão do usuário 1, selecione e execute o último select. Note que, agora, o resultado é diferente do anterior (nova oferta de R$4.000,00 aparece).

20 IMPORTANTE: - Vá para a sessão 2 e exclua o novo registro: DELETE FROM Ofertas WHERE IdOferta = Vá para a sessão 1 e execute novamente todo o código, menos o commit. - Vá para a sessão 2, selecione e execute o segundo insert (inclusão de uma oferta pequena de R$2.000,00 que não interfere no resultado do select da sessão 1 serializable). INSERT INTO Ofertas ( IdOferta, DataOferta, IdUsuario, IdProduto, ValorOferta, HashOferta) VALUES (424075, ' ', 300, 333, 2000, NEWID()) Note, pela mensagem apresentada, que esta inclusão foi confirmada, ao contrário da anterior. Qual o motivo? - Exclua o registro. DELETE FROM Ofertas WHERE IdOferta = Fim dos Exemplos - Resumo Geral: Os quatro níveis de isolamento da SQL de acordo com a sua relação com os quatro fenômenos (problemas) da concorrência: NÍVEL DE ISOLAMENTO READ UNCOMMITTED READ COMMITTED REPEATABLE READ Perda de Atualização Leitura Suja PROBLEMA Leitura Não-repetida Leitura Fantasma Permite Permite Permite Permite Permite Não permite Permite Permite Não permite Não permite Não permite Permite SERIALIZABLE Não permite Não permite Não permite Não permite

21 Exercício 1: Simular uma situação de concorrência e bloqueio. Use a tabela TBCONTA do banco de dados DBBANCO (código de criação abaixo, exclua o banco antes, caso ele já exista). CREATE DATABASE DBBANCO ON PRIMARY (NAME=DBTESTE, FILENAME="D:\BANCOS\DBTESTE.MDF", SIZE=10MB); CREATE TABLE DBBANCO.DBO.TBCONTA ( CODI INT NOT NULL IDENTITY PRIMARY KEY, CONTA INT NOT NULL, SALDO INT NOT NULL, LIMITE INT NOT NULL); Agora copie e execute os comandos abaixo para incluir duas linhas na tabela. INSERT INTO DBBANCO.DBO.TBCONTA (CONTA,SALDO,LIMITE) VALUES (123,5000,10000) INSERT INTO DBBANCO.DBO.TBCONTA (CONTA,SALDO,LIMITE) VALUES (456,200,5000) Escreva duas transações em janelas (NEW QUERY) diferentes do Management Studio. A primeira transação deve alterar um dado da tabela (o saldo da conta 123, por exemplo código abaixo): Obs.: digite mas não execute a transação ainda. begin transaction update TBCONTA set saldo=saldo+1000 where conta=123 commit A segunda transação (em outra janela) deve ler este mesmo dado (o saldo da conta 123 código abaixo). Obs.: digite mas não execute a transação ainda. begin transaction select saldo from TBCONTA where conta=123 commit Selecione as duas primeiras linhas da primeira transação e clique no botão <EXECUTE>. Vá para a janela da segunda transação e clique no botão <EXECUTE>.

22 O que aconteceu com a segunda transação? Por quê? Retorne à janela da primeira transação, selecione apenas o comando COMMIT e clique no botão <EXECUTE>. Retorne à janela da segunda transação. O que aconteceu? Por quê? Exercício 2: Anote o saldo atual da conta 123: Altere o código na janela da primeira transação: begin transaction update TBCONTA set saldo=saldo+1000 where conta=123 rollback Altere o código na janela da segunda transação: set transaction isolation level read uncommitted begin transaction select saldo from TBCONTA where conta=123 commit Retorne à janela da primeira transação e execute as duas primeiras linhas. Retorne à janela da segunda transação e clique no botão <EXECUTE>. Qual o valor do saldo? Retorne à janela da primeira transação e execute apenas a última linha (rollback). Retorne à janela da segunda transação, selecione e execute apenas o comando abaixo. select saldo from TBCONTA where conta=123 Qual o saldo da conta 123? Que fenômeno que ocorreu na execução da segunda transação?

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento. CONCORRÊNCIA 1. Introdução O termo concorrência se refere ao fato de que os SGBDs em geral permitem que muitas transações tenham acesso ao mesmo banco de dados ao mesmo tempo. Em um sistema desse tipo,

Leia mais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso): TRANSAÇÕES 1. Introdução Transação Uma transação é uma unidade lógica de trabalho (processamento), formada por um conjunto de comando SQL, que tem por objetivo preservar a integridade e a consistência

Leia mais

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) 8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito) Nos itens anteriores vimos transações do tipo explícitas, ou seja, aquelas que iniciam com BEGIN TRANSACTION. As outras

Leia mais

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível

Leia mais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL A linguagem SQL é responsável por garantir um bom nível de independência do

Leia mais

Structured Query Language (SQL)

Structured Query Language (SQL) SQL Histórico Structured Query Language (SQL) Foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation Language) para suas primeiras tentativas

Leia mais

Linguagem de Consulta Estruturada SQL- DML

Linguagem de Consulta Estruturada SQL- DML Linguagem de Consulta Estruturada SQL- DML INTRODUÇÃO A SQL - Structured Query Language, foi desenvolvido pela IBM em meados dos anos 70 como uma linguagem de manipulação de dados (DML - Data Manipulation

Leia mais

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures) PROCEDIMENTOS ARMAZENADOS (Stored Procedures) 1. Introdução Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a

Leia mais

2008.1. A linguagem SQL

2008.1. A linguagem SQL SQL 2008.1 A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua primeira versão

Leia mais

Banco de Dados. Prof. Antonio

Banco de Dados. Prof. Antonio Banco de Dados Prof. Antonio SQL - Structured Query Language O que é SQL? A linguagem SQL (Structure query Language - Linguagem de Consulta Estruturada) é a linguagem padrão ANSI (American National Standards

Leia mais

Oracle Comandos para Processamento de Transações

Oracle Comandos para Processamento de Transações Oracle Comandos para Processamento de Transações Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri Transação Unidade lógica de trabalho contém um ou mais comandos SQL para manipulação

Leia mais

2008.1 SQL. Autor: Renata Viegas

2008.1 SQL. Autor: Renata Viegas SQL Autor: Renata Viegas A linguagem SQL SQL - Structured Query Language. Foi definida nos laboratórios de pesquisa da IBM em San Jose, California, em 1974. Teve seus fundamentos no modelo relacional Sua

Leia mais

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela

SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela SQL Server Triggers Aprenda a utilizar triggers em views e auditar as colunas atualizadas em uma tabela Certamente você já ouviu falar muito sobre triggers. Mas o quê são triggers? Quando e como utilizá-las?

Leia mais

PHP INTEGRAÇÃO COM MYSQL PARTE 1

PHP INTEGRAÇÃO COM MYSQL PARTE 1 INTRODUÇÃO PHP INTEGRAÇÃO COM MYSQL PARTE 1 Leonardo Pereira leonardo@estudandoti.com.br Facebook: leongamerti http://www.estudandoti.com.br Informações que precisam ser manipuladas com mais segurança

Leia mais

Faculdade Lourenço Filho - ENADE 2011-1

Faculdade Lourenço Filho - ENADE 2011-1 1. Quando se constrói um banco de dados, define-se o modelo de entidade e relacionamento (MER), que é a representação abstrata das estruturas de dados do banco e seus relacionamentos. Cada entidade pode

Leia mais

Controle de transações em SQL

Controle de transações em SQL Transações Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente

Leia mais

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Trabalhando com conexão ao banco de dados MySQL no Lazarus Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 4 O Componente Trabalhando com conexão ao banco de dados MySQL no Lazarus Ano: 03/2011

Leia mais

Projeto de Banco de Dados: Empresa X

Projeto de Banco de Dados: Empresa X Projeto de Banco de Dados: Empresa X Modelo de negócio: Empresa X Competências: Analisar e aplicar o resultado da modelagem de dados; Habilidades: Implementar as estruturas modeladas usando banco de dados;

Leia mais

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Introdução à Banco de Dados. Nathalia Sautchuk Patrício Introdução à Banco de Dados Nathalia Sautchuk Patrício Histórico Início da computação: dados guardados em arquivos de texto Problemas nesse modelo: redundância não-controlada de dados aplicações devem

Leia mais

Histórico de revisões

Histórico de revisões Apostila 3 Histórico de revisões Data Versão Descrição Autor 30/09/2011 1.0 Criação da primeira versão HEngholmJr CONTEÚDO Exclusão de registros Consultas por Dados de Resumo Group by / Having Funções

Leia mais

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br BANCO DE DADOS info 3º ano Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br www.diemesleno.com.br Na última aula estudamos Unidade 4 - Projeto Lógico Normalização; Dicionário de Dados. Arquitetura

Leia mais

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011 Edição 5 SELECT * FROM Minha_memoria Revisando Sintaxes SQL e Criando programa de Pesquisa Ano:

Leia mais

SQL Structured Query Language

SQL Structured Query Language Janai Maciel SQL Structured Query Language (Banco de Dados) Conceitos de Linguagens de Programação 2013.2 Structured Query Language ( Linguagem de Consulta Estruturada ) Conceito: É a linguagem de pesquisa

Leia mais

GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql

GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM/BCC Transações Ver conjunto de slides na opção Transações

Leia mais

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Introdução à Engenharia da Computação. Banco de Dados Professor Machado Introdução à Engenharia da Computação Banco de Dados Professor Machado 1 Sistemas isolados Produção Vendas Compras Banco de Dados Produtos... Banco de Dados Produtos... Banco de Dados Produtos... Desvantagens:

Leia mais

Sumário. Introdução a Transações

Sumário. Introdução a Transações Sumário 1 Introdução ao Processamento de Consultas 2 Otimização de Consultas 3 Plano de Execução de Consultas 4 Introdução a Transações 5 Recuperação de Falhas 6 Controle de Concorrência 7 Fundamentos

Leia mais

Curso PHP Aula 08. Bruno Falcão brunogfalcao@gmail.com

Curso PHP Aula 08. Bruno Falcão brunogfalcao@gmail.com + Curso PHP Aula 08 Bruno Falcão brunogfalcao@gmail.com + Roteiro Conectividade com BD SQL + SQL Structured Query Language. Padrão para interagir com banco de dados relacionais. + Banco de dados Um banco

Leia mais

Treinamento sobre SQL

Treinamento sobre SQL Treinamento sobre SQL Como Usar o SQL Os dois programas que você mais utilizara no SQL Server são: Enterprise Manager e Query Analyzer. No Enterprise Manager, você pode visualizar e fazer alterações na

Leia mais

Linguagem SQL (Parte I)

Linguagem SQL (Parte I) Universidade Federal de Sergipe Departamento de Sistemas de Informação Itatech Group Jr Softwares Itabaiana Site: www.itatechjr.com.br E-mail: contato@itatechjr.com.br Linguagem SQL (Parte I) Introdução

Leia mais

BDII SQL TRANSAÇÃO Revisão 2

BDII SQL TRANSAÇÃO Revisão 2 exatasfepi.com.br BDII SQL TRANSAÇÃO Revisão 2 André Luís Duarte Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef 6:2,3)

Leia mais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais 1 LINGUAGEM SQL SQL Server 2008 Comandos iniciais SQL - STRUCTURED QUERY LANGUAGE Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas à sua manipulação.

Leia mais

Linguagem de Consulta - SQL

Linguagem de Consulta - SQL Complementos da Linguagem SQL - Eliminando Tuplas Repetidas Exemplo: Obter o código das editoras que têm livros publicados CodEditora Titulo Publicacao... 04 Banco de Dados 1989 02 Análise 2000 01 XML

Leia mais

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language) Básico da Linguagem SQL Definição de Esquemas em SQL SQL(Structured Query Language) Desenvolvida como a linguagem de consulta do protótipo de SGBD Sistema R (IBM, 1976). Adotada como linguagem padrão de

Leia mais

Banco de Dados. Maurício Edgar Stivanello

Banco de Dados. Maurício Edgar Stivanello Banco de Dados Maurício Edgar Stivanello Agenda Conceitos Básicos SGBD Projeto de Banco de Dados SQL Ferramentas Exemplo Dado e Informação Dado Fato do mundo real que está registrado e possui um significado

Leia mais

Comandos de Manipulação

Comandos de Manipulação SQL - Avançado Inserção de dados; Atualização de dados; Remoção de dados; Projeção; Seleção; Junções; Operadores: aritméticos, de comparação,de agregação e lógicos; Outros comandos relacionados. SQL SQL

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 02 AT02 Diversos I 1 Indice ESQUEMAS NO BANCO DE DADOS... 3 CRIANDO SCHEMA... 3 CRIANDO TABELA EM DETERMINADO ESQUEMA... 4 NOÇÕES BÁSICAS SOBRE CRIAÇÃO E MODIFICAÇÃO

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

Os comandos SQL utilizados nas aulas práticas e mostrados aqui foram feitos num interpretador de comandos: psql

Os comandos SQL utilizados nas aulas práticas e mostrados aqui foram feitos num interpretador de comandos: psql Bases de Dados PostgreSQL e Php Transacções Joins, agregações, vistas P. Serendero, 2011 1 PostgreSQLe Php: transacções Os comandos SQL utilizados nas aulas práticas e mostrados aqui foram feitos num interpretador

Leia mais

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza PHP e Banco de Dados progweb2@thiagomiranda.net Conteúdos Os materiais de aula, apostilas e outras informações estarão disponíveis em: www.thiagomiranda.net PHP e Banco de Dados É praticamente impossível

Leia mais

Operação de União JOIN

Operação de União JOIN Operação de União JOIN Professor Victor Sotero SGD 1 JOIN O join é uma operação de multi-tabelas Select: o nome da coluna deve ser precedido pelo nome da tabela, se mais de uma coluna na tabela especificada

Leia mais

Linguagem SQL Parte I

Linguagem SQL Parte I FIB - Centro Universitário da Bahia Banco de Dados Linguagem SQL Parte I Francisco Rodrigues Santos chicowebmail@yahoo.com.br Slides gentilmente cedidos por André Vinicius R. P. Nascimento Conteúdo A Linguagem

Leia mais

Gatilhos (Triggers) Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com. Elaborado por Maria Lígia B. Perkusich

Gatilhos (Triggers) Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com. Elaborado por Maria Lígia B. Perkusich Gatilhos (Triggers) Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com Elaborado por Maria Lígia B. Perkusich O que é um gatilho (trigger)? Um gatilho é um tipo especial de procedimento armazenado

Leia mais

EXERCÍCIOS PRÁTICOS. Banco de Dados

EXERCÍCIOS PRÁTICOS. Banco de Dados EXERCÍCIOS PRÁTICOS Banco de Dados Introdução ao uso do SQL Structured Query Language, considerando tanto DDL Data Definition Language quanto DML Data Manipulation Language. Banco de Dados selecionado:

Leia mais

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br

SQL DML. Frederico D. Bortoloti freddb@ltc.ufes.br Banco de Dados I SQL DML Frederico D. Bortoloti freddb@ltc.ufes.br SQL - DML Os exemplos da aula serão elaborados para o esquema de dados a seguir: Empregado(matricula, nome, endereco, salario, supervisor,

Leia mais

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri SQL Linguagem de Manipulação de Dados Banco de Dados SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE

Leia mais

Lock. Administração de Banco de Dados

Lock. Administração de Banco de Dados Lock Administração de Banco de Dados 1 Tópicos o Lock o Tipos de Lock o Recursos que podem ser bloqueados o Dica de Lock sobre uma Tabela o Dica de Lock em uma Sessão o Compatibilidade entre Locks 2 Lock

Leia mais

IB - O que o faz diferente

IB - O que o faz diferente IB - O que o faz diferente Interbase: O que o faz diferente? por Bill Todd Tradução e Adaptação : Carlos H. Cantu (Interbase-BR) Quando voce entra no mundo Client/Server a primeira coisa que voce tem que

Leia mais

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no

Leia mais

Introdução ao SQL. Aécio Costa

Introdução ao SQL. Aécio Costa Aécio Costa A linguagem SQL é um padrão de linguagem de consulta comercial e possui as seguintes partes: Linguagem de definição de dados (DDL) Linguagem interativa de manipulação de dados (DML) Definição

Leia mais

EXAME DE 1ª ÉPOCA Semestre de Verão 2004/2005 20 Junho 2005 duração: 2h30m

EXAME DE 1ª ÉPOCA Semestre de Verão 2004/2005 20 Junho 2005 duração: 2h30m ISEL DEETC SSIC EXAME DE 1ª ÉPOCA Semestre de Verão 2004/2005 20 Junho 2005 duração: 2h30m Introdução aos Sistemas de Informação Engenharia Informática e Computadores Ano Lectivo: 2004 / 2005 2º Sem. Docente:

Leia mais

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br JavaServerFaces JSF Fernando Freitas Costa Bacharel em Sistemas de Informação Pós-Graduando em Gestão e Docência Universitária blog.fimes.edu.br/fernando nando@fimes.edu.br JavaServerFaces e Banco de Dados

Leia mais

Transações Seguras em Bancos de Dados (MySQL)

Transações Seguras em Bancos de Dados (MySQL) Transações Seguras em Bancos de Dados (MySQL) Índice Entendendo os storage engines do MySQL 5 1 As ferramentas 1 Mais algumas coisas que você deve saber 1 Com a mão na massa 2 Mais ferramentas Usando o

Leia mais

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

AULA 2 INTERAÇÃO COM O BANCO DE DADOS AULA 2 INTERAÇÃO COM O BANCO DE DADOS BANCO DE DADOS POSTGRESQL O PostgreSQL é um sistema gerenciador de banco de dados dos mais robustos e avançados do mundo. Seu código é aberto e é totalmente gratuito,

Leia mais

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs? BANCO DE DADOS Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos alexandre.matos@udesc.br INTRODUÇÃO Um Banco

Leia mais

Sistemas de Banco de Dados

Sistemas de Banco de Dados Sistemas de Banco de Dados Everson Santos Araujo everson@por.com.br Conceitos Dado - Um fato que pode ser armazenado Banco de dados (BD) - Coleção de dados interrelacionados Sistema Gerenciador de Banco

Leia mais

SQL comando SELECT. SELECT [DISTINCT] FROM [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda. SQL comando SELECT Uma das tarefas mais requisitadas em qualquer banco de dados é obter uma listagem de registros armazenados. Estas tarefas são executadas pelo comando SELECT Sintaxe: SELECT [DISTINCT]

Leia mais

Banco de Dados. Conversão para o Banco de Dados SisMoura

Banco de Dados. Conversão para o Banco de Dados SisMoura Banco de Dados Conversão para o Banco de Dados SisMoura Objetivo : Converter as informações contidas em um determinado banco de dados para o banco de dados do Sismoura. Restaurar Banco de Dados em branco

Leia mais

Tarefa Orientada 19 Triggers

Tarefa Orientada 19 Triggers Tarefa Orientada 19 Triggers Objectivos: Criar triggers AFTER Criar triggers INSTEAD OF Exemplos de utilização Os triggers são um tipo especial de procedimento que são invocados, ou activados, de forma

Leia mais

Banco de Dados I 6 Transações e Controle de Concorrência

Banco de Dados I 6 Transações e Controle de Concorrência Banco de Dados I 6 Transações e Controle de Concorrência Grinaldo Lopes de Oliveira (grinaldo( grinaldo@gmail.com) Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas * Material com créditos

Leia mais

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan Faculdade INED Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan 1 Unidade 2 Introdução a SQL 2 Leitura Obrigatória ELMASRI,

Leia mais

ADMINISTRAÇÃO DE BANCO DE DADOS

ADMINISTRAÇÃO DE BANCO DE DADOS ADMINISTRAÇÃO DE BANCO DE DADOS ARTEFATO 03 AT03 Diversos II Page 1 of 25 Indice EXEMPLOS COM GROUP BY E COM A CLÁUSULA HAVING - TOTALIZANDO DADOS... 3 GROUP BY... 3 Cláusula HAVING com GROUP BY... 5 ENTENDENDO

Leia mais

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

BD SQL Server. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04 BD SQL Server SGBD SQL Server Licenciatura em Engenharia Informática e Computação Bases de Dados 2003/04 BD SQL Server Criação da Ligação ao SGBD Entrar no Microsoft SQL Server / Enterprise Manager Criar

Leia mais

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados LINGUAGEM SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características

Leia mais

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS Exemplos de Scripts SQL (PostgreSQL) Pizzaria 1 2 Criação de BANCO DE DADOS CREATE DATABASE nome_do_banco; CREATE DATABASE pizzaria; Criação de TABELAS SOMENTE COM CHAVE PRIMÁRIA CREATE TABLE nome_da_tabela

Leia mais

Controle Patrimonial WEB

Controle Patrimonial WEB Cccc Controle Patrimonial WEB Manual Inventário Conteúdo. Introdução... 3 2. Inventário... 3 2.. Abertura do inventário... 4 2.2. Relatório para Inventário... 5 2.2.. Contagem física e verificação do estado

Leia mais

FAPLAN - Faculdade Anhanguera Passo Fundo Gestão da Tecnologia da Informação Banco de Dados II Prof. Eder Pazinatto Stored Procedures Procedimento armazenados dentro do banco de dados Um Stored Procedure

Leia mais

EXEMPLOS DE COMANDOS NO SQL SERVER

EXEMPLOS DE COMANDOS NO SQL SERVER EXEMPLOS DE COMANDOS NO SQL SERVER Gerenciando Tabelas: DDL - DATA DEFINITION LANGUAG Criando uma tabela: CREATE TABLE CLIENTES ID VARCHAR4 NOT NULL, NOME VARCHAR30 NOT NULL, PAGAMENTO DECIMAL4,2 NOT NULL;

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II BANCO DE DADOS II AULA 3 Linguagem SQL Linguagem de manipulação de dados (DML) DISCIPLINA: Banco de

Leia mais

Tarefa Orientada 15 Manipulação de dados

Tarefa Orientada 15 Manipulação de dados Tarefa Orientada 15 Manipulação de dados Objectivos: Criação de tabelas teste Comando INSERT INTO Inserção de dados Comando INSERT Actualização de dados Comando UPDATE Eliminação de dados Comando DELETE

Leia mais

Gerenciamento de Transações

Gerenciamento de Transações Gerenciamento de Transações Outros tipos de recuperação: Além das falhas causadas por transações incorretas, conforme vimos anteriormente, podem ocorrer outros tipos de falhas, que ocorrem por fatores

Leia mais

Bases de Dados 2007/2008. Aula 9

Bases de Dados 2007/2008. Aula 9 Bases de Dados 2007/2008 Aula 9 1. T-SQL TRY CATCH 2. TRATAMENTO ERROS RAISERROR 3. TRIGGERS 4. EXERCÍCIOS Sumário Referências http://msdn2.microsoft.com/en-us/library/ms189826.aspx (linguagem t-sql) http://www.di.ubi.pt/~pprata/bd/bd0405-proc.sql

Leia mais

Leonardo Gresta Paulino Murta leomurta@gmail.com

Leonardo Gresta Paulino Murta leomurta@gmail.com Leonardo Gresta Paulino Murta leomurta@gmail.com O Que é JDBC? API de acesso a banco de dados relacional do Java Faz uso do driver provido pelo banco de dados Roda SQL (create, insert, update, etc.) no

Leia mais

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance.

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance. Atualização de Estatísticas Um objeto de estatística pode ser atualizado manualmente pelo usuário, através dos comandos SP_UPDATESTATS e/ou UPDATE STATISTICS. Enquanto que a procedure SP_UPDATESTATS atualiza

Leia mais

Núcleo de Pós Graduação Pitágoras

Núcleo de Pós Graduação Pitágoras Núcleo de Pós Graduação Pitágoras Professor: Fernando Zaidan Disciplina: Modelagem e Projeto de Banco de Dados Especialização em Tecnologia da Informação - Ênfases Março- 2009 1 Modelo Físico Introdução

Leia mais

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Structured Query Language (SQL) Ambiente Simplificado de um SGBD Structured Query Language (SQL) Ambiente Simplificado de um SGBD 2 1 Características dos SGBDs Natureza auto-contida de um sistema de banco de dados: metadados armazenados num catálogo ou dicionário de

Leia mais

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005

Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Nome Número: Série Aula Extra Conexão ODBC para aplicações Delphi 7 que usam SQL Server 2005 Proposta do projeto: Competências: Compreender a orientação a objetos e arquitetura cliente-servidor, aplicando-as

Leia mais

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) Linguagem comercial para BD relacional padrão ISO desde a década de 80 SQL (86); SQL-2 (92); SQL-3 (99) e SQL:2003 não é apenas uma linguagem de consulta! como o nome sugere...

Leia mais

O que são Bancos de Dados?

O que são Bancos de Dados? SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados

Leia mais

Integrando Java com Banco de Dados

Integrando Java com Banco de Dados Especialização em Engenharia de Software Programação Orientada a Objetos JDBC Java Database Connectivity Sérgio Soares scbs@cin.ufpe.br Objetivos Apresentar os conceitos básicos da especificação de Java

Leia mais

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL

Banco de Dados. Marcio de Carvalho Victorino www.dominandoti.eng.br. Exercícios SQL Banco de Dados Exercícios SQL 1 TRF (ESAF 2006) 32. Analise as seguintes afirmações relacionadas a Bancos de Dados e à linguagem SQL: I. A cláusula GROUP BY do comando SELECT é utilizada para dividir colunas

Leia mais

Introdução à linguagem SQL

Introdução à linguagem SQL Introdução à linguagem SQL 1 Histórico A linguagem de consulta estruturada (SQL - Structured Query Language) foi desenvolvida pela empresa IBM, no final dos anos 70. O primeiro banco de dados comercial

Leia mais