0% encontró este documento útil (0 votos)
64 vistas95 páginas

SQL Avanzado

El documento describe la arquitectura de las bases de datos SQL, incluyendo los archivos de datos, registro y su función. También explica cómo se almacenan los datos en SQL Server, desde la memoria hasta los archivos, y cómo crear y editar bases de datos y tablas.

Cargado por

Franz Molina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
64 vistas95 páginas

SQL Avanzado

El documento describe la arquitectura de las bases de datos SQL, incluyendo los archivos de datos, registro y su función. También explica cómo se almacenan los datos en SQL Server, desde la memoria hasta los archivos, y cómo crear y editar bases de datos y tablas.

Cargado por

Franz Molina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 95

12/3/2024

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

ARQUITECTURA DE LAS BASES DE DATOS

3
12/3/2024

ARCHIVOS DE UNA BASE DE DATOS


Como mínimo, cada base de datos de SQL Server tiene dos archivos de sistema operativo: un
archivo de datos y un archivo de registro. Los archivos de datos contienen datos y otros
objetos, como tablas, índices, procedimientos almacenados y vistas. Los archivos de registro
contienen la información necesaria para recuperar todas las transacciones de la base de
datos. Los archivos de datos se pueden agrupar en grupos de archivos para su asignación y
administración.

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

ALMACENAMIENTO DE DATOS EN SQL SERVER


Al realizar una consulta para la inserción de datos:
Se guarda el nuevo registro en una memoria Buffer, fuera del archivo MDF.

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

NOMBRES DE ARCHIVOS FÍSICO Y LÓGICO


logical_file_name: Es el nombre que se usa para hacer referencia al archivo físico en todas
las instrucciones Transact-SQL. El nombre de archivo lógico tiene que cumplir las reglas de
los identificadores de SQL Server y tiene que ser único entre los nombres de archivos
lógicos de la base de datos.
Os_file_name: es el nombre que se le da para hacer referencia al archivo físico que incluye
la ruta para ingresar al directorio, el nombre del archivo debe seguir las reglas para nombres
de archivos del sistema operativo.
Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivos
FAT o NTFS. En sistemas Windows, se recomienda usar el sistema de archivos NTFS por las
características de seguridad que ofrece.
Cuando se ejecutan varias instancias de SQL Server en un único equipo, cada instancia recibe
un directorio predeterminado diferente para contener los archivos de las bases de datos
creadas en la instancia.
12

12

6
12/3/2024

CREAR UNA BASE DE DATOS


NAME: hace referencia al nombre lógico de la
base de datos CREATE DATABASE Nombre_BD
FILENAME: ruta donde se encuentra ON
físicamente el archivo ( NAME=Nombre_DB_dat,
FILENAME=‘C\DB\Nombre_BD_dat.mdf’,
SIZE: tamaño que soporta la base de datos SIZE=10,
MAXSIZE: tamaño máximo de la base de MAXSIZE=50,
datos FILEGROWTH=5
)
FILEGROWTH: crecimiento automático de los LOG ON
archivos de la base de datos ( NAME=Nombre_DB_log,
FILENAME=‘C\DB\Nombre_BD_log.ldf’,
SIZE=5MB,
MAXSIZE=25MB,
NOTA: Los datos se ingresan dos veces debido a FILEGROWTH=5MB
que la primera hace referencia al archivo );

primario y la otra es del archivo de registro.

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

EDITAR UNA BASE DE DATOS


ALTER DATABASE Nombre_BD
ADD FILEGROUP Archivos1;
GO
ALTER DATABASE Nombre_BD
USE master ADDFILE
GO ( NAME=Datos1,
ALTER DATABASE Prueba FILENAME=‘C\DB\Datos1.ndf’,
MODIFY FILE ( SIZE=5MB,
NAME = Prueba2, MAXSIZE=100MB,
SIZE = 20MB FILEGROWTH=5MB
) )
GO ( NAME=Datos2,
FILENAME=‘C\DB\Datos2.ndf’,
SIZE=5MB,
MAXSIZE=100MB,
FILEGROWTH=5MB
)
TO FILEGROUP Archivos1

15

15

CREAR UNA TABLA


Sintaxis simple:
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name |
table_name } ( { <column_definition> } [ ,...n ] ) [ ; ]
CREATE TABLE [database_name.][schema_name.]table_name
( pk_column data_type PRIMARY KEY,
column_1 data_type NOT NULL,
column_2 data_type, ...,
table_constraints );

Restricciones:
NOT NULL
UNIQUE
CHECK
PRIMARY KEY
FOREIGN KEY

16

16

8
12/3/2024

USE [Prueba21]
GO

CREATE TABLE [dbo].[FACULTAD](


[idfatek] [smallint] UNIQUE IDENTITY(1,1) NOT NULL,
[fatek] [varchar](50) NOT NULL,
[estado] [smallint] NULL)
GO

CREATE TABLE ventas.visitas (


visita_id INT PRIMARY KEY IDENTITY (1, 1),
nombres VARCHAR (50) NOT NULL,
apellidos VARCHAR (50) NOT NULL,
fecha_visita DATETIME,
telefono VARCHAR(20),
tienda_id INT NOT NULL,
FOREIGN KEY (tienda_id) REFERENCES ventas.tienda (tienda_id)
);
17

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

RESPALDO Y RESTAURACIÓN DE UNA BASE DE DATOS


RESPALDO COMPLETO
Es una copia de toda la base de datos en un determinado momento, la restauración de este
respaldo solo recupera la información del momento en que se realizó el respaldo,
generalmente se usan para base de datos pocos críticas y pequeñas.

