You are on page 1of 28

TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior de Guasave


Ingeniería en Sistemas Computacionales
Programación de Base de Datos

Itsguasave.edu.mx
PROGRAMACIÓN DE BASE DE DATOS

Competencia:
• Manejar un lenguaje de programación visual y la conexión a la base de
datos mediante código SQL embebido.
PROGRAMACIÓN DE BASE DE DATOS
Introducción
• La Programación del lado del servidor es una tecnología que consiste en
el procesamiento de una petición de un usuario mediante la
interpretación de un conjunto de instrucciones en el servidor de BD para
generar un conjunto de datos procesados como respuesta.

• Todo lo que suceda dentro del servidor es llamado procesamiento del


lado del servidor, o server-side processing.
PROGRAMACIÓN DE BASE DE DATOS
• Cuando tu aplicación necesita interactuar con el servidor (por ejemplo,
para cargar o guardar datos), ésta realiza una petición del lado del cliente
(client-side request) y puede ser desde una aplicación o desde el
navegador. Mientras la aplicación continúa trabajando, el servidor está
ejecutando código del lado del servidor.

• La utilización de las diferentes aplicaciones o servicios de Internet se lleva


a cabo respondiendo al llamado modelo cliente-servidor.
PROGRAMACIÓN DE BASE DE DATOS
• Cuando se utiliza un servicio en Internet, como consultar una base de
datos, transferir un archivo o participar en un foro de discusión, se
establece un proceso en el que entran en juego dos partes:
 Por un lado: El usuario, quien ejecuta una aplicación en procesador
local, el denominado programa cliente. Este programa cliente se
encarga de ponerse en contacto con el procesador remoto para
solicitar el servicio deseado.
 Por otro lado: El procesador remoto por su parte responderá a lo
solicitado mediante un programa que esta ejecutando. Este último se
denomina programa servidor.
• Los términos cliente y servidor se utilizan tanto para referirse a los
programas que cumplen estas funciones, como a las computadoras
donde son ejecutados esos programas.
PROGRAMACIÓN DE BASE DE DATOS
Creación de vistas
• Una vista es una consulta, que refleja el contenido de una o más tablas,
desde la que se puede acceder a los datos como si fuera una tabla. Dos
son las principales razones por las que podemos crear vistas.
 Seguridad, nos pueden interesar que los usuarios tengan acceso a
una parte de la información que hay en una tabla, pero no a toda la
tabla.
 Comodidad, como ya sabemos el modelo relacional no es el más
cómodo para visualizar los datos, lo que nos puede llevar a tener que
escribir complejas sentencias SQL, tener una vista nos simplifica esta
tarea.
PROGRAMACIÓN DE BASE DE DATOS
• Las vistas no tienen una copia física de los datos, son consultas a los
datos que hay en las tablas, por lo que si actualizamos los datos de una
vista, estamos actualizando realmente la tabla, y si actualizamos la tabla
estos cambios serán visibles desde la vista.
• No siempre podremos actualizar los datos de una vista, esto dependerá
de la complejidad de la misma (dependerá de si el conjunto de resultados
tiene acceso a la clave principal de la tabla o no), y del gestor de base de
datos.
• No todos los gestores de bases de datos permiten actualizar vistas,
ORACLE, por ejemplo, no lo permite, mientras que SQL Server sí.
PROGRAMACIÓN DE BASE DE DATOS
Creación de vistas en SQL Server
Para crear una vista debemos utilizar la sentencia CREATE VIEW,
debiendo proporcionar un nombre a la vista y una sentencia
SQL SELECT válida.
Sintaxis:
CREATE VIEW <nombre_vista> AS
(<sentencia_select>);

Ejemplo en SQL Server Consultar datos de la Vista


