SQL Avanzado
SQL Avanzado
BASE DE DATOS II
SQL AVANZADO
1.1.
Vistas
1.8.
COMMIT y ROLLBACK Transacci 1.2.
LOCK de recursos Condicionales
ones Estructu
Multiusuar Bucles
ras SQL
io
1.7.
Control SQL 1.3. Funciones escalares
de Avanzad Funcio Funciones con valores
Concurre nes de tabla
ncia o
1.4.
1.6. Procedim
Cursore ientos Parámetros IN, OUT
s almacena Ejecución programada
dos
1.5.
Triggers Eventos AFTER, BEFORE
2
1
12/3/2024
1.1 Vistas
3
INTRODUCCIÓN
Una base de datos es una colección de información organizada de forma que un programa de
ordenador pueda seleccionar rápidamente los fragmentos de datos que necesite, una base de
datos es un sistema de archivos electrónico.
2
12/3/2024
3
12/3/2024
Principal o Main Data File con extensión (.mdf), es el archivo de datos principal donde se
encuentra la información inicial de la base de datos, en este archivo se almacenan los datos
y los objetos del usuario. La unidad fundamental de almacenamiento de datos en SQL
Server es una página. Una página de almacenamiento asignada a la base de datos se divide
en páginas lógicas numeradas de 0 a 𝑛. Una sola página comienza con un encabezado de
96 bytes que se compone de ID de página, tipo de estructura a la que pertenece la página,
número de registros en la página y punteros a las páginas anterior y siguiente.
Secundarios o Secondary Data File con extensión (.ndf) son los archivos de datos
secundarios donde la base de datos puede contener uno o varios, son opcionales, están
definidos por el usuario y almacenan los datos de los usuarios, se pueden utilizar para
repartir la información en varios discos agregando cada archivo en una unidad de disco
diferente.
De registro o Log Data File con extensión (.log) son archivos del registro de transacciones,
contiene la información de se utiliza para la recuperación de la base de datos, cada BD debe
contar con al menos un archivo de registro.
8
4
12/3/2024
Una vez guardado el registro en la memoria, se guarda en el archivo log (.ldf), la transacción
realizada.
10
10
5
12/3/2024
Una vez guardado el registro en el archivo log, se guarda en el archivo de datos (.mdf).
11
11
12
6
12/3/2024
13
13
USE [master]
GO
CREATE DATABASE [prueba]
ON
( NAME = 'prueba’,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\prueba.mdf’ ,
SIZE = 2304KB , MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB )
LOG ON
( NAME = 'prueba_log’,
FILENAME = 'C:\Program Files\Microsoft SQL
Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\prueba_log.LDF’ ,
SIZE = 576KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 10%)
GO
14
14
7
12/3/2024
15
15
Restricciones:
NOT NULL
UNIQUE
CHECK
PRIMARY KEY
FOREIGN KEY
16
16
8
12/3/2024
USE [Prueba21]
GO
17
USE [instituto]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[FATEK](
[idfatek] [smallint] IDENTITY(1,1) NOT NULL,
[fatek] [varchar](50) NOT NULL,
[estado] [smallint] NULL,
CONSTRAINT [PK_FATEK] PRIMARY KEY CLUSTERED
([fatek] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
18
18
9
12/3/2024
19
19
RESPALDO DIFERENCIAL
Solo realizan una copia de los datos nuevos y modificados a partir del último respaldo
completo, ideal para grandes bases de datos o con poca densidad de transacciones, requiere
menos espacio que un respaldo completo
20
20
10
12/3/2024
21
21
22
22
11
12/3/2024
23
23
24
24
12
12/3/2024
25
25
Ejemplos:
26
26
13
12/3/2024
UPDATE
UPDATE esquema.tabla SET col1=valor1, col2=valor2
UPDATE c
SET c.idVendedor=v.id, c.idOficina=v.idDepartamento
FROM Clientes AS c
JOIN Vendedor AS v ON v.id=c.idVendedor
WHERE v.idDepartamento > 5
27
27
DELETE
DELETE FROM esquema.tabla
28
28
14
12/3/2024
MERGE
Investigar el uso y aplicación del comando MERGE
Si tiene una lista de docentes en Excel, como puede realizar la inserción de datos de la
manera más sencilla en SQL Server
29
29
JOIN
30
30
15
12/3/2024
UNION
31
31
32
32
16
12/3/2024
GROUP BY – ORDER BY
33
33
Ejercicio:
Crear una Base de Datos con el nombre Ejemplo1
Crea una tabla con el nombre Personas, con los siguientes campos: id, nombre, apellido,
tipo.
Inserta empleados y clientes.
Actualiza los empleados con el tipo cliente.
Actualiza clientes con el tipo empleado.
Elimina los clientes.
¿Cuál es el resultado final de los datos de la tabla?
34
34
17
12/3/2024
35
35
La cláusula WITH NO DATA indica que las definiciones de columna deben copiarse sin los
datos.
36
36
18
12/3/2024
TABLAS TEMPORALES
Las tablas temporales son objetos que se almacenan en la base de datos tempdb, se usan
para manipular grandes cantidades de datos.
Tabla Temporal Local: Se utiliza con un # (hash) para indicar que la tabla temporal será
utilizada localmente (Solo será accedida a través de la conexión con cual fue creada). Esta
tabla es destruida automáticamente en cuanto se cierre la conexión de SQL Server, a menos
que no se haya eliminado la tabla manualmente mediante el Query.
Tabla Temporal Global: Se utiliza con doble ## (hash) para indicar que la tabla temporal
será utilizada globalmente. Esta tabla puede utilizarla cualquier conexión de SQL Server y
estas conexiones pueden modificar, borrar o eliminar la tabla temporal y sus registros. Al
igual que las tablas temporales locales, esta se destruye cuando la última sesión utilizada
por esta, cierre sesión.
37
37
USE [prueba1]
GO
38
19
12/3/2024
39
VISTAS
Una vista es una tabla virtual cuyo contenido está definido por una consulta. Al igual que una
tabla, una vista consta de un conjunto de columnas y filas de datos con un nombre. Las filas y
las columnas de datos proceden de tablas a las que se hace referencia en la consulta que
define la vista y se producen de forma dinámica cuando se hace referencia a la vista.
Una vista actúa como filtro de las tablas subyacentes a las que se hace referencia en ella. La
consulta que define la vista puede provenir de una o de varias tablas, o bien de otras vistas de
la base de datos actual u otras bases de datos. Asimismo, es posible utilizar las consultas
distribuidas para definir vistas que utilicen datos de orígenes heterogéneos.
Se puede usar una vista para lo siguiente:
Para centrar, simplificar y personalizar la percepción de la base de datos para cada usuario.
Como mecanismo de seguridad, que permite a los usuarios obtener acceso a los datos por
medio de la vista, pero no les conceden el permiso de obtener acceso directo a las tablas
base subyacentes de la vista.
Para proporcionar una interfaz compatible con versiones anteriores para emular una tabla
cuyo esquema ha cambiado.
40
40
20
12/3/2024
TIPOS DE VISTAS
Vistas básicas, definidas por el usuario.
Vistas indizadas, es una vista que se ha materializado. Esto significa que se ha calculado la
definición de la vista y que los datos resultantes se han almacenado como una tabla. Las
vistas indizadas funcionan mejor para consultas que agregan muchas filas. No son
adecuadas para conjuntos de datos subyacentes que se actualizan frecuentemente.
Vistas con particiones, combina datos horizontales con particiones de un conjunto de tablas
miembro en uno o más servidores. Esto hace que los datos aparezcan como si fueran de
una tabla.
Vistas del sistema, exponen metadatos de catálogo. Puede usar las vistas del sistema para
devolver información acerca de la instancia de SQL Server u objetos definidos en la
instancia. Por ejemplo, puede consultar la vista de catálogo sys.databases para devolver
información sobre las bases de datos definidas por el usuario disponibles en la instancia.
41
41
42
42
21
12/3/2024
USE [prueba1]
GO
CREATE VIEW [dbo].[Datos_Facultad]
AS
SELECT *
FROM FACULTAD
GO
USE AdventureWorks2019 ; GO
CREATE VIEW HumanResources.EmployeeHireDate
AS
SELECT p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID ;
GO
43
Use Empresas
GO
Group By d.nombreDepartamento
GO
44
44
22
12/3/2024
45
46
23
12/3/2024
47
MODIFICANDO VISTAS
Restricciones y limitaciones
La modificación de una vista no afecta a los objetos dependientes, como pueden ser los
procedimientos almacenados o los desencadenadores, a menos que la definición de la vista
cambie de tal modo que el objeto dependiente deje de ser válido.
Si una vista que está actualmente en uso se modifica mediante ALTER VIEW, el Motor de
base de datos impone un bloqueo exclusivo de esquema sobre la vista. Cuando se concede
el bloqueo, y no hay usuarios activos de la vista, el Motor de base de datos elimina todas las
copias de la vista de la caché de procedimientos
ALTER VIEW se puede aplicar a vistas indizadas; no obstante, quita incondicionalmente
todos los índices de la vista.
Seguridad
Para ejecutar ALTER VIEW, como mínimo, se necesita el permiso ALTER en OBJECT.
48
48
24
12/3/2024
USE AdventureWorks2019 ;
GO
-- Crear la vista.
CREATE VIEW HumanResources.EmployeeHireDate
AS
SELECT p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID ;
-- Modificar la vista añadiendo una clausula WHERE
ALTER VIEW HumanResources.EmployeeHireDate
AS
SELECT p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID
WHERE HireDate < CONVERT(DATETIME,'20020101',101) ;
GO
49
49
50
50
25
12/3/2024
USE AdventureWorks2012 ;
GO
UPDATE HumanResources.vEmployeeDepartmentHistory
SET StartDate = '20110203', EndDate = GETDATE()
WHERE LastName = N'Smith' AND FirstName = 'Samantha';
GO
51
51
52
52
26
12/3/2024
USE AdventureWorks2012 ;
GO
IF OBJECT_ID ('HumanResources.EmployeeHireDate', 'V') IS NOT NULL
DROP VIEW HumanResources.EmployeeHireDate;
GO
53
53
Ejercicio:
Crear un login en SQL server
Crear una vista para restringir el acceso: atributos (emp_id, emp_nombre, fecha), para fecha
igual a 22/2/2023
Crear una vista para unir dos tablas: atributos (emp_id, nombre_id, reg_id, nombre).
54
54
27
12/3/2024
1.2 Funciones
55
55
56
56
28
12/3/2024
FUNCIONES DE AGREGADO
FUNCIÓN DESCRIPCIÓN
CAST Convierte un tipo de dato en otro
CONVERT Convierte un tipo de dato a otro y permite darle un estilo
TRY_CAST Convierte un tipo de dato a otro, si falla devuelve NULL
TRY_CONVERT Convierte un tipo de dato a otro y permite darle un estilo, si falla
devuelve NULL
57
57
FUNCIONES DE CONVERSIÓN
FUNCIÓN DESCRIPCIÓN
CAST Convierte un tipo de dato en otro
CONVERT Convierte un tipo de dato a otro y permite darle un estilo
TRY_CAST Convierte un tipo de dato a otro, si falla devuelve NULL
TRY_CONVERT Convierte un tipo de dato a otro y permite darle un estilo, si falla
devuelve NULL
58
58
29
12/3/2024
59
59
FUNCIONES DE CADENA
FUNCIÓN DESCRIPCIÓN
CHARINDEX Busca una expresión de caracteres dentro de una segunda expresión
de caracteres (posición)
CONCAT Devuelve una cadena resultante de la concatenación de dos o mas
cadenas
LEFT Devuelve el numero de caracteres desde la izquierda
LEN Devuelve la longitud de la cadena.
LOWER Convierte la cadena en minúsculas
LTRIM Quita los espacios en blanco de la izquierda de una cadena
REPLACE Reemplaza un carácter por otro en una cadena
60
60
30
12/3/2024
1.3 Procedimiento
s Almacenados
y Funciones
61
61
PROCEDIMIENTOS Y FUNCIONES
Una función es un conjunto de sentencias que operan como una unidad lógica.
Una función tiene un nombre, retorna un parámetro de salida y opcionalmente acepta
parámetros de entrada. Las funciones de SQL Server no pueden ser modificadas, las funciones
definidas por el usuario si.
Un procedimiento almacenado es un conjunto de instrucciones a las que se les da un nombre,
que se almacena en el servidor. Permiten encapsular tareas repetitivas.
Por lo general, los administradores de bases de datos prefieren los procedimientos
almacenados en SQL en vez de funciones en SQL Server. ¿Es esta una buena práctica?
62
62
31
12/3/2024
exec HelloWorldprocedure
63
63
64
64
32
12/3/2024
INVOCACIÓN
exec HolaMundoprocedure
execute HolaMundoprocedure
execute dbo.HolaMundoprocedure
HolaMundoprocedure
65
65
MANEJO DE VARIABLES
Convertir grados Celsius a Fahrenheit utilizando procedimientos almacenados y funciones.
exec Conversionprocedure 0
66
66
33
12/3/2024
67
67
1.4 Estructuras
SQL
68
68
34
12/3/2024
LENGUAJE DE CONTROL DE
FLUJO
El lenguaje de control de flujo permite controlar bloques de sentencias dándole un sentido
programado.
Elementos del Control de flujo:
IF...ELSE.
BEGIN...END.
WHILE.
BREAK.
CONTINUE.
RETURN.
TRY...CATCH.
CASE.
RAISERROR.
69
69
BEGIN – END
Begin- End: agrupa un conjunto de instrucciones que forman parte de una instrucción de
control de flujo.
BEGIN
{ sql_statement | statement_block }
END
70
70
35
12/3/2024
IF - ELSE
La sentencia IF permite evaluar una o más condiciones, si esta condición resulta verdadera se
ejecutara un bloque de sentencias en un BEGIN… END, si resulta falso, opcionalmente con la
sentencia ELSE puede ejecutar otro bloque de sentencias contenidas en un BEGIN… END.
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
71
71
WHILE
Establece una condición para la ejecución repetida de una instrucción o bloque de
instrucciones SQL, las instrucciones se ejecutan repetidamente siempre que la condición
especificada sea verdadera. Se puede controlar la ejecución de instrucciones en el bucle
WHILE con las palabras clave BREAK y CONTINUE
WHILE Boolean_expression
{ sql_statement | statement_block | BREAK | CONTINUE }
BREAK: Produce la salida del bucle WHILE más interno, se ejecutan las instrucciones que
aparecen después de la palabra clave END, que marca el final del bucle.
CONTINUE: Hace que se reinicie el bucle WHILE y omite las instrucciones que haya después
de la palabra clave CONTINUE.
EXISTS: Se usa como condición, el WHILE será verdadero mientras exista valor en la
condición.
72
72
36
12/3/2024
73
73
Utilizando el lenguaje SQL, desarrollar el código necesario para crear una variable tipo tabla,
llamada personas, con los campos id, nombres, primerApellido, en concordancia con la
tabla Personas de la BD Empresas.
Declarar dos variables id1 (int) con valor inicial igual a 0, y cadena (varchar(100)).
Se debe llenar la tabla @personas con los primeros 10 datos de la tabla Personas de la BD
Empresas.
Generar un ciclo repetitivo que permita realizar las siguientes actividades:
Guardar del primer registro, el numero de Id de la tabla en la variable id1.
Guardar del primer registro, en la variable cadena, el nombre y el primer apellido.
Imprimir la variable cadena.
Eliminar el registro que coincida con la variable id1.
74
74
37
12/3/2024
75
TRY – CATCH
Es un mecanismo de control de errores, se puede incluir un grupo de instrucciones Transact-
SQL en un bloque TRY, si se produce un error en el bloque TRY, el control se transfiere a otro
grupo de instrucciones que está incluido en un bloque CATCH.
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
76
76
38
12/3/2024
Begin Try
Select 1/0;
--División entre 0
End Try
Begin Catch
Select
ERROR_NUMBER() As NumeroError,
ERROR_SEVERITY() As GravedadError,
ERROR_STATE() As EstadoError,
ERROR_PROCEDURE() As ProcedimientoError,
ERROR_LINE() As LineaError,
ERROR_MESSAGE() As MensajeError;
End Catch;
GO
77
77
RAISEERROR
Genera un mensaje de error e inicia el procesamiento de errores de la sesión. RAISERROR
puede hacer referencia a un mensaje definido por el usuario almacenado en la vista de
catálogo sys.messages o puede generar un mensaje dinámicamente, el mensaje se devuelve
como un mensaje de error de servidor a la aplicación que realiza la llamada o a un bloque
CATCH asociado de una construcción TRY…CATCH.
78
78
39
12/3/2024
THROW
Genera una excepción y transfiere la ejecución a un bloque CATCH de una construcción
TRY…CATCH en SQL Server.
79
79
Use tempdb;
Go
80
80
40
12/3/2024
CASE
Evalúa una lista de condiciones y devuelve una de las varias expresiones de resultado posibles.
La expresión CASE tiene dos formatos:
La expresión CASE sencilla compara una expresión con un conjunto de expresiones
sencillas para determinar el resultado.
La expresión CASE buscada evalúa un conjunto de expresiones booleanas para determinar
el resultado.
Ambos formatos admiten un argumento ELSE opcional.
81
81
--Case Simple
Case expresión de entrada
When expresión_when Then expresión_resultado […n]
[ELSE resultado_ELSE]
End
--Case Buscada
Case expresión de entrada
When expresión_booleana Then expresión_resultado […n]
[ELSE resultado_ELSE]
End
82
82
41
12/3/2024
83
83
FUNCIONES ESCALARES
Las funciones escalares definidas por el usuario devuelven un único valor de datos del tipo
definido en la cláusula RETURNS.
El tipo devuelto puede ser de cualquier tipo de datos excepto text, ntext, image, cursor y
timestamp.
84
42
12/3/2024
85
86
43
12/3/2024
PROCEDIMIENTOS ALMACENADOS
Un procedimiento almacenado de SQL Server es un grupo de una o varias instrucciones.
Los procedimientos se asemejan a las construcciones de otros lenguajes de programación,
porque pueden:
Aceptar parámetros de entrada
Contener llamadas a otros procedimientos.
Realizar operaciones en la base de datos.
Devolver un valor de estado.
Ventajas de SP
Tráfico de red reducido entre el cliente y el servidor.
Mayor seguridad.
Reutilización del código.
Mantenimiento más sencillo.
Rendimiento mejorado.
87
87
USE instituto
GO
88
44
12/3/2024
DISPARADORES (TRIGGERS)
Un trigger (disparador o desencadenador) es un tipo de procedimiento almacenado que se
ejecuta cuando se intenta modificar los datos de una tabla (o vista), para lo cual, se definen
para una tabla (o vista) específica. Se crean para conservar la integridad referencial y la
coherencia entre los datos entre distintas tablas.
Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla en la que se definió
un disparador (inserción, actualización y eliminación), el disparador se ejecuta en forma
automática. Un trigger se asocia a un evento (inserción, actualización o borrado) sobre una
tabla.
89
89
La diferencia con los procedimientos almacenados del sistema es que los triggers:
no pueden ser invocados directamente; al intentar modificar los datos de una tabla, el
disparador se ejecuta automáticamente.
no reciben y retornan parámetros.
son apropiados para mantener la integridad de los datos, no para obtener resultados de
consultas.
90
90
45
12/3/2024
Cuando se activa un disparador insert, los registros se agregan a la tabla del disparador y a
una tabla denominada inserted, es una tabla virtual que contiene una copia de los registros
insertados; tiene una estructura similar a la tabla en que se define el disparador, es decir, la
tabla en que se intenta la acción. La tabla inserted guarda los valores nuevos de los registros.
Dentro del trigger se puede acceder a esta tabla virtual que contiene todos los registros
insertados
91
91
USE Hospital
GO
END
92
92
46
12/3/2024
USE Hospital
GO
END
93
93
USE Hospital
GO
END
94
94
47
12/3/2024
CURSORES
SQL Server es un sistema de administración de bases de datos relacional (relational database
management system, RDBMS) y T-SQL es un lenguaje de programación transaccional. Esto
significa que está diseñado para ejecutar su trabajo en corridas de todo o nada. El motor de la
base de datos es optimizado para trabajar de esta manera y, en general, es más que suficiente
para ejecutar transacciones simples de tipo todo en uno.
Muchos otros lenguajes de programación incluyendo a C# y Visual Basic son lenguajes de
programación iterativos o procesales, por lo cual el flujo general de cosas es tratar cada
instancia de un objeto separadamente y cuando se trata con muchos objetos uno tendería a
dar vueltas sobre el mismo código hasta que la pila es disminuida y procesada.
Sin embargo, los cursores, como los bucles WHILE se alejan de la naturaleza transaccional de
T-SQL y permiten a los programadores tratar cada resultado de una sentencia SELECT en una
cierta manera iterando a través de ellos.
95
95
USE Hospital
GO
DECLARE @item varchar(75)
DECLARE item_cursor CURSOR
FOR
SELECT cargo
FROM CARGO
OPEN item_cursor
FETCH NEXT FROM item_cursor INTO @item
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT cargo
FROM CARGO
FETCH NEXT FROM item_cursor INTO @item
END
CLOSE ITEM_CURSOR
DEALLOCATE ITEM_CURSOR
96
96
48
12/3/2024
97
97
1.7 Control de
concurrencia
98
98
49
12/3/2024
INTRODUCCIÓN
Un entorno multiusuario es un entorno al que varios usuarios pueden conectarse y en el que
pueden realizar cambios en la misma base de datos. Como resultado, es posible que varios
usuarios estén trabajando con los mismos objetos de la base de datos a la vez. De este modo,
en un entorno multiusuario es posible que la base de datos se vea afectada por los cambios
realizados por otros usuarios mientras está trabajando y viceversa.
Una cuestión clave al trabajar con bases de datos en un entorno multiusuario son los permisos
de acceso. Los permisos de que dispone para la base de datos determinan el alcance del
trabajo que puede realizar con la base de datos. Por ejemplo, para realizar cambios en objetos
en una base de datos, debe disponer de los permisos de escritura apropiados para la base de
datos.
Cuando se guardan los cambios realizados en las tablas, el Diseñador de Tablas comprueba
que la base de datos no se ha modificado desde que se guardaron los cambios por última vez.
Si otro usuario ha realizado cambios, se le notificará que se ha modificado la base de datos. Es
posible que necesite reconciliar estos cambios.
99
99
100
100
50
12/3/2024
101
101
102
102
51
12/3/2024
Casilla securityadmin
Los miembros del rol fijo de servidor securityadmin administran los inicios de sesión y sus
propiedades. Administran los permisos de servidor GRANT, DENY y REVOKE. También
administran los permisos de base de datos GRANT, DENY y REVOKE. Asimismo, pueden
restablecer contraseñas para inicios de sesión de SQL Server .
Casilla serveradmin
Los miembros del rol fijo de servidor serveradmin pueden cambiar opciones de configuración
en el servidor y cerrar el servidor.
Casilla setupadmin
Los miembros del rol fijo de servidor setupadmin pueden agregar y quitar servidores
vinculados, y ejecutar algunos procedimientos almacenados del sistema.
Casilla sysadmin
Los miembros del rol fijo de servidor sysadmin pueden realizar cualquier actividad en el Motor
de base de datos.
103
103
CREAR UN LOGIN
104
104
52
12/3/2024
CREAR UN USUARIO
105
105
106
106
53
12/3/2024
ARQUITECTURAS DE BD
La arquitectura de los sistemas de bases de datos está enormemente influida por el sistema
informático subyacente en el que se ejecuta el sistema de bases de datos. Los sistemas de
bases de datos pueden ser centralizados, o cliente-servidor, donde una máquina que hace de
servidor ejecuta trabajos de múltiples máquinas clientes. Los sistemas de bases de datos
también pueden diseñarse para explotar las arquitecturas paralelas de computadoras. Las
bases de datos distribuidas abarcan muchas máquinas separadas geográficamente.
107
107
108
108
54
12/3/2024
109
109
110
110
55
12/3/2024
CONTROL DE CONCURRENCIA
1. Proceso que impide que las actividades
simultáneas de una BD pierdan la integridad
de la misma.
2. Unidad de acciones realizadas sobre una
base de datos.
3. Actividades desarrolladas al mismo tiempo
en una base de datos.
4. Acceso de varios usuarios a la vez para
gestionar una BD.
5. Elementos digitales para guardar cualquier
tipo de información en una computadora.
6. Estructura de datos que permite el
almacenamiento formal de información.
111
111
ALMACENAMIENTO DE INFORMACIÓN
112
112
56
12/3/2024
113
113
TRANSACCIONES
En términos de bases de datos, una transacción es cualquier acción que lea o escriba en una
base de datos. Ampliando un poco más el concepto: Una transacción es una unidad de trabajo
lógica que debe estar totalmente terminada o abortada; no se aceptan puntos intermedios,
manteniendo el estado consistente de la Base de Datos.
El American National Standards Institute (ANSI) ha definido las normas que rigen las
transacciones de una base de datos SQL. EL soporte a una transacción es proporcionado por
dos enunciados de SQL: COMMIT Y ROLLBACK. Las normas ANSI requieren que cuantdo una
secuencia de transacción sea iniciada debe continuar en todos los enunciados SQL
subsiguientes, hasta que ocurra una de los siguientes cuatro eventos:
Se alcance un enunciado COMMIT.
Se alcance un enunciado ROLLBACK.
Se alcance de manera satisfactoria el fin del programa (equivalente a COMMIT)
El programa termina de manera anormal (equivalente a ROLLBACK)
114
114
57
12/3/2024
115
115
116
58
12/3/2024
CONCURRENCIA
Sistemas de Gestión de
Base de Datos permiten que
muchas transacciones
accedan a una misma Base
de Datos a la vez
117
117
CONTROL DE CONCURRENCIA
La coordinación de la ejecución
simultánea de transacciones
Planificador
118
59
12/3/2024
Base de datos
Tabla
Bloqueos Página
Bloqueos binarios compartidos/exclusivo Renglón o campo
s
119
119
Aunque los bloqueos evitan inconsistencias graves de datos, pueden llevar a dos problemas
importantes:
El programa de transacción resultante podría no ser seriable.
El programa podría crear interbloqueos.
120
120
60
12/3/2024
• El bloqueo de dos fases define la forma en que las transacciones obtienen y abandonan
bloqueos.
BLOQUEOS DE • Dos transacciones no pueden tener bloqueos en conflicto.
DOS FASES PARA • Ninguna operación de desbloqueo puede preceder a una operación de bloqueo.
ASEGURAR LA • No hay datos afectados sino hasta obtener todos los bloqueos.
SERIACIÓN
• Prevención de interbloqueo
• Detección de interbloqueos
CONTROL DE • Prohibición de interbloqueos
INTERBLOQUEOS
121
121
122
122
61
12/3/2024
Durante la fase de validación: La transacción es ratificada para asegurarse que los cambios
hechos no afectarán la integridad y consistencia de la base de datos. Si la prueba de
validación es positiva, la transacción pasa a la fase de escritura, Si la prueba de validación
es negativa, la transacción se reinicia y se desechan los cambios.
Durante la fase de escritura: los cambios son permanentemente aplicados a la base de
datos.
El método optimista es aceptable para casi todos los sistemas de lectura o consulta de una
base de datos que requieran pocas transacciones de actualización.
123
123
1.8 Transacciones
Multiusuario
124
124
62
12/3/2024
TRANSACCIONES MULTIUSUARIO
Una transacción es un conjunto de instrucciones que se ejecutan formando una unidad lógica
de procesamiento. Una transacción puede incluir uno o más accesos a la BD a través del uso
de diversas operaciones (inserción, eliminación, modificación, etc.).
En general se le llama multiusuario a la característica de un sistema operativo o programa que
permite proveer servicio y procesamiento a múltiples usuarios simultáneamente. En
contraposición a los sistemas mono-usuario, que proveen servicio y procesamiento a un solo
usuario, en la categoría de multiusuario se encuentran todos los sistemas que cumplen
simultáneamente las necesidades de dos o más usuarios, que comparten los mismos
recursos. Esto es imprescindible si los datos de diversas aplicaciones se deben integrar y
mantener en una sola base de datos.
125
125
Las transacciones de las bases de datos reflejan operaciones que son activadas como
comprar un producto, registrase para un curso o hacer un depósito en una cuenta de cheques.
Es probable que las transacciones contengan numerosas partes, por ejemplo: una transacción
de ventas podría requerir que se actualice la cuenta del cliente, ajustar el inventario de
productos y actualizar las cuentas por cobrar del vendedor.
Todas las partes de una transacción deben completarse de manera satisfactoria para evitar
problemas de integridad de datos.
Las principales propiedades de una transacción en bases de datos son: atomicidad,
consistencia, aislamiento y durabilidad.
126
126
63
12/3/2024
BEGIN TRANSACTION
BEGIN TRANSACTION representa un punto en el que los datos a los que hace referencia una
conexión son lógica y físicamente coherentes. Si se encuentran errores, todas las
modificaciones de datos realizadas después de BEGIN TRANSACTION se pueden revertir para
devolver los datos a este estado conocido de coherencia. Cada transacción dura hasta que se
completa sin errores y se emite COMMIT TRANSACTION para hacer que las modificaciones
sean una parte permanente de la base de datos, o se encuentran errores y todas las
modificaciones se borran con una instrucción ROLLBACK TRANSACTION.
127
127
128
128
64
12/3/2024
COMMIT Y ROLLBACK
USE Prueba;
GO
CREATE TABLE tabla1 ([valor] INT);
GO
DECLARE @NombreTransaccion VARCHAR(20) = 'Transaccion1';
BEGIN TRAN @NombreTransaccion
INSERT INTO tabla1 VALUES(1), (2);
ROLLBACK TRAN @NombreTransaccion
INSERT INTO tabla1 VALUES(3),(4);
SELECT [valor] FROM tabla1;
DROP TABLE tabla1;
129
129
130
65
12/3/2024
131
131
132
132
66
12/3/2024
133
133
TIPOS DE TRANSACCIONES
Por regla general en un sistema de base de datos todas las operaciones relacionadas entre sí
que se ejecuten dentro un mismo flujo lógico de trabajo, deben ejecutarse en bloque. De esta
manera si todas funcionan la operación conjunta de bloque tiene éxito, pero si falla cualquiera
de ellas, deberán retrocederse todas las anteriores que ya se hayan realizado. De esta forma
se evita que el sistema de datos quede en un estado incongruente.
134
134
67
12/3/2024
Por ejemplo, al ir al banco para ordenar una transferencia de pago de una compra que hemos
realizado por Internet, el proceso en sí está formado por una conjunto (o bloque) de
operaciones que deben ser realizadas para que la operación global tenga éxito:
Comprobar que nuestra cuenta existe, es válida y está operativa.
Comprobar si hay saldo en nuestra cuenta.
Comprobar los datos de la cuenta del vendedor (que existe, que tiene posibilidad de recibir
dinero, etc...).
Retirar el dinero de nuestra cuenta
Ingresar el dinero en la cuenta del vendedor.
Dentro de este proceso hay cinco operaciones, las cuales deben tener éxito o fallar
conjuntamente.
135
135
Otro tema importante relacionado con las transacciones es la gestión de la concurrencia y los
bloqueos. En el ejemplo del banco los 3 primeros pasos realmente no implican modificación
alguna de datos, por lo que si fallan no dejan la base de datos en un estado inconsistente ¿o
quizá sí?. ¿Qué pasaría si al mismo tiempo que se está realizando nuestra transferencia, entra
en nuestra cuenta un cargo diferido que teníamos pendiente? Sería posible que de repente nos
quedásemos sin saldo para realizar la operación actual o, peor aún, que se anotasen mal
ambos cargos en cuenta de modo que se "pisasen" dejando un saldo inconsistente. O puede
que entre los pasos 3 y 5 la cuenta del vendedor de repente se haya cancelado, justo en medio
de la operación. El dinero iría a parar a una cuenta no válida.
Para controlar el comportamiento de las transacciones en estos casos se definen diferentes
niveles de aislamiento de una transacción.
136
136
68
12/3/2024
Por regla general en los gestores de datos relacionales modernos se dispone de tres tipos de
transacciones según la forma de iniciarlas:
De confirmación automática: el gestor de datos inicia una transacción automáticamente por
cada operación que actualice datos. De este modo mantiene siempre la consistencia de la
base de datos, aunque puede generar bloqueos.
Implícitas: cuando el gestor de datos comienza una transacción automáticamente cada vez
que se produce una actualización de datos, pero el que dicha transacción se confirme o se
deshaga, lo debe indicar el programador.
Explícitas: son las que iniciamos nosotros mediante instrucciones SQL. somos nosotros, los
programadores, los que indicamos qué operaciones va a abarcar.
137
137
Una transacción explícita se define de manera general con una instrucción que marca su inicio,
y dos posibles instrucciones que marcan su final en función de si debe tener éxito o debe
fracasar en bloque.
Cada sistema gestor de bases de datos tiene sus pequeñas particularidades, pero es posible
establecer la sintaxis de una transacción genérica:
BEGIN TRAN
Operación 1... Si fallo: ROLLBACK TRAN
Operación 2... Si fallo: ROLLBACK TRAN
Operación N... Si fallo: ROLLBACK TRAN
COMMIT TRAN
138
138
69
12/3/2024
139
139
140
140
70
12/3/2024
USE Base_Datos;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;
GO
SELECT * FROM Tabla1;
GO
SELECT * FROM Tabla2;
GO
COMMIT TRANSACTION;
GO
141
141
CÓDIGOS RELACIONADOS
142
142
71
12/3/2024
USE Hospital
GO
USE Hospital
GO
143
144
72
12/3/2024
146
146
73
12/3/2024
CONSULTAS Y OBSERVACIONES
147
147
148
148
74
12/3/2024
149
149
DATOS DE IDENTIFICACIÓN
150
150
75
12/3/2024
This is your
presentation title
151
This template is free to use under Creative Commons Attribution license. You can keep the Credits slide or mention
152 SlidesCarnival and other resources used in a slide footer.
152
76
12/3/2024
Hello!
I am Jayden Smith
I am here because I love to give
presentations.
You can find me at @username
153
153
1 Transition
headline
Let’s start with the first set of slides
154
154
77
12/3/2024
155
155
156
78
12/3/2024
BIG
CONCEPT
Bring the attention of
your audience over a key
concept using icons or
illustrations
157
157
White Black
Is the color of milk and Is the color of ebony and of
fresh snow, the color outer space. It has been
produced by the the symbolic color of
combination of all the elegance, solemnity and
colors of the visible authority.
spectrum.
158
158
79
12/3/2024
159
159
160
80
12/3/2024
161
161
162
162
81
12/3/2024
A B C
Yellow 10 20 7
Blue 30 15 10
Orange 5 24 16
163
163
our office
Maps
164
164
82
12/3/2024
89,526,124
Whoa! That’s a big number, aren’t you proud?
165
165
89,526,124$
That’s a lot of money
185,244 users
And a lot of users
100%
Total success!
166
166
83
12/3/2024
167
167
168
84
12/3/2024
4000
3000
2000
1000
169
Mobile project
170
170
85
12/3/2024
Tablet project
171
171
Desktop project
172
172
86
12/3/2024
THANKS!
Any questions?
173
173
Credits
174
174
87
12/3/2024
Presentation design
You don’t need to keep this slide in your presentation. It’s only here to serve you as a design guide if you
need to create new slides or download the fonts to edit the presentation in PowerPoint®
175
175
2 Extra
Resources
For Business Plans, Marketing Plans,
Project Proposals, Lessons, etc
176
88
12/3/2024
Timeline
Blue is the colour of Black is the color of Yellow is the color of Blue is the colour of
the clear sky and the Red is the colour of ebony and of outer gold, butter and ripe White is the color of the clear sky and the
deep sea danger and courage space lemons milk and fresh snow deep sea
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
Yellow is the color of White is the color of Blue is the colour of Red is the colour of Black is the color of Yellow is the color
gold, butter and ripe milk and fresh snow the clear sky and the danger and courage ebony and of outer of gold, butter
lemons deep sea space and ripe lemons
177
177
Roadmap
1 3 5
2 4 6
178
89
12/3/2024
Gantt chart
Week 1 Week 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Task 1
Task 2 ◆
Task 3
Task 4 ◆
Task 5 ◆
Task 6
Task 7
179 Task 8
179
SWOT Analysis
STRENGTHS WEAKNESSES
Blue is the colour of the Yellow is the color of
clear sky and the deep gold, butter and ripe
sea S W lemons
180
90
12/3/2024
Key Partners Key Activities Value Propositions Customer Relationships Customer Segments
Insert your content Insert your content Insert your content Insert your content Insert your content
181
181
Funnel
182
182
91
12/3/2024
Team Presentation
183
183
Competitor Matrix
HIGH VALUE 2
Competit
or
Comp
etitor Our
company
Competitor
HIGH VALUE 1
LOW VALUE 1
Competit
or
Competit
Competitor
or
LOW VALUE 2
184
184
92
12/3/2024
Weekly Planner
12:00 - 13:15 ✔ Free time ✔ Free time ✔ Free time ✔ Free time ✔ Free time ✔ Free time ✔ Free time
185
Examples:
186
186
93
12/3/2024
187
187
✋👆👉👍👤👦👧👨👩👪💃🏃
💑❤😂😉😋😒😭👶😸🐟🍒
🍔💣📌📖🔨🎃🎈🎨🏈🏰🌏
🔌🔑 and many more...
188
188
94
12/3/2024
For PowerPoint and 100% free for personal Ready to use, Blow your audience
Google Slides or commercial use professional and away with attractive
customizable visuals
189
95