BACKUP DATABASE [Prueba]


TO DISK=‘C\Respaldos\Prueba.bak’
WITH FORMAT;

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

BACKUP DATABASE [Prueba]


TO DISK=‘C\Respaldos\Prueba.bak’
WITH DIFFERENTIAL,
NOFORMAT, NOINIT,
NAME=‘prueba_respaldo’,
SKIP, NOREWIND,
NOUNLOAD, STATS=10;

20

20

10
12/3/2024

BACKUP DATABASE: nombre de la copia de seguridad de la BD.


TO DISK: ubicación donde se guardará el archivo de la copia de la BD.
WITH DIFFERENTIAL: agregamos que es de tipo diferencial. NOFORMAT: el encabezado del
medio no debe escribirse para esta operación.
NOINIT: No sobrescribe los archivos de la copia de seguridad.
NAME: nombre del archivo que se va a generar como .bak.
SKIP: verifica la fecha y hora de vencimiento de los archivos de la copia de seguridad antes
de sobrescribirlos.
NOREWIND: indica que SQL Server mantendrá la cinta abierta después de la operación de
copia de seguridad
NOUNLOAD: son configuraciones de sesión que persisten durante la vida de la sesión.
STATS: informa el porcentaje completado a partir del umbral para informar el siguiente
intervalo.

21

21

RESPALDO DIFERENCIAL + LOG DE TRANSACCIONES


Este mecanismo es ideal para base de datos con alta densidad de transacciones y no se
permiten perdidas de datos. Si el log de transacciones no está dañado se puede recuperar
hasta el último momento de la base de datos. Se requieren de más ficheros y el espacio es un
poco mayor con respecto al mecanismo diferencial

22

22

11
12/3/2024

1. Restaurar el respaldo completo con la opción NORECOVERY


2. Restaurar el último respaldo diferencial con la opción NORECOVERY
3. Restaurar cada uno de los respaldos de log de transacciones en el mismo orden en que
fueron realizados utilizando la opción NORECOVERY
4. Restaurar la base de datos usando la opción RECOVERY

23

23

Respaldo completo Respaldo diferencial

RESTORE DATABASE Prueba RESTORE DATABASE Prueba


FROM DISK=‘C\Respaldos\Prueba.bak’ FROM DISK=‘C\Respaldos\Prueba.bak’
WITH FILE = 1, WITH FILE = 4,
NORECOVERY NORECOVERY

Respaldo de Log de transacciones Log de transacciones

RESTORE LOG Prueba RESTORE DATABASE Prueba


FROM DISK=‘C\Respaldos\Prueba_log.bak’ WITH RECOVERY
WITH FILE = 1,
NORECOVERY

24

24

12
12/3/2024

LENGUAJE DE MANIPULACIÓN DE DATOS (LMD)


INSERT
La sentencia INSERT permite añadir registros a una tabla dentro de una base de datos.
INSERT INTO Nombre_Tabla (Campo1, …, CampoN) VALUES (Valor1, …, ValorN)

Se puede realizar una inserción masiva de registros utilizando la sentencia INSERT de la


siguiente forma:

INSERT INTO Nombre_Tabla VALUES (Valor1, …, ValorN)


INSERT INTO Nombre_Tabla (Campo1, …, CampoN) SELECT…

25

25

Ejemplos:

INSERT INTO Departamento VALUES (1, ‘Chuquisaca’)


INSERT INTO Departamento VALUES (2, ‘Santa Cruz’)
INSERT INTO Departamento VALUES (3, ‘Potosí’),

INSERT INTO Clientes


SELECT * FROM NuevosClientes WHERE idDepartamento = 2
INSERT INTO Clientes (idDepartamento, NombreCliente)
SELECT idDepartamento, Nombre FROM NuevosClientes WHERE idDepartamento = 1

26

26

13
12/3/2024

UPDATE
UPDATE esquema.tabla SET col1=valor1, col2=valor2

UPDATE se puede combinar con: WHERE, FROM, JOIN

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

DELETE FROM Vendedores WHERE idVendedor=9

DELETE Clientes WHERE primerApellido like ‘%desconocido%’

DELETE Productos WHERE id =


(SELECT idProductos FROM Bajas as b WHERE b.estado=2)

DELETE Productos WHERE id =


(SELECT idProductos FROM Bajas as b WHERE
b.clasificacion=‘Enlatado’ And b.marca=‘Lata’)

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

SELECT nombres, primerApellido, segundoApellido


FROM Clientes
UNION
SELECT nombre, apellidoPaterno, apellidoMaterno
FROM Usuarios

SELECT nombres, ‘Ventas’ AS Transaccion, COUNT(*) Cantidad


FROM Ventas
GROUP BY nombres
UNION
SELECT nombres, ‘Compras’ AS Transaccion, COUNT(*) Cantidad
FROM Compras
GROUP BY nombres
ORDER BY nombres

31

31

El resultado de las dos consultas debe de contener el mismo número de columnas.


Las columnas en ambas consultas deben de coincidir en el tipo de dato.
Los nombres de las columnas del resultado de UNION serán los de la primera consulta
individual.
Puede utilizar un GROUP BY en cada consulta individual pero no al resultado final.
La cláusula ORDER BY puede ser utilizada para afectar el resultado final, pero no se puede
usar en cada consulta individual.

32

32

16
12/3/2024

GROUP BY – ORDER BY

SELECT campo1, campo2, …, campoN <función de agregado>