CREATE VIEW vAlquileres AS ( SELECT * FROM vAlquileres
SELECT nombre, apellidos, folio
FROM tAlquileres, tClientes Eliminar una Vista
WHERE ( tAlquileres.codigo_cliente = tClientes.codigo )) DROP VIEW vAlquileres;
PROGRAMACIÓN DE BASE DE DATOS
Ejemplo de como extraer información de una vista usando C#
String consulta = "SELECT * FROM vAlquileres;"
SqlCommand commando = new SqlCommand(consulta, conectar);
connectar.Open();
SqlDataReader reader = command.ExecuteReader();
try {
while (reader.Read()) {
Console.WriteLine(String.Format("{0}, {1} , {2}", reader[0], reader[1], reader[2]));
}
} finally {
reader.Close();
}
PROGRAMACIÓN DE BASE DE DATOS
Cursores en SQL Server
• En SQL Server un cursor puede definirse como un elemento que representará
a un conjunto de datos determinado por una consulta T-SQL, el cursor
permitirá recorrer fila a fila, leer y eventualmente modificar dicho conjunto de
resultados.
• La creación y utilización de un cursor estará compuesta, como es de esperarse,
por una serie de instrucciones T-SQL, las cuales podrán separarse en grupos
bien diferenciados, los cuales son:
 Declaración,
 Apertura,
 Acceso a datos,
 Cierre y
 Desalojo.
PROGRAMACIÓN DE BASE DE DATOS
Ejemplo del uso de cursores en SQL Server
DECLARE @Desc AS nvarchar(400)
DECLARE ProdInfo CURSOR FOR SELECT [Description] FROM ProductDesc
OPEN ProdInfo
FETCH NEXT FROM ProdInfo INTO @Desc
WHILE @@fetch_status = 0
BEGIN
PRINT @Description
FETCH NEXT FROM ProdInfo INTO @Description
END
CLOSE ProdInfo
DEALLOCATE ProdInfo
PROGRAMACIÓN DE BASE DE DATOS
Creación de Funciones en SQL Server
• Una función definida por el usuario es una rutina de Transact-SQL o Common
Language Runtime (CLR) que acepta parámetros, realiza una acción, como un
cálculo complejo, y devuelve el resultado de esa acción como un valor. El valor
devuelto puede ser un valor escalar (único) o una tabla.

Sintaxis
CREATE [ OR ALTER ] FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type
[ = default ] [ READONLY ] }
[ ,...n ]
] )
RETURNS return_data_type
PROGRAMACIÓN DE BASE DE DATOS
Ejemplo del uso de funciones en SQL Server
CREATE FUNCTION dbo.inventario(@ProductID int)
RETURNS numeric(6,4)
AS
-- La function regresa el nivel de Stock de un producto
BEGIN
DECLARE @ret numeric(6,4);
SELECT @ret = SUM(p.Quantity)
FROM Production.ProductInventory p
WHERE p.ProductID = @ProductID
AND p.LocationID = '6';
IF (@ret IS NULL)
SET @ret = 0;
RETURN @ret;
END;
PROGRAMACIÓN DE BASE DE DATOS
Triggers en SQL Server

• Un desencadenador (trigger) es una clase especial de procedimiento


almacenado que se ejecuta automáticamente cuando se produce un
evento en el servidor de bases de datos.
SQL Server permite crear varios desencadenadores para una instrucción
específica.
PROGRAMACIÓN DE BASE DE DATOS Según el tipo de evento que los desencadena se clasifican en:

Desencadenadores DML: Los eventos DML son


instrucciones INSERT, UPDATE o DELETE de una
tabla o vista (puede usar INSERTED o DELETED).

Desencadenadores DDL: Corresponden


principalmente a instrucciones CREATE, ALTER y
DROP de Transact-SQL, y a determinados
procedimientos almacenados del sistema que
ejecutan operaciones de tipo DDL.

Desencadenadores logon: Se activan en


respuesta al evento LOGON que se genera cuando
se establece la sesión de un usuario.
PROGRAMACIÓN DE BASE DE DATOS
Sintaxis de un trigger en SQL Server: funciona sobre un INSERT,
DELETE, o UPDATE a una tabla o vista
CREATE [ OR ALTER ] TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }
<dml_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
PROGRAMACIÓN DE BASE DE DATOS
Ejemplo del uso de triggers en SQL Server
USE Gestion
GO
CREATE TRIGGER ActualizaVentasEmp
ON pedidos FOR INSERT
AS
UPDATE empleados SET ventas=ventas + inserted.importe
FROM empleados, inserted
WHERE numemp=inserted.rep;
GO
PROGRAMACIÓN DE BASE DE DATOS
Procedimientos Almacenados en SQL Server
• Un procedimiento almacenado de SQL Server es un grupo de una o varias
instrucciones Transact-SQL. Los procedimientos se asemejan a las
construcciones de otros lenguajes de programación, porque pueden:
 Aceptar parámetros de entrada y devolver varios valores en forma de
