1. O que é uma transação?
Uma transação é um mecanismo, uma sequência de operação, que contém um conjunto de comandos de operação de banco de dados, e todos os comandos são enviados ao sistema como um todo
Ou cancele a solicitação da operação, ou seja, ou todo esse grupo de bancos de dados será executado, ou nenhum deles será executado. É especialmente adequado para sistemas de banco de dados operados por vários usuários ao mesmo tempo.
Uma transação é uma série de operações executadas como uma única unidade lógica de trabalho.
Uma unidade lógica de trabalho deve ter 4 atributos:
Atomicidade: Uma transação é uma operação completa e os elementos da transação não podem ser divididos posteriormente. Todos os elementos devem ser confirmados ou revertidos como um todo.
Consistência: quando uma transação é concluída, os dados devem estar em um estado consistente.
Isolamento: todas as transações simultâneas são isoladas umas das outras ao modificar os dados.
Durabilidade: Após a conclusão da transação, o impacto no sistema é permanente.
2. Crie uma transação
Iniciar transação: iniciar transação
Confirmar transação: confirmar transação
Transação de reversão (desfazer): transação de reversão
código
usar pino
ir
se existir (selecione * em sysobjects onde nome = 'banco')
banco de mesa drop
criar banco de mesa
(
nome do cliente char(10), --nome do cliente
currentMoney dinheiro --saldo
)
ir
--Adicionar restrição de verificação de que o saldo da conta não pode ser inferior a 1
alterar banco de mesa
adicionar restrição CK_currentMoney check(currentMoney >= 1)
ir
inserir em valores do banco('Zhang San',1000)
inserir nos valores do banco('李思',1)
selecione * do banco
-------------------------------------------------- --------
--------------- * * * * 事* * 事* * * * -------------
-------------------------------------------------- --------
usar pino
ir
set nocount on --Não exibe informações do número da linha afetada
imprima 'Dados antes da transação:'
selecione * do banco
ir
iniciar transação
declare @errorSum int
definir @errorSum=0
atualizar conjunto de banco currentMoney = currentMoney-1000 onde customername='Zhang San'
atualizar banco definir currentMoney = currentMoney+1000 onde customername='李思'
definir @errorSum = @errorSum + 1
imprima 'Dados na transação:'
selecione * do banco
se @errorSum <> 0
começar
print 'Falha na transação, transação de reversão'
transação de reversão
fim
outro
começar
print 'Transação bem-sucedida, confirmar transação, gravar no disco rígido, salvar permanentemente'
confirmar transação
fim
ir
imprima 'Dados após transação:'
selecione * do banco
-------------------------------------------------- --------
--------------- * * * * Citação* * Citação* * * * -------------
-------------------------------------------------- --------
--Index: É o método interno do SQL Server para organizar dados
--Os índices podem ser divididos nos três tipos a seguir;
--Índice exclusivo: duas linhas não podem ter o mesmo valor de índice
--Índice de chave primária: um tipo especial de índice de chave primária que cria automaticamente um índice exclusivo ao definir uma chave primária para uma tabela. Cada valor na chave primária deve ser exclusivo.
--Índice clusterizado: A ordem física das linhas na tabela é igual à ordem lógica (índice) dos valores-chave. A tabela pode conter apenas um índice clusterizado (pode ser entendido como o pinyin do dicionário).
--Índice não clusterizado: os dados e o índice contêm pontos para os locais correspondentes onde os dados são armazenados. A ordem física das linhas na tabela não corresponde à ordem lógica dos valores-chave. (pode ser entendido como MAP)
--Índices clusterizados são mais rápidos que índices não clusterizados
--Só pode haver um índice clusterizado em uma tabela, mas pode haver vários índices não clusterizados. Se você definir uma coluna como chave primária, a coluna será um índice clusterizado por padrão.
--A tabela não pode ter índice e o índice de chave primária não é necessariamente um índice clusterizado.
--Onde o índice é usado?
--Esta coluna é frequentemente pesquisada e usada para classificar dados
--O tipo incorreto possui apenas alguns valores diferentes e existem apenas algumas linhas de dados na tabela, portanto, não há necessidade de usar um índice.
--gramática
--criar [exclusivo][clustered|nonclustered] índice index_name em table_name (column_name[,column_name]...)
--[
-- com fillfactor = x --O fator de preenchimento x é um valor entre 0 e 100
--]
código
usar pino
ir
se existir (selecione [nome] em sysindexes onde [nome]='IX_stuMarks_writedExam')
drop index stuMarks.IX_stuMarks_writedExam --consulta se o índice já existe e exclua-o se existir
crie um índice não clusterizado IX_stuMarks_writeExam em stuMarks(writingExam)
com fillfactor=30 --Fill factor espaço reservado
ir
--Consulta
selecione * nos stumarks (index = IX_stuMarks_writedExam)
--Um erro será relatado: Há um erro de sintaxe próximo ao 'índice'. Para fazer parte de uma dica de tabela, deve conter a palavra-chave WITH e parênteses, como:
selecione * dos stumarks com (index = IX_stuMarks_writedExam)
selecione * dos stumarks com (index = IX_stuMarks_writingExam) onde WritingExam entre 60 e 90
-------------------------------------------------- --------
--------------- * * * * Visualizar* * Foto* * * * ----------------
-------------------------------------------------- --------
Ver: É uma tabela virtual, um método de consulta baseado nos dados de uma tabela ou de várias tabelas.
Funções gerais: filtrar linhas em tabelas, impedir que usuários não autorizados acessem dados confidenciais, abstrair várias tabelas de dados físicos em uma tabela de dados lógicos
--gramática:
--criar visualização nome_visualização
--como
--<selecionar instrução>
código
usar pino
ir
se existir (selecione * em sysobjects onde name='view_stuinfo_stumarks')
soltar visualização view_stuinfo_stumarks
ir
criar visualização view_stuinfo_stumarks
como
selecione nome = nome do aluno, número do aluno = stuinfo.stuno, pontuação do teste escrito = exame escrito, pontuação do teste de computador = labexam,
pontuação média = (exame escrito + exame lab) / 2 do stuinfo à esquerda, junte-se aos stumarks em stuinfo.stuno = stumarks.stuno
ir