1. ¿Qué es una transacción?
Una transacción es un mecanismo, una secuencia de operaciones, que contiene un conjunto de comandos de operación de la base de datos, y todos los comandos se envían al sistema en su conjunto.
O cancelar la solicitud de operación, es decir, se ejecutará todo este grupo de bases de datos o no se ejecutará ninguna. Es especialmente adecuado para sistemas de bases de datos operados por múltiples usuarios al mismo tiempo.
Una transacción es una serie de operaciones realizadas como una única unidad lógica de trabajo.
Una unidad lógica de trabajo debe tener 4 atributos:
Atomicidad: una transacción es una operación completa y los elementos de la transacción no se pueden dividir más. Todos los elementos deben confirmarse o revertirse en su conjunto.
Coherencia: cuando se completa una transacción, los datos deben estar en un estado consistente.
Aislamiento: todas las transacciones concurrentes se aíslan entre sí al modificar datos.
Durabilidad: una vez completada la transacción, el impacto en el sistema es permanente.
2. Crea una transacción
Iniciar transacción: iniciar transacción
Confirmar transacción: confirmar transacción
Transacción de reversión (deshacer): transacción de reversión
código
usar studb
ir
si existe (seleccione * de sysobjects donde nombre = 'banco')
banco de mesa abatible
crear banco de mesa
(
nombre del cliente char(10), --nombre del cliente
dinero dinero actual --saldo
)
ir
--Agregue la restricción de verificación de que el saldo de la cuenta no puede ser inferior a 1
alterar el banco de mesa
agregar restricción CK_currentMoney check(currentMoney >= 1)
ir
insertar en valores bancarios ('Zhang San', 1000)
insertar en valores bancarios('李思',1)
seleccione * del banco
-------------------------------------------------- --------
--------------- * * * * 事* * 事* * * * -------------
-------------------------------------------------- --------
usar studb
ir
establecer nocount en: no mostrar la información del número de fila afectado
imprimir 'Datos antes de la transacción:'
seleccione * del banco
ir
comenzar la transacción
declarar @errorSum int
establecer @errorSum=0
actualizar conjunto de banco currentMoney = currentMoney-1000 donde nombre de cliente = 'Zhang San'
actualizar banco establecido currentMoney = currentMoney+1000 donde nombre de cliente = '李思'
establecer @SumaError = @SumaError + 1
imprimir 'Datos en la transacción:'
seleccione * del banco
si @errorSum <> 0
comenzar
imprimir 'Transacción fallida, transacción de reversión'
transacción de reversión
fin
demás
comenzar
imprimir 'Transacción exitosa, confirmar la transacción, escribir en el disco duro, guardar permanentemente'
confirmar transacción
fin
ir
imprimir 'Datos después de la transacción:'
seleccione * del banco
-------------------------------------------------- --------
--------------- * * * * Cita* * Cita* * * * -------------
-------------------------------------------------- --------
--Index: Es el método interno de SQL Server para organizar los datos.
--Los índices se pueden dividir en los siguientes tres tipos;
--Índice único: no se permite que dos filas tengan el mismo valor de índice
--Índice de clave principal: un tipo especial de índice de clave principal que crea automáticamente un índice único al definir una clave principal para una tabla. Se requiere que cada valor de la clave principal sea único.
--Índice agrupado: el orden físico de las filas de la tabla es el mismo que el orden lógico (índice) de los valores clave. La tabla solo puede contener un índice agrupado (puede entenderse como el pinyin del diccionario).
--Índice no agrupado: los datos y el índice contienen puntos a las ubicaciones correspondientes donde se almacenan los datos. El orden físico de las filas de la tabla no coincide con el orden lógico de los valores clave. (puede entenderse como MAP)
--Los índices agrupados son más rápidos que los índices no agrupados
--Solo puede haber un índice agrupado en una tabla, pero puede haber varios índices no agrupados. Si configura una columna como clave principal, la columna será un índice agrupado de forma predeterminada.
--La tabla no puede tener índice y el índice de clave principal no es necesariamente un índice agrupado.
--¿Dónde se utiliza el índice?
--Esta columna se busca y utiliza con frecuencia para ordenar datos.
--El tipo incorrecto solo tiene unos pocos valores diferentes y solo hay unas pocas filas de datos en la tabla, por lo que no es necesario utilizar un índice.
--gramática
--crear índice [único][agrupado|no agrupado] nombre_índice en nombre_tabla (nombre_columna[,nombre_columna]...)
--[
-- con factor de relleno = x --El factor de relleno x es un valor entre 0 y 100
--]
código
usar studb
ir
si existe (seleccione [nombre] de sysindexes donde [nombre]='IX_stuMarks_writingExam')
soltar el índice stuMarks.IX_stuMarks_writeExam: consulta si el índice ya existe y elimínalo si existe
crear un índice no agrupado IX_stuMarks_writingExam en stuMarks (escritoExam)
con factor de relleno=30 --Factor de relleno espacio reservado
ir
--Consulta
seleccione * de estumarks (index=IX_stuMarks_writingExam)
--Se informará un error: hay un error de sintaxis cerca de 'índice'. Si va a ser parte de una sugerencia de tabla, debe tener la palabra clave CON y paréntesis, como por ejemplo:
seleccione * de las notas con (index=IX_stuMarks_writingExam)
seleccione * de las notas con (index=IX_stuMarks_writingExam) donde el examen escrito está entre 60 y 90
-------------------------------------------------- --------
--------------- * * * * Ver* * Imagen* * * * ----------------
-------------------------------------------------- --------
Ver: es una tabla virtual, un método de consulta basado en los datos de una tabla o varias tablas.
Funciones generales: filtrar filas en tablas, evitar que usuarios no autorizados accedan a datos confidenciales, abstraer múltiples tablas de datos físicos en una tabla de datos lógica
--gramática:
--crear vista nombre_vista
--como
--<seleccionar declaración>
código
usar studb
ir
si existe (seleccione * de sysobjects donde nombre = 'view_stuinfo_stumarks')
soltar vista view_stuinfo_stumarks
ir
crear vista view_stuinfo_stumarks
como
seleccione nombre=stuname, número de estudiante=stuinfo.stuno, puntaje de la prueba escrita=examen escrito, puntaje de la prueba de computadora=labexam,
puntuación promedio = (examen escrito+labexam)/2 de stuinfo izquierda unirse a stumarks en stuinfo.stuno = stumarks.stuno
ir