parámetros de salida al programa que realiza la llamada.
 Contener instrucciones de programación que realicen operaciones en la
base de datos. Entre otras, pueden contener llamadas a otros
procedimientos.
Sintaxis:
CREATE [PROCEDURE|PROC] nombre_procedimiento [#|##] [(
parámetro1,parámetro2,... )]
[{FOR REPLICATION|WITH RECOMPILE}][WITH ENCRYPTION]
AS<bloque de sentencias>
PROGRAMACIÓN DE BASE DE DATOS
Creación de Procedimientos Almacenados en SQL Server
-- actualización de precios de productos: se recibe como parámetro
-- el tipo de cambio del dólar; por medio del procesamiento almacenado
-- se modifica el precio en pesos de los productos con base en su
-- valor en dólares.
Ejecución de un SP
USE almacen;
USE almacen;
GO GO
CREATE PROCEDURE ProdPrecio EXEC dbo. ProdPrecio @tCambio = 21.57;
@tCambio numeric(6,4) AS
UPDATE productos set pt_precio = p_precio_dllr * tCambio;
GO
PROGRAMACIÓN DE BASE DE DATOS
Elementos de Transac-SQL
• SQL es un lenguaje de consulta para los sistemas de bases de datos relaciónales,
pero que no posee la potencia de los lenguajes de programación. No permite el uso
de variables, estructuras de control de flujo, bucles y demás elementos
característicos de la programación. No es de extrañar, SQL es un lenguaje de
consulta, no un lenguaje de programación.
• Transact-SQL es el lenguaje de programación que proporciona Microsoft SQL
Server para extender el SQL estándar con otro tipo de instrucciones y elementos
propios de los lenguajes de programación .
• Con Transact-SQL vamos a poder programar las unidades de programa de la base
de datos SQL Server, están son:
 Procedimientos almacenados
 Funciones
 Triggers (disparadores)
 Scripts
PROGRAMACIÓN DE BASE DE DATOS
Tipos de datos numéricos: SQL Server dispone de varios tipos de datos numéricos.
Cuanto mayor sea el número que puedan almacenar mayor será en consecuencia el
espacio utilizado para almacenarlo. Como regla general se recomienda usar el tipo
de dato mínimo posible. Todos los dato numéricos admiten el valor NULL.
 bit: puede almacenar el rango de valores de 1 a 0.
 tinyint: puede almacenar el rango de valores de 0 a 255.
 smallint: puede almacenar el rango de valores -32768 a 32767.
 int: puede almacenar el rango de valores -231 a 231-1 .
 bigint: puede almacenar el rango de valores -263 a 263-1.
 decimal(p,s): puede almacenar datos numéricos decimales sin redondear. Donde p es
la precisión (número total del dígitos) y s la escala (número de valores decimales).
 Money: Almacena valores numéricos monetarios de -263 a 263-1, con una precisión de
hasta diez milésimas de la unidad monetaria.
PROGRAMACIÓN DE BASE DE DATOS
Tipos de datos de carácter
• Char(n): Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando
almacenamos datos en el tipo char, siempre se utilizan los n caracteres indicados, incluso si la
entrada de datos es inferior. Por ejemplo, si en un char(5), guardamos el valor 'A', se
almacena 'A ', ocupando los cinco bytes.
• Varchar(n): Almacena n caracteres en formato ASCII, un byte por cada letra. Cuando
almacenamos datos en el tipo varchar, únicamente se utilizan los caracteres necesarios. Por
ejemplo, si en un varchar(255), guardamos el valor 'A', se almacena 'A', ocupando solo un
byte bytes.
• Varchar(max): Igual que varchar, pero al declararse como max puede almacenar 231-1 bytes.
• Nchar(n): Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es
recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan
pertenecer a diferente idiomas.
• Nvarchar(n): Almacena n caracteres en formato UNICODE, dos bytes por cada letra. Es
recomendable utilizar este tipo de datos cuando los valores que vayamos a almacenar puedan
pertenecer a diferente idiomas.
• Nvarchar(max): Igual que varchar, pero al declararse como max puede almacenar 231-1
bytes.
PROGRAMACIÓN DE BASE DE DATOS
Tipos de datos de fecha