FROM esquema.tabla
GROUP BY campo1, campo2, …, campoN

SELECT campo1, campo2, …, campoN


FROM esquema.tabla
ORDER BY campo1, campo2, …, campoN

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

CREAR UNA TABLA USANDO LIKE


Puede crear una tabla que se parezca a otra tabla. Es decir, puede crear una tabla que incluya
todas las definiciones de columna de una tabla existente.
Se copian las definiciones siguientes:
Nombres de columna (y nombres de columna del sistema)
Tipo de datos, longitud, precisión y escala
Si la tabla o vista especificada contiene una columna de identidad, debe especificar la opción
INCLUSIVE IDENTITY en la sentencia CREATE TABLE si desea que la columna de identidad
exista en la nueva tabla.

CREATE TABLE Empleado2 LIKE Empleado;

35

35

CREAR UNA TABLA USANDO AS


Puede crear una tabla a partir del resultado de una sentencia SELECT. Para crear este tipo de
tabla, utilice la sentencia CREATE TABLE AS.
Todas las expresiones que se pueden utilizar en una sentencia SELECT se pueden utilizar en
una sentencia CREATE TABLE AS. También puede incluir todos los datos de la tabla o tablas
que está seleccionando.

CREATE TABLE EMPLOYEE3 AS


(SELECT EMPNO, LASTNAME, JOB FROM EMPLOYEE WHERE
WORKDEPT = 'D11') WITH DATA;

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

CREATE TABLE #Temporal(


id_Carrera int primary key identity (1,1) not null,
carrera varchar(75) not null,
id_Facultad smallint,
estado smallint not null
)

INSERT INTO #Temporal (carrera, id_Facultad, estado) VALUES ('INGENIERIA


INDUSTRIAL Y DE SISTEMAS',1,1), ('INGENIERIA CIVIL',1,1)

SELECT * FROM #Temporal

DROP TABLE #Temporal


38

38

19
12/3/2024

VARIABLES TIPO TABLA


Las variables tipo tabla son tablas que se crean en memoria y solo existen durante la ejecución
del código sql.
Se utiliza con arroba (@) para indicar que se utiliza como variable, al crear la tabla temporal
como variable, se debe construir la estructura de la tabla en el Query.

DECLARE @Usuarios TABLE


(
id int primary key identity (1,1) not null,
nombre varchar(50) not null,
apellidos varchar(50),
INDEX ix_nombre NONCLUSTERED (nombre)
)

INSERT INTO @Usuarios VALUES (‘Juan’, ‘Perez’)

SELECT * FROM @Usuarios


39

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

CREANDO UNA VISTA (CREATE VIEW)


Restricciones y limitaciones
Una vista solo se puede crear en la base de datos actual.
Una vista puede tener un máximo de 1.024 columnas.
Seguridad
Se necesita el permiso CREATE VIEW en la base de datos y el permiso ALTER en el esquema
en que se crea la vista.

CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [


(column [ ,...n ] ) ] [ WITH <view_attribute> [ ,...n ]
] AS select_statement [ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::= { [ ENCRYPTION ] [ SCHEMABINDING ]
[ VIEW_METADATA ] }

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

SELECT FirstName, LastName, HireDate


FROM HumanResources.EmployeeHireDate
43 ORDER BY LastName;

43

Use Empresas
GO

Select Count(m.idMunicipio), d.nombreDepartamento


From bdempresas.departamento as d, bdempresas.provincia as p,
bdempresas.municipio as m

Where d.idDepartamento=p.idDepartamento and


p.idProvincia=m.idProvincia

Group By d.nombreDepartamento

GO

44

44

22
12/3/2024

Create View vLocalizacion


As
Select d.nombreDepartamento, p.nombreProvincia,
m.nombreMunicipio
From bdempresas.departamento as d, bdempresas.provincia as p,
bdempresas.municipio as m
Where d.idDepartamento=p.idDepartamento and
p.idProvincia=m.idProvincia
GO
Select *
From vLocalizacion

Select count(v.nombreDepartamento), nombreDepartamento


From vLocalizacion as v
45
Group By nombreDepartamento

45

CREANDO UNA VISTA INDIZADA


Para crear una vista indizada, es necesario seguir los pasos descritos a continuación, que son
fundamentales para la correcta implementación de la vista indizada:
1. Compruebe que las opciones SET son correctas para todas las tablas existentes a las que
se hará referencia en la vista.
2. Compruebe que las opciones SET de la sesión estén establecidas correctamente antes de
crear cualquier tabla y la vista.
3. Compruebe que la definición de vista sea determinista.
4. Verifique que la tabla base y la vista tengan el mismo propietario.
5. Cree la vista con la opción WITH SCHEMABINDING.
6. Cree el índice clúster único en la vista.
Al ejecutar UPDATE, DELETE o INSERT operaciones (lenguaje de manipulación de datos o DML)
en una tabla a la que hace referencia un gran número de vistas indizadas, o menos vistas
indizadas muy complejas, esas vistas indizadas a las que se hace referencia también tendrán
46
que actualizarse.

46

23
12/3/2024

--Configurar las opciones que soportan las vistas indizadas.


SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT,
QUOTED_IDENTIFIER, ANSI_NULLS ON;

--Crear la vista con SCHEMABINDING.


IF OBJECT_ID ('Sales.vOrders', 'view') IS NOT NULL
DROP VIEW Sales.vOrders ;
GO
CREATE VIEW Sales.vOrders
WITH SCHEMABINDING
AS
SELECT SUM(UnitPrice * OrderQty * (1.00 - UnitPriceDiscount)) AS Revenue,
OrderDate, ProductID, COUNT_BIG(*) AS COUNT
FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o
WHERE od.SalesOrderID = o.SalesOrderID
GROUP BY OrderDate, ProductID;
GO

--Crear un índice en la vista.


CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON Sales.vOrders (OrderDate, ProductID);
GO
47

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

MODIFICANDO DATOS MEDIANTE UNA VISTA


Restricciones y limitaciones
Cualquier modificación, incluidas las instrucciones UPDATE, INSERT y DELETE, debe hacer
referencia a las columnas de una única tabla base.
Las columnas que se vayan a modificar en la vista deben hacer referencia directa a los
datos subyacentes de las columnas de la tabla
Seguridad
Requiere los permisos UPDATE, INSERT o DELETE en la tabla de destino, en función de la
acción que se realizará.
No se puede eliminar una fila si la vista hace referencia a más de una tabla base. Solo pueden
actualizarse las columnas que pertenecen a una única tabla base.
No se puede insertar una fila si la vista hace referencia a más de una tabla base.

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

ELIMINANDO UNA VISTA


Restricciones y limitaciones
Cuando se quita una vista, la definición y otra información de la vista se elimina del catálogo
del sistema. También se eliminan todos los permisos de la vista.
Las vistas de una tabla que se ha quitado mediante DROP TABLE se deben quitar
explícitamente con DROP VIEW.
Seguridad
Se necesita el permiso ALTER en SCHEMA o el permiso CONTROL en OBJECT.
Haga clic en Mostrar dependencias en el cuadro de diálogo Eliminar objeto para abrir el cuadro
de diálogo Dependencias de la vista. Esto mostrará todos los objetos que dependen de la vista
y todos los objetos de los que depende la vista.

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

Revisar y corregir o ejecutar las siguientes consultas


CREATE TABLE empleados (emp_id integer not null, emp_nombre varchar(50),
departamento smallint not null, fecha datetime not null );

CREATE TABLE regiones(reg_id integer not null, emp_id integer not


null, nombre varchar(40));

GRANT SELECT ON empleados TO usuario;


GRANT SELECT ON regiones TO usuario;

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

FUNCIONES DE SQL SERVER


Funciones de agregado.
Funciones de configuración.
Funciones de conversión.
Funciones del cursor.
Tipos de datos y funciones de fecha y hora.
Funciones JSON.
Funciones lógicas.
Funciones matemáticas.
Funciones de metadatos.
Funciones de seguridad.
Funciones de cadena.
Funciones del sistema.
Funciones estadísticas.
Funciones de texto e imagen.

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

FUNCIONES DE FECHA Y HORA


FUNCIÓN DESCRIPCIÓN
DATEADD Agrega un valor a una fecha, ya sea día, mes o año
DATEDIFF Devuelve el recuento de los límites entre dos fechas
GETDATE Devuelve la fecha del sistema
DAY Devuelve un entero que representa el día del mes
MONTH Devuelve un entero que representa el mes
YEAR Devuelve un entero que representa el año

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

CREANDO EL HOLA MUNDO

CREATE PROCEDURE HolaMundoprocedure


AS
PRINT ‘Hola Mundo’

exec HelloWorldprocedure

63

63

CREATE FUNCTION dbo.HolaMundofunction()


RETURNS varchar(20)
AS
BEGIN
RETURN ‘Hola Mundo’
END

Select dbo.HolaMundofunction() as saludo

64

64

32
12/3/2024

INVOCACIÓN

exec HolaMundoprocedure
execute HolaMundoprocedure
execute dbo.HolaMundoprocedure
HolaMundoprocedure

Select dbo.HolaMundofunction() as saludo

65

65

MANEJO DE VARIABLES
Convertir grados Celsius a Fahrenheit utilizando procedimientos almacenados y funciones.

CREATE PROCEDURE Conversionprocedure


@celsius real
as
select @celsius*1.8+32 as Fahrenheit

exec Conversionprocedure 0

66

66

33
12/3/2024

CREATE FUNCTION dbo.conversionfunction(@celsius real)


RETURNS real
AS
BEGIN
RETURN @celsius*1.8+32
END

Select dbo.conversionfunction(0) as farenheit

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

Declare @contador int=0


While (@contador<5)
Begin
Print 'Iniciando iteración’
+ convert(varchar,@contador);
Set @contador =@contador+1
if @contador=2
continue
else
Begin
Print'Sin saltar’
if @contador=4
Break
End
End

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

Declare @persona Table Select Top 1


(id int, @id1=id,
nombres varchar(70), @cadena=nombres+'
primerApellido '+primerApellido
varchar(40)) From @persona
Declare @id1 int=0, Print @cadena
@cadena varchar(100) Delete From @persona Where
id=@id1
Insert Into @persona End
Select top 10
idPersona,nombres,primerAp
ellido
From bdempresas.persona

While Exists (Select * From


@persona)
Begin
75

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.

RAISERROR ( { msg_id | msg_str | @local_variable }


{ ,severity ,state } )

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.

THROW [ { error_number | @local_variable },


{ message | @local_variable },
{ state | @local_variable } ]

Throw 51000, 'El registro no existe', 1;

79

79

Use tempdb;
Go

Create Table Registro


( id Int Primary Key);
Begin Try
Insert Registro(id) values (1);
--Forzar el error de llave primaria
Insert Registro(id) values (1);
End Try
Begin Catch
Print('Dentro el bloque catch’);
Throw;
End Catch;

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

FUNCIONES DEFINIDAS POR EL USUARIO


Las funciones definidas por el usuario de SQL Server son rutinas que aceptan parámetros,
realizan una acción, como un cálculo complejo, y devuelven el resultado de esa acción como
un valor. El valor devuelto puede ser un valor escalar único o un conjunto de resultados (tabla).

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.

CREATE FUNCTION dbo.fu_promedioestudiante(@ci varchar(10))


RETURNS int
AS
BEGIN
DECLARE @promedio int;
SELECT @promedio= AVG(notafin) FROM Notas Where CI = @CI;
RETURN @promedio
END

Select dbo.fu_promedioestudiante('1234567') as promedio


84

84

42
12/3/2024

FUNCIONES CON VALOR DE TABLA


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.

CREATE FUNCTION dbo.fu_ciestudiantes(@carrera varchar(75))


RETURNS TABLE
AS
RETURN
(
SELECT DISTINCT(ci) FROM Notas Where carrera = @carrera
);

Select * FROM dbo.fu_ciestudiantes('CARRERA')


85

85

BORRAR UNA FUNCIÓN


if object_id('dbo.fu_ciestudiantes') is not null
drop function dbo.fu_ciestudiantes;
go

EDITAR UNA FUNCIÓN


ALTER FUNCTION dbo.fu_ciestudiantes(@carrera varchar(75))
RETURNS TABLE
AS
RETURN
(
SELECT DISTINCT(ci) FROM Notas Where carrera = @carrera
);
86

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

CREATE PROCEDURE pa_listadoNOtas


@carrera varchar(75),
@parametro int
AS
SET NOCOUNT ON
SELECT n.ci, n.carrera, n.notafin
FROM NOTAS as n
WHERE carrera=@carrera and notafin>@parametro
ORDER BY n.notafin;
GO

EXEC pa_listadoNOtas 'DISEÑO DE INTERIORES', 75


88

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.

CREATE TRIGGER NOMBREDISPARADOR


ON NOMBRETABLA
FOR EVENTO -insert, update o delete-
AS
SENTENCIAS

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

CREATE TRIGGER trg_insertarCargo


ON CARGO
FOR insert
AS
BEGIN
SET NOCOUNT ON
DECLARE @contador int
SET @contador = (SELECT c.cantidad FROM Control_Notas as c WHERE
id = 1)
SET @contador=@contador+1
UPDATE Control_Notas SET cantidad = @contador WHERE id = 1

END

92

92

46
12/3/2024

USE Hospital
GO

CREATE TRIGGER trg_editarCargo


ON CARGO
FOR update
AS
BEGIN
SET NOCOUNT ON
DECLARE @contador int
SET @contador = (SELECT c.cantidad FROM Control_Notas as c WHERE
id = 3)
SET @contador=@contador+1
UPDATE Control_Notas SET cantidad = @contador WHERE id = 3

END

93

93

USE Hospital
GO

CREATE TRIGGER trg_eliminarCargo


ON CARGO
FOR delete
AS
BEGIN
SET NOCOUNT ON
DECLARE @contador int
SET @contador = (SELECT c.cantidad FROM Control_Notas as c WHERE
id = 2)
SET @contador=@contador+1
UPDATE Control_Notas SET cantidad = @contador WHERE id = 2

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

REINICIAR UNA TABLA (AUTONÚMERICO)

delete from CARGO

DBCC CHECKIDENT (CARGO, RESEED, 0)

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

En un entorno multiusuario debe tenerse en cuenta consideraciones especiales para impedir


que se produzcan conflictos en los cambios.
Un modo de evitar problemas es trabajar con una copia de la base de datos, como una base
de datos de prueba, cuando realiza los cambios; a continuación, puede crear un script y
ejecutarlo para que aplique estos cambios en la base de datos original después de solucionar
los conflictos sin conexión.

100

100

50
12/3/2024

GESTIÓN DE USUARIOS EN SQL SERVER


INICIO DE SESIÓN
Un inicio de sesión es la identidad de la persona o proceso que se está conectando a una
instancia de SQL Server.
Un inicio de sesión es una entidad de seguridad o una entidad que puede ser autenticada por
un sistema seguro. Los usuarios necesitan iniciar sesión para conectarse a SQL Server.
Como entidad de seguridad, se pueden conceder permisos a los inicios de sesión. El ámbito de
un inicio de sesión es todo el Motor de base de datos. Para establecer conexión con una base
de datos concreta de la instancia de SQL Server, un inicio de sesión debe estar asignado a un
usuario de la base de datos. Los permisos dentro de la base de datos se conceden y deniegan
al usuario de la base de datos, no al inicio de sesión.

101

101

ROLES DEL SERVIDOR


Casilla bulkadmin
Los miembros del rol fijo de servidor bulkadmin pueden ejecutar la instrucción BULK INSERT.
Casilla dbcreator
Los miembros del rol fijo de servidor dbcreator pueden crear, modificar, quitar y restaurar
cualquier base de datos.
Casilla diskadmin
Los miembros del rol fijo de servidor diskadmin pueden administrar archivos de disco.
Casilla processadmin
Los miembros del rol fijo de servidor processadmin pueden finalizar procesos mediante la
ejecución de una instancia del Motor de base de datos.
Casilla public
Todos los usuarios, grupos y roles de SQL Server pertenecen al rol fijo de servidor public de
forma predeterminada.

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

CREATE LOGIN [<NombreDominio>\<login>]


FROM WINDOWS;
GO

CREATE LOGIN shcooper


WITH PASSWORD = 'Baz1nga' MUST_CHANGE,
CREDENTIAL = RestriccionFacultad;
GO

104

104

52
12/3/2024

CREAR UN USUARIO

CREATE LOGIN Sesion123


WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
GO

CREATE USER Usuario123 FOR LOGIN Sesion123;


GO

105

105

TÉCNICAS DE PROCESAMIENTO DE BASE DE DATOS MULTIUSUARIO

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

ARQUITECTURA DE SISTEMAS POR CAPAS

108

108

54
12/3/2024

109

109

ARQUITECTURA CLIENTE – SERVIDOR

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

BASES DE DATOS MULTIUSUARIO

Entorno al que varios Una base de datos en un


usuarios pueden conectarse entorno multiusuario
y realizar cambios en la requiere unas tareas de
misma base de datos control y gestión

Permite dotar Aprovechamiento de Permite acompañar el


de seguridad al la tecnología Cliente- crecimiento del
sistema Servidor negocio

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

La seriación asegura que el


programa para la ejecución
concurrente de las
transacciones dé resultados
consistentes

115

115

ESTRUCTURA DE LAS TRANSACCIONES


Crear Conexión
Abrir Conexión
(Openconnection)
Iniciar Transacción
(Begin Transaction) setAutoCommit(0/false)
Queries...
(Insert, Select, Update, Delete...)
-Error
(Abort Transaction) rollback
Procesar resultados
(Print, a= , b= )
Asegurar Transacción
(End Transaction) commit
Cerrar Conexión
(Closeconnection)
116

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

El problema de la El problema del


El problema de la
Dependencia No Análisis
Actualización Perdida
Confirmada Inconsistente

117

117

CONTROL DE CONCURRENCIA
La coordinación de la ejecución
simultánea de transacciones

Planificador

Para determinar el orden apropiado, el planificador funda sus acciones


en algoritmos de control de concurrencia, como métodos de bloqueo o
estampas de tiempo

Intercala las operaciones de ejecución de una base de datos para


asegurar el aislamiento y la seriación de las transacciones
118

118

59
12/3/2024

Control de concurrencia con Granularidad del


métodos de bloqueo bloqueo

Un bloqueo garantiza Indica el nivel de uso


el uso exclusivo de un del bloqueo
elemento de datos a
una transacción actual

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

• Un método de estampas de tiempo para programar transacciones concurrentes asigna una


estampa de tiempo general, única, a cada transacción
MÉTODOS DE
ESTAMPA DE
• Las estampas de tiempo deben tener dos propiedades: unicidad y monotonicidad
TIEMPO

121

121

CONTROL DE CONCURRENCIA CON MÉTODOS OPTIMISTAS


El método optimista está basado en la suposición de que la mayor parte de las operaciones en
bases de datos no tienen conflicto. El método optimista no requiere de bloqueo ni de técnicas
para estampas de tiempo. En cambio, una transacción es ejecutada sin restricciones hasta
que es registrada. Con el uso de un método optimista, cada transacción se mueve por dos o
tres fases, conocidas como lectura, validación y escritura.
Durante la fase de lectura: La transacción lee la base de datos, ejecuta los cálculos
necesarios y hace actualizaciones a una copia privada de los valores de la base de datos.
Todas las operaciones de actualización de la transacción se registran en un archivo de
actualización temporal, al que no tienen acceso las transacciones restantes.

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

BEGIN TRAN T1;


UPDATE table1 ...;
BEGIN TRAN M2 WITH MARK;
UPDATE table2 ...;
SELECT * from table1;
COMMIT TRAN M2;
UPDATE table3 ...;
COMMIT TRAN T1;

La opción WITH MARK hace que el nombre de la transacción se coloque en el registro de


transacciones. Al restaurar una base de datos a un estado anterior, la transacción marcada se
puede utilizar en lugar de una fecha y hora.

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

CONSIDERACIONES PARA UNA TRANSACCIÓN


BEGIN TRY
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT BEGIN TRY
ERROR_NUMBER() AS NumeroError SELECT * FROM Inexistente;
,ERROR_SEVERITY() AS END TRY
BEGIN CATCH
SeveridadError
SELECT
,ERROR_STATE() AS EstadoError
ERROR_NUMBER() AS NumeroError
,ERROR_PROCEDURE() AS ,ERROR_MESSAGE() AS
ProcedimientoError MensajeError;
,ERROR_LINE() AS LineaError END CATCH
,ERROR_MESSAGE() AS
MensajeError;
END CATCH;
GO
130

130

65
12/3/2024

IF OBJECT_ID ( 'pa_ObtenerError', MensajeError;


'P' ) IS NOT NULL GO
DROP PROCEDURE pa_ObtenerError;
GO BEGIN TRY
SELECT 1/0;
CREATE PROCEDURE pa_ObtenerError END TRY
AS BEGIN CATCH
SELECT EXECUTE pa_ObtenerError;
ERROR_NUMBER() AS NumeroError END CATCH;
,ERROR_SEVERITY() AS
SeveridadError
,ERROR_STATE() AS EstadoError
,ERROR_PROCEDURE() AS
ProcedimientoError
,ERROR_LINE() AS LineaError
,ERROR_MESSAGE() AS

131

131

IF OBJECT_ID ( BEGIN TRY


'pa_TablaInexistente', 'P' ) EXECUTE
IS NOT NULL pa_TablaInexistente;
DROP PROCEDURE END TRY
pa_TablaInexistente; BEGIN CATCH
GO SELECT
ERROR_NUMBER() AS
CREATE PROCEDURE NumeroError
pa_TablaInexistente ,ERROR_MESSAGE() AS
AS MensajeError
SELECT * FROM ,ERROR_SEVERITY() AS
TablaInexistente; SeveridadError;
GO END CATCH;

132

132

66
12/3/2024

BEGIN TRANSACTION; AS ProcedimientoError


,ERROR_LINE() AS
BEGIN TRY LineaError
SELECT 1/0; ,ERROR_MESSAGE() AS
END TRY MensajeError;
BEGIN CATCH
SELECT IF @@TRANCOUNT > 0
ERROR_NUMBER() AS ROLLBACK TRANSACTION;
NumeroError END CATCH;
,ERROR_SEVERITY()
AS SeveridadError IF @@TRANCOUNT > 0
,ERROR_STATE() AS COMMIT TRANSACTION;
EstadoError GO
,ERROR_PROCEDURE()

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

TRANSACCIONES EN SQL SERVER


BEGIN TRANSACTION o BEGIN TRAN: marca el inicio de una transacción. TRAN es un
sinónimo de TRANSACTION y se suele usar más a menudo por abreviar.
ROLLBACK TRANSACTION o ROLLBACK TRAN: fuerza que se deshaga la transacción en caso
de haber un problema o querer abandonarla. Cierra la transacción.
COMMIT TRANSACTION O COMMIT TRAN: confirma el conjunto de operaciones convirtiendo
los datos en definitivos. Marca el éxito de la operación de bloque y cierra la transacción.

139

139

Los niveles de aislamiento que nos ofrece SQL Server son:


SERIALIZABLE: No se permitirá a otras transacciones la inserción, actualización o borrado
de datos utilizados por nuestra transacción. Los bloquea mientras dura la misma.
REPEATABLE READ: Garantiza que los datos leídos no podrán ser cambiados por otras
transacciones, durante esa transacción.
READ COMMITED: Una transacción no podrá ver los cambios de otras conexiones hasta que
no hayan sido confirmados o descartados.
READ UNCOMMITTED: No afectan los bloqueos producidos por otras conexiones a la lectura
de datos.
SNAPSHOT: Los datos seleccionados en la transacción se verán tal y como estaban al
comienzo de la transacción, y no se tendrán en cuenta las actualizaciones que hayan sufrido
por la ejecución de otras transacciones simultáneas.

140

140

70
12/3/2024

La instrucción SET TRANSACTION ISOLATION LEVEL permite cambiar el nivel de aislamiento.

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

delete from CARGO

DBCC CHECKIDENT (CARGO, RESEED, 0)

142

142

71
12/3/2024

USE Hospital
GO

INSERT INTO ESPECIALIDAD (Especialidad, Id_Esp) VALUES ('ODONTOLOGÍA',


'1'), ('CIRUGÍA', '1'), ('MEDICINA INTERNA', '1')
GO

USE Hospital
GO

IF OBJECT_ID ( 'EditarEspecialidad', 'P' ) IS NOT NULL


DROP PROCEDURE EditarEspecialidad
GO
143

143

CREATE TRIGGER [dbo].[trg_actualizarEspecialidad]


ON [dbo].[ESPECIALIDAD]
FOR update
AS
BEGIN
SET NOCOUNT ON
DECLARE @contador int
DECLARE @fecha date
IF (NOT EXISTS (SELECT * FROM Audit_Especialidad as ae WHERE ae.actividad =
'Editar registro'))
SET @contador = 0;
ELSE
SET @contador = (SELECT MAX(ae.contador) FROM Audit_Especialidad as ae
WHERE ae.actividad = 'Editar registro');
SET @contador=@contador+1
SET @fecha=GETDATE()
INSERT INTO Audit_Especialidad (actividad, fecha, tabla, contador)VALUES
('Editar registro',@fecha,'ESPECIALIDAD',@contador)
END
144 GO

144

72
12/3/2024

CREATE TRIGGER [dbo].[trg_eliminarEspecialidad]


ON [dbo].[ESPECIALIDAD]
FOR delete
AS
BEGIN
SET NOCOUNT ON
DECLARE @contador int
DECLARE @fecha date
IF (NOT EXISTS (SELECT * FROM Audit_Especialidad as ae WHERE
ae.actividad = 'Eliminar registro'))
SET @contador = 0;
ELSE
SET @contador = (SELECT MAX(ae.contador) FROM
Audit_Especialidad as ae WHERE ae.actividad = 'Eliminar registro');
SET @contador=@contador+1
SET @fecha=GETDATE()
INSERT INTO Audit_Especialidad (actividad, fecha, tabla,
contador)VALUES ('Eliminar registro',@fecha,'ESPECIALIDAD',@contador)
END
145 GO
145

CREATE PROCEDURE EditarEspecialidad


@especialidad varchar(30),
@estado varchar(30),
@id int
AS
SET NOCOUNT ON
DECLARE @res varchar(15)
IF (NOT EXISTS(SELECT * FROM ESPECIALIDAD AS e WHERE ID_ESP=@id))
SET @res='NO PERMITIDO'
ELSE
BEGIN
UPDATE ESPECIALIDAD SET ESPECIALIDAD = @especialidad,
ESTADO_ESP=@estado WHERE ID_ESP = @id;
SET @res='PERMITIDO'
END
SELECT @res
GO

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

Instructions for use

EDIT IN GOOGLE SLIDES EDIT IN POWERPOINT®


Click on the button under the presentation Click on the button under the presentation
preview that says "Use as Google Slides preview that says "Download as PowerPoint
Theme". template". You will get a .pptx file that you
can edit in PowerPoint.
You will get a copy of this document on
your Google Drive and will be able to edit, Remember to download and install the fonts
add or delete slides. used in this presentation (you’ll find the
links to the font files needed in the
You have to be signed in to your Google
Presentation design slide)
account.

More info on how to use this template at www.slidescarnival.com/help-use-presentation-template

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

Quotations are commonly printed as a means


of inspiration and to invoke philosophical
thoughts from the reader.

155

155

This is a slide title

▪ Here you have a list of items


▪ And some text
▪ But remember not to overload your
slides with content
Your audience will listen to you or read
the content, but won’t do both.
156

156

78
12/3/2024

BIG
CONCEPT
Bring the attention of
your audience over a key
concept using icons or
illustrations

157

157

You can also split your content

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

In two or three columns

Yellow Blue Red


Is the color of gold, Is the colour of the Is the color of
butter and ripe clear sky and the blood, and because
lemons. In the deep sea. It is of this it has
spectrum of visible located between historically been
light, yellow is violet and green on associated with
found between the optical sacrifice, danger
green and orange. spectrum. and courage.

159

159

A picture is worth a thousand words

A complex idea can be


conveyed with just a
single still image,
namely making it
possible to absorb
large amounts of data
quickly.
160

160

80
12/3/2024

Want big impact?

Use big image

161

161

Use charts to explain your ideas

White Gray Black

162

162

81
12/3/2024

And tables to compare data

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

Our process is easy

first second last

167

167

Let’s review some concepts

Yellow Blue Red


Is the color of gold, butter Is the colour of the clear sky Is the color of blood, and
and ripe lemons. In the and the deep sea. It is because of this it has
spectrum of visible light, located between violet and historically been associated
yellow is found between green on the optical with sacrifice, danger and
green and orange. spectrum. courage.

Yellow Blue Red


Is the color of gold, butter Is the colour of the clear sky Is the color of blood, and
and ripe lemons. In the and the deep sea. It is because of this it has
spectrum of visible light, located between violet and historically been associated
yellow is found between green on the optical with sacrifice, danger and
green and orange. spectrum. courage.
168

168

84
12/3/2024

4000

3000

2000

1000

You can insert graphs from Excel or Google Sheets


169

169

Mobile project

Show and explain


your web, app or
software projects
using these gadget
templates.

170

170

85
12/3/2024

Tablet project

Show and explain


your web, app or
software projects
using these gadget
templates.

171

171

Desktop project

Show and explain


your web, app or
software projects
using these gadget
templates.

172

172

86
12/3/2024

THANKS!

Any questions?

You can find me at @username & [email protected]

173

173

Credits

Special thanks to all the people who made and


released these awesome resources for free:
▪ Presentation template by SlidesCarnival
▪ Photographs by Unsplash

174

174

87
12/3/2024

Presentation design

This presentation uses the following typographies:


▪ Titles: Roboto Slab
▪ Body copy: Nixie One

Download for free at:


https://www.fontsquirrel.com/fonts/nixie-one
https://www.fontsquirrel.com/fonts/roboto-slab

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

Blue is the colour of Black is the color of


the clear sky and the Red is the colour of ebony and of outer
deep sea danger and courage space

1 3 5

2 4 6

Yellow is the color of White is the color of Blue is the colour of


gold, butter and ripe milk and fresh snow the clear sky and the
lemons deep sea
178

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

Black is the color of O T


ebony and of outer White is the color of milk
space and fresh snow
180
OPPORTUNITIES THREATS

180

90
12/3/2024

Business Model Canvas

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

Key Resources Channels


Insert your content Insert your content

Cost Structure Revenue Streams


Insert your content Insert your content

181

181

Funnel

AWARENESS Insert your content

DISCOVERY Insert your content

EVALUATION Insert your content

INTENT Insert your content

PURCHASE Insert your content

LOYALTY Insert your content

182

182

91
12/3/2024

Team Presentation

Imani Jackson Marcos Galán Ixchel Valdía Nils Årud


JOB TITLE JOB TITLE JOB TITLE JOB TITLE
Blue is the colour of the Blue is the colour of the Blue is the colour of the Blue is the colour of the
clear sky and the deep clear sky and the deep clear sky and the deep clear sky and the deep
sea sea sea sea

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

SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY

9:00 - 9:45 Task Task Task Task Task Task Task

10:00 - 10:45 Task Task Task Task Task Task Task

11:00 - 11:45 Task Task Task Task Task Task Task

12:00 - 13:15 ✔ Free time ✔ Free time ✔ Free time ✔ Free time ✔ Free time ✔ Free time ✔ Free time

13:30 - 14:15 Task Task Task Task Task Task Task

14:30 - 15:15 Task Task Task Task Task Task Task

15:30 - 16:15 Task Task Task Task Task Task Task


185

185

SlidesCarnival icons are editable shapes.

This means that you can:


● Resize them without losing quality.
● Change line color, width and style.

Isn’t that nice? :)

Examples:

186

186

93
12/3/2024

Diagrams and infographics

187

187

You can also use any emoji as an icon!


And of course it resizes without losing quality.
How? Follow Google instructions
https://twitter.com/googledocs/status/7300872401566433
28

✋👆👉👍👤👦👧👨👩👪💃🏃
💑❤😂😉😋😒😭👶😸🐟🍒
🍔💣📌📖🔨🎃🎈🎨🏈🏰🌏
🔌🔑 and many more...
188

188

94
12/3/2024

Free templates for all your presentation needs

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

También podría gustarte