• Datetime: Almacena fechas con una precisión de milisegundo. Debe


usarse para fechas muy especificas.
• SmallDatetime: Almacena fechas con precisión de minutos, por lo que
ocupa la mitad de espacio de que el tipo datetime, para tablas que
puedan llegar a tener muchos datos es un factor a tener muy en cuenta.
• TimeStamp: Se utiliza para marcar un registro con la fecha de inserción -
actualización. El tipo timestamp se actualiza automáticamente cada vez
que insertamos o modificamos los datos.
PROGRAMACIÓN DE BASE DE DATOS DECLARE @bit bit, @tinyint tinyint, DECLARE @char char,
@smallint smallint, @int int, @varchar varchar(255),
@decimal decimal(10,3), @smallDatetime smallDatetime
@money money set @char = ‘x’
set @bit = 1 print @char
print @bit set @varchar = ‘Tecnológigo’
set @tinyint = 255 print @varchar
print @tinyint set @smalldatetime = '1998-12-13 12:43:00‘
set @smallint = 32767 print @smalldatetime
print @smallint
Ejemplos de datos
set @int = 642325 tipo carácter y
print @int tipo fecha
set @decimal = 56565.234 Ejemplos de datos
print @decimal tipo numéricos
set @money = 12.34
print @money
PROGRAMACIÓN DE BASE DE DATOS
Proyecto de la unidad: Programación de base de datos (Programación del
lado del servidor)
1: En la BD AlumnosDB que ya tiene en la instancia que tiene instalado el
SQL crear una tabla llamada AlumControl, cuya función es contabilizar el
número de alumnos por carrera. Debe contener los campos:
- Carrera; Campo llave, cadena de 5 caracteres (se admiten solo: IIND, IIA, IGE, ISC,
IIAS, IMEC).
- Nombre; cadena de 50 caracteres.
- Total; numérico entero (solo admite números >= 0).
2: Por medio de query generar un registro por carrera en la tabla
AlumControl con las iniciales de la carrera, nombre de la misma y con CERO
en el campo Total.
3: Eliminar el contenido de la tabla Alumnos.
PROGRAMACIÓN DE BASE DE DATOS
4: generar los triggers necesarios para llevar a cabo el conteo de alumnos:

- Cuando un registro es agregado a la tabla Alumnos se debe sumar 1 a la


carrera correspondiente en la tabla AlumControl.
- Cuando un registro es eliminado de la tabla Alumnos se debe restar 1 a la
carrera correspondiente en la tabla AlumControl.
- Cuando un registro es modificado de la tabla Alumnos se debe restar 1 a
la carrera correspondiente en la tabla AlumControl y debe sumar 1 a la
nueva carrera en la tabla AlumControl.
PROGRAMACIÓN DE BASE DE DATOS
Programación del lado del cliente:
5: Generar una pantalla adicional llamada por un botón, en la GUI que
muestre el contenido de la tabla AlumControl a manera de reporte, se debe
utilizar un objeto grid para llenarlo con la información de la tabla respectiva
por medio de queries lanzados por un botón en el GUI.
6: Verificar por medio de queries en SQL que el contenido de la tabla
AlumControl es correcto.
PROGRAMACIÓN DE BASE DE DATOS
Bibliografía

• Patrick LeBlanc. 2015. Microsoft Visual C# 2013 Step by Step. EE. UU. Octal
Publishing, Inc. ISBN: 978-0-7356-8183-5.
• John Sharp. 2013. Microsoft SQL Server 2012 Step by Step PrePress. EE. UU.
Sevastopol, CA. O’Reilly Media, Inc.
• International Business Machines Corporation. 2006. Desarrollo de
Aplicaciones de SQL Incorporado.

You might also like