Sunteți pe pagina 1din 27

GESTIÓN DE FORMACIÓN PROFESIONAL INTEGRAL

PROCEDIMIENTO DESARROLLO CURRICULAR


GUÍA DE APRENDIZAJE

1. IDENTIFICACIÓN DE LA GUIA DE APRENIZAJE

 Denominación del Programa de : PROGRAMACIÓN DE SOFTWARE


Formación
 Código del Programa de : 228120
Formación
 Nombre del Proyecto : Análisis, diseño y desarrollo de software a la medida para
empresas del distrito especial, turístico y cultural de
Riohacha

 Fase del Proyecto : Diseño

 Actividad de Proyecto : Generar alternativas de solución, basados en la


interpretación de requerimientos del cliente.

 Competencia : Construir el sistema que cumpla con los requisitos de la


solución informática.

 Resultados de Aprendizaje : Relacionar tablas construidas para presentar la información


Alcanzar: solicitada en el diseño.

Construir las tablas que hacen parte del diseño del diagrama
relacional en el motor de base de datos empleando las
cuatro formas de normalización.

 Duración de la Guía :

2. PRESENTACION

El aprendiz adquiere destrezas y habilidades en el desarrollo de base de datos utilizando un


motor de base de datos para resolver los casos de estudios propuestos para que de esta manera
logre aumentar su capacidad de análisis, diseño y desarrollo de cualquier problema planteado
en la vida real.

Las siguientes serán actividades a tener en cuenta para el correcto desarrollo de los resultados
de aprendizaje y la obtención de las Evidencias de Aprendizaje (E.A.).

1. Análisis y Comprensión de los conceptos necesarios para resolver el problema.


2. Desarrollo de talleres en grupo para la solución de problemas.
3. Desarrollo de documentación de análisis y diseño de bases de datos.
4. Lectura en el texto guía del marco teórico para cada actividad.

GFPI-F-019 V3
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

5. Búsqueda de soluciones similares al problema propuesto en libros de bases de datos en


el sistema virtual de biblioteca del SENA.
6. Complementar la documentación con ejercicios en un informe de Actividad.

Las Evidencias de Aprendizaje (E.A.) deberán ser entregadas al instructor al finalizar cada una de
las actividades, mediante su envío a la plataforma Sofía a través del LMS.

El propósito de esta evidencia es realizar la creación una base de datos de acuerdo con un diseño
dado.

Componentes del SQL

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado.
Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de
datos.

Comandos: Existen dos tipos de comandos SQL:

 Los DDL que permiten crear y definir nuevas bases de datos, campos e índices.
 Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de
datos.

Comandos DDL

Comando Descripción

CREATE Utilizado para crear nuevas tablas, campos e índices

DROP Empleado para eliminar tablas e índices

ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de
los campos.

Comandos DML

Comando Descripción

SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio
determinado

INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación.

UPDATE Utilizado para modificar los valores de los campos y registros especificados

DELETE Utilizado para eliminar registros de una tabla de una base de datos
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea
seleccionar o manipular.

Cláusula Descripción

FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros

WHERE Utilizada para especificar las condiciones que deben reunir los registros que se
van a seleccionar

GROUP Utilizada para separar los registros seleccionados en grupos específicos


BY

HAVING Utilizada para expresar la condición que debe satisfacer cada grupo

ORDER Utilizada para ordenar los registros seleccionados de acuerdo con un orden
BY específico

Operadores Lógicos

Operador Uso

AND Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si
ambas son ciertas.

OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna


de las dos es cierta.

NOT Negación lógica. Devuelve el valor contrario de la expresión.

Operadores de Comparación

Operador Uso

< Menor que

> Mayor que

<> Distinto de
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

<= Menor ó Igual que

>= Mayor ó Igual que

= Igual que

BETWEEN Utilizado para especificar un intervalo de valores.

LIKE Utilizado en la comparación de un modelo

In Utilizado para especificar registros de una base de datos

Funciones de Agregado

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para
devolver un único valor que se aplica a un grupo de registros.

Función Descripción

AVG Utilizada para calcular el promedio de los valores de un campo determinado

COUNT Utilizada para devolver el número de registros de la selección

SUM Utilizada para devolver la suma de todos los valores de un campo determinado

MAX Utilizada para devolver el valor más alto de un campo especificado

MIN Utilizada para devolver el valor más bajo de un campo especificado

3. FORMULACION DE LAS ACTIVIDADES DE APRENDIZAJE

 Descripción de la(s) Actividad(es)


 El propósito de esta evidencia es realizar la creación una base de datos de acuerdo con un
diseño dado.

Temas a desarrollar:

1. Vistas
2. Procedimientos y funciones almacenadas
2.1. Transacciones (TRANSACT SQL)
2.1.1. Control de errores
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

2.1.2. Control de flujo


2.1.3. TRY CATCH
2.2. Cursores
3. Disparadores (TRIGGERS)
4. ENCRYPTBYPASSPHRASE Y DECRYPTBYPASSPHRASE (Encriptar y desencriptar
contraseñas)
5. Creación de usuarios en las bases de datos

Código SQL Server

Para crear tablas llamando a la base de datos

Use database nombre_BD

Go

Create table usuario

Id_usuario integer (15) not null,

Create table usuario

Id_usuario integer (15) not null,

Nom_usu varchar (20) not null,

Ape_usu varchar (20) not null,

Primary key (Id_usuario),

DI_COLECC numeric (18) no null,

Foreign key (id_emp) references empresa (id_emp)

Foreign key (DI_COLECC) references Coleccionista (DI_COLECC),

);

CREATE TABLE nombre_tabla

(campo tipo_dato PRIMARY KEY NOT NULL,


SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

campo tipo_dato NOT NULL);

CREATE TABLE nombre_tabla

(campo tipo_dato PRIMARY KEY NOT NULL,

campo tipo_dato NOT NULL,

campo tipo_dato REFERENCES nombre_otra_tabla(nombre_campo)

);

Para ingresar datos a las tablas se utiliza el siguiente código:

INSERT INTO nombre_tabla (“columna1", columna2) VALUES ("valor 1", valor 2”)

Insert into usuario (id_usuario, nom_usu, ape_usu ….) values (1515, ‘Daniel’, ‘Marquez’);

Para actualizar un campo se utiliza el siguiente código:

Alter table usuario add foreign key (id_usuario) references usuario (id_usuario);

ALTER TABLE nombre_tabla ADD/MODIFY nombre_campo tipo_dato;

ALTER TABLE nombre_tabla ADD/MODIFY PRIMARY KEY (nombre_campo);

ALTER TABLE nombre_tabla ADD/MODIFY nombre_campo tipo_dato REFERENCES


nombre_otra_tabla(nombre_campo);

Actualizar datos en una tabla:

UPDATE nombre_tabla SET columna1=valor1, columna2=valor2 WHERE condición

Para realizar consultas en la base de datos el código es el siguiente:

Select * from usuario where ape_usu= ‘Lopez’

Select id_usu, nom_usu from usuario

Select * from usuario where ape_usu= ‘Britto’ or ape_usu= ‘Marquez’


SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

Select id_usu, nom_usu from usuario order by nom_usu desc

Ejemplo:

create table CLIENTES


(
DI_cliente varchar(30) not null primary key,
nom1_cliente varchar(50),
nom2_cliente varchar(50),
ape1_cliente varchar(50),
ape2_cliente varchar(50),
dir_cliente varchar(50),
tel_cliente varchar(50),
genero_cliente varchar(50)
);

create table FACTURAS


(
Num_factura numeric not null primary key,
Vr_total_factu money,
DI_cliente varchar(30) not null
);

create table PROVEEDORES


(
DI_provee varchar(30) not null primary key,
nom1_provee varchar(50),
nom2_provee varchar(50),
ape1_provee varchar(50),
ape2_provee varchar(50),
dir_provee varchar(50),
tel_provee varchar(50),
ID_ciudad numeric not null
);

create table CIUDAD


(
ID_ciudad numeric not null primary key,
nom_ciudad varchar(50)
);

create table CATEGORIAS


(
ID_categoria varchar(30) not null primary key,
nom_categoria varchar(50)
);

create table PRODUCTOS


(
ID_producto varchar(30) not null primary key,
descripcion_produc varchar(50),
Vr_unit_produc money,
ID_categoria varchar(30) not null,
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

DI_provee varchar(30) not null


);

create table VENTAS


(
ID_vta numeric not null primary key,
cantidad_vta numeric,
ID_producto varchar(30) not null,
Num_factura numeric not null
);

alter table FACTURAS add foreign key (DI_cliente) references CLIENTES(DI_cliente);


alter table PROVEEDORES add foreign key (ID_ciudad) references CIUDAD(ID_ciudad);
alter table PRODUCTOS add foreign key (ID_categoria) references CATEGORIAS(ID_categoria);
alter table PRODUCTOS add foreign key (DI_provee) references PROVEEDORES(DI_provee);
alter table VENTAS add foreign key (Num_factura) references FACTURAS(Num_factura);
alter table VENTAS add foreign key (ID_producto) references PRODUCTOS(ID_producto);

-- PROCEDIMIENTOS ALMACENADOS (GUARDAN LA INFORMACION DE LOS DATOS INSERTADOS)


PARA INSERTAR DATOS EN CADA UNA DE LAS TABLAS DE LA BASE DE DATOS
-- el @ indica que se está declarando ese atributo como una variable donde se almacenará la información que
insertamos

create procedure datosCLIENTES


(
@DI_cliente varchar(30),
@nom1_cliente varchar(50),
@nom2_cliente varchar(50),
@ape1_cliente varchar(50),
@ape2_cliente varchar(50),
@dir_cliente varchar(50),
@tel_cliente varchar(50),
@genero_cliente varchar(50)
)
as
insert into
CLIENTES(DI_cliente,nom1_cliente,nom2_cliente,ape1_cliente,ape2_cliente,dir_cliente,tel_cliente,genero_client
e)
values
(@DI_cliente,@nom1_cliente,@nom2_cliente,@ape1_cliente,@ape2_cliente,@dir_cliente,@tel_cliente,@gener
o_cliente);

-- ASI SE INSERTAN LOS DATOS EN LOS PROCEDIMIENTOS ALMACENADOS

execute datosCLIENTES '1515','Angello','Antonell','Castillo','Rodriguez','Calle 80 No. 15-


28','5727399','Masculino';
execute datosCLIENTES '2020','Peter','Santiago','Solano','Mendez','Calle 90 No. 70-15','3231045','Masculino';
execute datosCLIENTES '3030','Luisa','Lana','Lang','Leins','Carrera 90 No. 70-80','2207890','Femenino';
execute datosCLIENTES '4070','Misael','Juan','Jimenez','Sarmiento','Cra 80 No. 57-15','5727399','Masculino';
execute datosCLIENTES '7057','Jason','George','Staththam','Weelling','Calle 95 No. 75-12','5727399','Masculino';
execute datosCLIENTES '9010','Anabella','Summers','Arrieta','Blanco','Cra 85 No. 63-48','5727399','Femenino';
execute datosCLIENTES '8024','Brigette','Mary','Hartley','Stanley','Calle 100 No. 68-22','5727399','Femenino';
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

create procedure datoCIUDAD


(
@ID_ciudad numeric,
@nom_ciudad varchar(50)
)
as
insert into CIUDAD(ID_ciudad,nom_ciudad)
values (@ID_ciudad,@nom_ciudad);

exec datoCIUDAD 20,'Valledupar';


exec datoCIUDAD 10,'Bogota';
exec datoCIUDAD 30,'Cali';
exec datoCIUDAD 40,'Medellin';

create procedure datosPROVEEDORES


(
@DI_provee varchar(30),
@nom1_provee varchar(50),
@nom2_provee varchar(50),
@ape1_provee varchar(50),
@ape2_provee varchar(50),
@dir_provee varchar(50),
@tel_provee varchar(50),
@ID_ciudad numeric
)
as
insert into
PROVEEDORES(DI_provee,nom1_provee,nom2_provee,ape1_provee,ape2_provee,dir_provee,tel_provee,ID_ci
udad)
values
(@DI_provee,@nom1_provee,@nom2_provee,@ape1_provee,@ape2_provee,@dir_provee,@tel_provee,@ID_
ciudad);

execute datosPROVEEDORES '2323','David','Alejandro','Perez','Marquez','Calle 30 No. 87-10','3381042',10;


execute datosPROVEEDORES '4848','Angela','Daniela','Blanco','Torres','Calle 80 No. 05-28','5719634',20;
execute datosPROVEEDORES '5689','Yessica','Manuela','Rios','Bohorquez','Calle 90 No. 32-15','3257890',10;

execute datosPROVEEDORES '7070','Juan','Diego','Perez','Marquez','Calle 30 No. 87-10','6381042',30;


execute datosPROVEEDORES '6310','Samantha','Celeste','Jaimes','Lopez','Cra 70 No. 23-75','597821',40;
execute datosPROVEEDORES '2835','Axel','Fabian','Folie','Paris','Calle 100 No. 39-25','5823104',40;
execute datosPROVEEDORES '1020','Daniel','Adonis','Marcano','Stallone','Calle 45 No. 100-05','5728843',20;

create procedure datosFACTURAS


(
@Num_factura numeric,
@Vr_total_factu money,
@DI_cliente varchar(30)
)
as
insert into FACTURAS(Num_factura,Vr_total_factu,DI_cliente)
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

values (@Num_factura,@Vr_total_factu,@DI_cliente);

Execute datosFACTURAS 734,380000,'1515';


Execute datosFACTURAS 102,420000,'1515';
Execute datosFACTURAS 328,120000,'2020';
Execute datosFACTURAS 572,560000,'3030';
Execute datosFACTURAS 482,310000,'4070';
Execute datosFACTURAS 895,220000,'7057';
Execute datosFACTURAS 196,180000,'9010';
Execute datosFACTURAS 547,150000,'8024';
Execute datosFACTURAS 293,230000,'4070';

create procedure datosCATEGORIAS


(
@ID_categoria varchar(30),
@nom_categoria varchar(50)
)
as
insert into CATEGORIAS(ID_categoria,nom_categoria)
values (@ID_categoria,@nom_categoria);

execute datosCATEGORIAS 'B110','Bebidas';


execute datosCATEGORIAS 'G220','Granos';
execute datosCATEGORIAS 'C330','Confiteria';

create proc datosPRODUCTOS


(
@ID_producto varchar(30),
@descripcion_produc varchar(50),
@Vr_unit_produc money,
@ID_categoria varchar(30),
@DI_provee varchar(30)
)
as
insert into PRODUCTOS(ID_producto,descripcion_produc,Vr_unit_produc,ID_categoria,DI_provee)
values (@ID_producto,@descripcion_produc,@Vr_unit_produc,@ID_categoria,@DI_provee);

exec datosPRODUCTOS 170,'Coca Cola',60000,'B110','2323';


exec datosPRODUCTOS 260,'Jugos Califonia',45000,'B110','2323';
exec datosPRODUCTOS 239,'Arroz',25000,'G220','4848';
exec datosPRODUCTOS 498,'Gaseosa Postobon',48000,'B110','4848';
exec datosPRODUCTOS 375,'Frijol Rosado',34000,'G220','7070';
exec datosPRODUCTOS 111,'Chocolatinas Jumbo',55000,'C330','7070';
exec datosPRODUCTOS 517,'Choco Break',28000,'C330','6310';
exec datosPRODUCTOS 690,'Bon Bom bum',18000,'C330','2835';
exec datosPRODUCTOS 342,'M&M',68000,'C330','2835';
exec datosPRODUCTOS 777,'Jugos Hit',57000,'B110','1020'
exec datosPRODUCTOS 240,'Frijol Rojo',29000,'G220','1020'

create proc datosVENTAS


(
@ID_vta numeric,
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

@cantidad_vta numeric,
@ID_producto varchar(30),
@Num_factura numeric
)
as
insert into VENTAS(ID_vta,cantidad_vta,ID_producto,Num_factura)
values (@ID_vta,@cantidad_vta,@ID_producto,@Num_factura);

Execute datosVENTAS 1,10,170,734;


Execute datosVENTAS 2,15,170,547;
Execute datosVENTAS 3,12,260,102;
Execute datosVENTAS 4,11,260,328;
Execute datosVENTAS 5,10,239,734;
Execute datosVENTAS 6,9,498,102;
Execute datosVENTAS 7,8,375,547;
Execute datosVENTAS 9,18,111,328;
Execute datosVENTAS 10,16,111,734;
Execute datosVENTAS 11,9,517,482;
Execute datosVENTAS 12,20,517,572;
Execute datosVENTAS 13,21,690,547;
Execute datosVENTAS 14,19,690,572;
Execute datosVENTAS 15,4,342,734;
Execute datosVENTAS 16,5,777,482;
Execute datosVENTAS 17,9,342,293;
Execute datosVENTAS 18,10,777,895;
Execute datosVENTAS 19,15,240,196;

select * from CLIENTES;


select * from CIUDAD;
select * from PROVEEDORES;
select * from FACTURAS;
select * from CATEGORIAS;
select * from PRODUCTOS;
select * from VENTAS;

-- PROCEDIMIENTO PARA CONSULTAR POR CODIGO DE LA CIUDAD

create proc consultaciudad


@ID_ciudad numeric
as
select * from CIUDAD where ID_ciudad=@ID_ciudad order by nom_ciudad desc
go

execute consultaciudad 10;

-- PROCEDIMIENTO PARA CONSULTAR POR NOMBRE DE LA CIUDAD

create proc nombreciudad


as
select nom_ciudad from CIUDAD where nom_ciudad IN ('Valledupar','Bogota','Cali','Medellin') order by
nom_ciudad desc
go
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

exec nombreciudad;

-- PROCEDIMIENTO PARA CONSULTAR POR NOMBRE DEL PROVEEDOR UTILIZANDO LIKE

create procedure buscarproveedor


@nom1_provee varchar(50),
@ape1_provee varchar(50)

as
select nom1_provee,ape1_provee from PROVEEDORES where nom1_provee like @nom1_provee + '%'
and ape1_provee like @ape1_provee + '%'
go

execute buscarproveedor 'S','J';

-- PROCEDIMIENTO PARA CONSULTAR POR Apellido DEL PROVEEDOR UTILIZANDO LIKE

create procedure busquedaapellido


@ape1_provee varchar(50)='[A-S]%'
as
select nom1_provee,ape1_provee,tel_provee from PROVEEDORES where ape1_provee like '[A-S]%'
go

execute busquedaapellido 'B';

-- PROCEDIMIENTO PARA BUSCAR POR LETRA

create procedure busquedaporletra


@ape1_cliente varchar(50)='%'
as
select * from CLIENTES where ape1_cliente like @ape1_cliente + '%'
go

exec busquedaporletra 'S';

-- PROCEDIMIENTO PARA BUSCAR DOCUMENTO DE IDENTIDAD Y SI EXISTE QUE LO MUESTRE POR


PANTALLA SINO QUE ENVIE UN MENSAJE: CLIENTE NO EXISTE

create proc existeCLIENTES


@DI_cliente varchar(30)
as
if exists(select DI_cliente from CLIENTES where DI_cliente=@DI_cliente)
begin
select nom1_cliente,ape1_cliente,dir_cliente, tel_cliente from CLIENTES where DI_cliente=@DI_cliente
end
else
begin
print 'Cliente buscado no Existe'
end
go

execute existeCLIENTES '7070';


SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

-- Si queremos ejecutar un procedimiento que permita omitir los valores para los parámetros debemos, al crear el
procedimiento,
-- definir valores por defecto para cada parámetro ejemplo:

create procedure consulprodutos


@descripcion_produc varchar(50)='M&M',
@Vr_unit_produc money=68000
as
select ID_producto,descripcion_produc,Vr_unit_produc from PRODUCTOS
where descripcion_produc= @descripcion_produc and
Vr_unit_produc=@Vr_unit_produc;

exec consulprodutos;

-- Podemos emplear patrones de búsqueda en la consulta que define el procedimiento almacenado y utilizar
comodines como valores por defecto:

create proc buscarcualquierproduc


@ID_producto varchar(30) = '%',
@descripcion_produc varchar(50)='%'
as
select * from PRODUCTOS
where ID_producto like @ID_producto and
descripcion_produc like @descripcion_produc;

exec buscarcualquierproduc @ID_producto='1%',@descripcion_produc='C%';

Select * from PRODUCTOS

-- Como realizar Cálculos en SQL

select ID_vta,cantidad_vta,Num_factura, Vr_unit_produc, descripcion_produc, Vr_unit_produc*cantidad_vta


as Total_factura from VENTAS inner join PRODUCTOS on VENTAS.ID_producto=PRODUCTOS.ID_producto;

--Creamos un procedimiento almacenado que muestre los Id_producto, descripción_produc y el vr_unit_produc,


de los PRODUCTOS de un determinado producto
--(enviado como parámetro de entrada) y nos retorne la suma y el promedio de los precios de todos los
productos enviado:

create procedure productosumaypromedio


@descripcion_produc varchar(50)='%',
@suma money output,
@promedio money output
as
select ID_producto,descripcion_produc,Vr_unit_produc from PRODUCTOS where descripcion_produc like
@descripcion_produc
select @suma=sum(Vr_unit_produc) from PRODUCTOS where descripcion_produc like @descripcion_produc
select @promedio=avg(Vr_unit_produc) from PRODUCTOS where descripcion_produc like
@descripcion_produc;

declare @s money, @p money


execute productosumaypromedio 'C%', @s output, @p output
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

select @s as total, @p as promedio;

--Creamos un procedimiento que muestre todos los productos especificados que se ingresa como parámetro.
--Si no se ingresa un valor, o se ingresa "null", se muestra un mensaje y se sale del procedimiento:

create procedure consultarproductos


@descripcion_produc varchar(50)=null
as
if @descripcion_produc is null
begin
select 'Debe indicar un Producto'
return
end;
select descripcion_produc from PRODUCTOS where descripcion_produc = @descripcion_produc;

exec consultarproductos 'Arroz';

-- Creamos un procedimiento almacenado que ingresa registros en la tabla "PRODUCTOS". Los parámetros
correspondientes el Id del producto,
-- descripción y valor unitario DEBEN ingresarse con un valor distinto de "null"

create procedure productos_ingreso


@ID_producto varchar(30)=null,
@descripcion_produc varchar(50)=null,
@Vr_unit_produc money=null,
@ID_categoria varchar(30)=null,
@DI_provee varchar(30)=null
as
if (@ID_producto is null) or (@descripcion_produc is null)
return 0
else
begin
insert into PRODUCTOS values (@ID_producto,@descripcion_produc,@Vr_unit_produc
,@ID_categoria,@DI_provee)
return 1
end;

declare @retorno int;


exec @retorno=productos_ingreso '115','Frijol Cabezita Negra',17000,'G220','1020'
if @retorno=1 print 'Registro ingresado'
else select 'Registro no ingresado porque faltan datos';

select * from PRODUCTOS

-- PROCEDIMIENTOS PARA ACTUALIZAR DATOS EN LA BD, todos o algunos de esos datos

create procedure actualizardatos


@DI_cliente varchar(30),
@nom1_cliente varchar(50),
@nom2_cliente varchar(50),
@ape1_cliente varchar(50),
@ape2_cliente varchar(50)
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

as
begin
update CLIENTES set
nom1_cliente=@nom1_cliente,nom2_cliente=@nom2_cliente,ape1_cliente=@ape1_cliente,ape2_cliente=@ape
2_cliente where DI_cliente=@DI_cliente
end

exec actualizardatos '3030','Lana','Kristin','Lang','Kreuk';

select * from CLIENTES;

-- AHORA CREAMOS UN PROCEDIMIENTO PARA ELIMINAR UN REGISTRO: 7057

--PRIMERO ELIMINAMOS EL NUMERO DE FACTURA QUE ENLAZA AL CLIENTE CON LAS TABLAS
VENTAS Y FACTURAS
delete VENTAS where Num_factura=895;
delete FACTURAS where Num_factura=895;

create proc eliminarcliente


(
@DI_cliente varchar(30)
)
as
delete CLIENTES where DI_cliente=@DI_cliente
go

exec eliminarcliente '7057';

-- sin parámetros nos muestra todos los objetos de la base de datos seleccionada, incluidos los procedimientos.
sp_help

-- CREACION DE VISTAS

create view vistaproductos


as
select ID_producto,descripcion_produc,Vr_unit_produc from PRODUCTOS;

-- ASI SE EJECUTA LA VISTA

select descripcion_produc from vistaproductos order by ID_producto asc;


select * from vistaproductos order by ID_producto desc;

create view vistaventas


as
select ID_vta,cantidad_vta,Num_factura,descripcion_produc from VENTAS inner join PRODUCTOS on
VENTAS.ID_producto=PRODUCTOS.ID_producto;

select * from vistaventas;


SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

CREACION DE FUNCIONES
1. Funciones Escalares: se utiliza para cálculos matemáticos ya que devuelve un valor.
Ejemplo: Calculo del IVA.

-- FUNCIONES ESCALARES: SE UTILIZA PARA CALCULOS MATEMATICOS, YA QUE DEVUELVEN UN


VALOR

create function IVAfactura


(
@Vr_total_factu money
)
returns money
as
begin
Declare @resultado money
set @resultado=@Vr_total_factu * 0.16
return(@resultado)
end

select Num_factura,Vr_total_factu, dbo.IVAfactura(Vr_total_factu) as IVA from FACTURAS;


Función con valores de tabla: Función parecido al de una vista pero recibe parámetros de
entrada y retorna en una tabla los valores

-- FUNCIONES CON VALORES DE TABLA

create function listarciudad


(
@cod_ciudad numeric
)
returns @CIUDAD table
(
ID_ciudad numeric,
nom_ciudad varchar(50)
)
as
begin
insert @CIUDAD select ID_ciudad, nom_ciudad from CIUDAD where ID_ciudad=@cod_ciudad
return
end

select * from listarciudad(20);

Funciones con valores de Tabla en Línea: Función igual que la 2 son híbridos entre
procedimientos y vistas

create function listarGENERO


(
@GEN varchar(50)
)
returns table
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

as
return
select nom1_cliente, ape1_cliente,tel_cliente from CLIENTES where genero_cliente=@GEN

-- DE ESTA MANERA SE EJECUTA UNA FUNCION o SE LLAMA UNA FUNCION

select * from listarGENERO('Masculino');


select * from listarGENERO('Femenino');

-- Funcion getdate(): retorna la fecha y hora actuales.

select getdate() as Fecha_Hora;

-- datename(partedefecha,fecha): retorna el nombre del mes actual;


select datename(month,getdate()) as Mes;

-- month(fecha): retorna el mes de la fecha especificada. Ejemplo:

select month(getdate()) as Mes_en_numero;

-- otras consultas

select * from FACTURAS


select * from FACTURAS where Vr_total_factu between 180000 and 410000;

select * from FACTURAS


select * from FACTURAS where Vr_total_factu>=150000 and Vr_total_factu<=420000;

select * from PROVEEDORES


select * from FACTURAS where Vr_total_factu<> 230000;

-- Para seleccionar proveedores cuyo primer nombre comienza con las letras entre la "D" y la "S" usamos la
siguiente sintaxis:

select nom1_provee,ape1_provee,tel_provee from PROVEEDORES where nom1_provee like '[D-S]%';

-- Para seleccionar los proveedores cuyo primer nombre NO comienza con las letras "D" ni "S" escribimos:
select nom1_provee,ape1_provee,tel_provee from PROVEEDORES where nom1_provee like '[^DS]%';

-- Si queremos que en la factura que NO se incluyan centavos en su valores:

select ID_producto,descripcion_produc,Vr_unit_produc from PRODUCTOS where Vr_unit_produc like '%.00';

-- busca cadenas que comiencen con 'An' o 'Am'.

select nom1_provee,ape1_provee,tel_provee from PROVEEDORES where nom1_provee like 'A[nm]%';

--La palabra clave "top" se emplea para obtener sólo una cantidad limitada de registros, los primeros n registros
de una consulta.

-- Con la siguiente consulta obtenemos todos los datos de los primeros 3 productos de la tabla y ordenados por
su descripción en forma descendente
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

select top 3 descripcion_produc, Vr_unit_produc,ID_categoria from PRODUCTOS order by descripcion_produc


desc;

select nom_ciudad, Resultado=


case ID_ciudad
when 10 then 'Bogotá'
when 20 then 'Valledupar'
when 30 then 'Cali'
when 40 then 'Medellin'
end
from CIUDAD;

select * from CIUDAD

create view vistacategor


as
select * from categoria;

-- ASI SE EJECUTA LA VISTA

select nom_cate,DI_chef from vistacategor order by cod_cate asc;

select nom_cate,nom1_chef,ape1_chef from vistacategor inner join chef on


chef.DI_chef=vistacategor.DI_chef

-- Funcion getdate(): retorna la fecha y hora actuales.

select getdate() as Fecha_Hora;

-- datename(partedefecha,fecha): retorna el nombre del mes actual;


select datename(month,getdate()) as Mes;

-- month(fecha): retorna el mes de la fecha especificada. Ejemplo:

select month(getdate()) as Mes_en_numero;

--Funciones escalares aplicandolo en la tabla platos. Se utiliza para cálculos matemáticos


ya que devuelve un valor

create function IVAplato


(
@precio_plato money
)
returns money
as
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

begin
Declare @resultado money
set @resultado=@precio_plato * 0.19
return(@resultado)
end

select sum(precio_plato + dbo.IVAplato(precio_plato)) as IVA from plato

create function IvaPrecio


(
@precio_plato money
)
returns money
as
begin
Declare @resultado money
set @resultado=@precio_plato * 0.19+ @precio_plato
return(@resultado)
end
select nom_plato,precio_plato, dbo.IVAplato(precio_plato) as IVA,
dbo.IvaPrecio(precio_plato) as Total_Pagar from plato

select * from plato

--Función parecido al de una vista pero recibe parámetros de entrada y retorna en una tabla
los valores. Funcion con valores en tabla

create function listarplato


(
@cod_plato varchar(20)
)
returns @plato table
(
cod_plato varchar(20),
nom_plato varchar(50),
descri_plato varchar(50),
nivel_dif_plato varchar(10),
precio_plato money,
cod_cate varchar(10)
)
as
begin
insert @plato select * from plato
return
end

select nom_plato,precio_plato, nivel_dif_plato from listarplato('JN')


select * from plato

-- Funcion con valores en tabla en linea. Función igual q la 2 son hibridos entre
procedimientos y vistas.

create function listarCATE


(
@cod_cate varchar(10)
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

)
returns table
as
return
select nom_cate,descri_cate,DI_chef from categoria where cod_cate=@cod_cate

-- DE ESTA MANERA SE EJECUTA UNA FUNCION o SE LLAMA UNA FUNCION

select * from listarCATE('BEB');

/* creamos una tabla llamada Usuarios en la base de datos que acabamos de crear,
esta tabla tendrá los campos "Name" (llave primaria de la tabla, de tipo nvarchar(50)) y
"Pass"
este campo guardara la contraseña encriptada (tipo nvarchar 300)).
Debemos de ver que el tipo del campo "Pass" tiene un tamaño de 300,
esto porque la encriptacion puede devolvernos un valor variable en su tamaño.*/

create table Usuarios1


(
Nom_usuario nvarchar(50) not null primary key,
Pass nvarchar(300)
);

/* Este procedimiento almacenado será el que ingrese usuarios a la tabla Usuarios,


recibe dos parámetros el nombre de usuario y la contraseña.
El procedimiento guarda la contraseña encriptada para ello utilizaremos la opción de SQL
Server
para encriptar datos llamada ENCRYPTBYPASSPHRASE este algoritmo necesita de una clave
y el dato a encriptar en nuestro caso la contraseña.*/

create procedure ingresarusuario


@Nom_usuario nvarchar(50),
@Pass nvarchar(300)
as
begin
insert into Usuarios1(Nom_usuario, Pass) values (@Nom_usuario,
ENCRYPTBYPASSPHRASE('password',@Pass))
end
go

exec ingresarusuario 'JSK', 'hy12';

select * from Usuarios1

select * from Usuarios1 where Nom_usuario= 'Yamelys'

CREATE FUNCTION LeeClave


(
@Passw nVARCHAR(300)
)
RETURNS nVARCHAR(300)
AS
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

BEGIN
DECLARE @pass AS nVARCHAR(300)
------------------------------------
------------------------------------
--Se descifra el campo aplicandole la misma llave con la que se cifro dbCurso09
SET @pass = DECRYPTBYPASSPHRASE('password',@Passw)
------------------------------------
------------------------------------
RETURN @pass
END
GO

SELECT Nom_usuario, dbo.LeeClave(pass) as Contrasena FROM Usuarios1 where


Nom_usuario='Kara'

execute ingresarusuario 'Kara','win82'


select * from Usuarios1

--Hallar estado del stock de ingredientes: Transact SQL Control flujos


DECLARE @stock_ingre varchar(20)
SET @stock_ingre=2
SELECT ingredientes.id_ingre, nom_ingre, cant_ingre,
'ESTADO'=(CASE WHEN cant_ingre>@stock_ingre THEN 'Cantidad OK'
WHEN cant_ingre=@stock_ingre THEN 'Cantidad en límite'
WHEN cant_ingre<@stock_ingre THEN 'Hacer pedido'
END)
FROM ingredientes inner join plato_ingredientes
ON ingredientes.id_ingre=plato_ingredientes.id_ingre
GO

select * from ingredientes

--Actualizar las unidades de existencia de los ingredientes asignándoles el


--valor de 1000 de aquellos productos cuyo stock sea cero

insert into ingredientes(id_ingre,nom_ingre,stock_ingre,unidad_ingre)


values('A1','Arroz','20','Libras'),('oil','Aceite','20','Litros');

insert plato_ingredientes(id_ingre,cod_plato,cant_ingre)
values('oil','AC','15'),('A1','AC','20');

select * from ingredientes


select * from plato_ingredientes
select * from plato

PRINT 'Version: ' + @@VERSION


PRINT 'Lenguaje : ' + @@LANGUAGE
PRINT 'Servidor: ' + @@SERVERNAME
PRINT 'Conexiones: ' + STR(@@MAX_CONNECTIONS)
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

-- TRANSACCIONES EXPLICITAS CON TRANSACT SQL

begin transaction

update plato
set precio_plato=precio_plato+'$500'
where cod_plato='AdP'
commit /*se cierra la transaccion si se realizo satisfactoriamente los cambios*/
rollback /* borra todos los cambios que hayamos realizados en la BD lo cual indica que el
cambio no se ha realizado satisfactoriamente*/

select * from plato

CREATE PROCEDURE ingchef


@DI_chef varchar(20),
@nom1_chef varchar(20),
@nom2_chef varchar(20),
@ape1_chef varchar(20),
@ape2_chef varchar(20)
AS
BEGIN TRAN Tchef

BEGIN TRY
INSERT INTO chef
VALUES(@DI_chef,@nom1_chef,@nom2_chef,@ape1_chef,@ape2_chef )
COMMIT TRAN Tchef
PRINT 'chef Registrado'
END TRY

BEGIN CATCH
PRINT 'Error-Codigo registro ya existe'
ROLLBACK TRAN Tchef
END CATCH
GO

exec ingchef '7090','Ximena','Adriana','Arias','Gonzalez'

select * from chef

/* CURSORES */

-- DECLARANDO EL CURSOR

declare cursor1 cursor scroll


for select * from chef

--ABRIR EL CURSOR

open cursor1
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

-- NAVEGAR CON EL CURSOR PARA QUE PERMITA NAVEGAR Y NO AVANZAR ENTRE DEBEMOS UTILIZAR LA
INSTRUCCION SCROLL

fetch next from cursor1 /* ir al proximo registro, la instruccion fetch se ejecuta una sola
vez*/
fetch first from cursor1 /* ir al primer registro*/
fetch last from cursor1 /* ir al ultimo registro*/
fetch prior from cursor1 /* retroceder entre registros*/

-- CERRAR EL CURSOR

close cursor1

-- LIBERAR DE MEMORIA RAM CURSOR


deallocate cursor1

-- EJEMPLO 2 CURSORES

declare @DI_chef varchar(20),


@nom1_chef varchar(20), @ape1_chef varchar(20)

declare cchef cursor global


for select DI_chef, nom1_chef,ape1_chef from chef
open cchef
fetch cchef into @DI_chef, @nom1_chef,@ape1_chef
while (@@FETCH_STATUS=0) /* se utiliza para que podamos navegar varias veces con el cursor
@@FETCH_STATUS=0 si se ejecuto correctamente el FETCH, devuelve -1 si no se ejecuto
correctamente y devuelve -2 si hubo un error en la fila recuperada*/
begin
print @DI_chef +' '+ @nom1_chef +' '+ @ape1_chef /*muestra por pantalla los
registros*/
fetch cchef into @DI_chef, @nom1_chef,@ape1_chef /*para que nos devuelva fila por fila del
cursor*/
end
close cchef
deallocate cchef

-- EJEMPLO 3 CURSORES ACTUALIZAR DATOS

declare @DI_chef1 varchar(20), @nom11_chef varchar(20), @nom2_chef varchar(20),


@ape11_chef varchar(20), @ape2_chef varchar(20)
declare curchef cursor global
for select DI_chef,nom1_chef,nom2_chef,ape1_chef,ape2_chef from chef FOR UPDATE
open curchef
fetch curchef into @DI_chef1,@nom11_chef,@nom2_chef,@ape11_chef,@ape2_chef
while (@@FETCH_STATUS=0) /* se utiliza para que podamos navegar varias veces con el cursor
@@FETCH_STATUS=0 si se ejecuto correctamente el FETCH, devuelve -1 si no se ejecuto
correctamente y devuelve -2 si hubo un error en la fila recuperada*/
begin
UPDATE chef
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

SET nom2_chef=@nom2_chef + 'Modificado'


where current of curchef
fetch curchef into @DI_chef1,@nom11_chef,@nom2_chef,@ape11_chef,@ape2_chef /*para nos
devuelva fila por fila del cursor*/
end
close curchef
deallocate curchef

Por lo tanto, usted debe Construir el Modelo Relacional donde refleje toda la información
necesaria para almacenar la información relativa, y cree una Base de datos utilizando como
herramienta el lenguaje de consulta estructurado (SQL Server), lo cual debe crear las tablas,
insertar datos, actualizar, eliminar registros y realizar consultas de la información ingresada para
lo cual debe utilizar procedimientos almacenados, vistas, funciones (escalares, con valores en tabla
y de tabla en línea), Transacciones, cursores.

Caso de estudio 1: Construcción de viviendas

Le contratan para crear una BD que permita apoyar la gestión de un sistema de ventas del
supermercado Hight Tower, el cual necesita llevar un control de proveedores, clientes,
productos y facturas.

Un proveedor tiene un NIT/CC, nombres, apellidos, dirección, teléfono, ciudad y Email. Un


cliente también tiene DI, nombres, apellidos, dirección, teléfono, genero. Un producto tiene
un id único, nombre, precio actual y nombre del proveedor. Además, se organizan en
categorías, y cada producto va sólo en una categoría. Una categoría tiene id, nombre y
descripción. Por razones de contabilidad, se debe registrar la información de cada factura
de venta realizada, identificada con un número, fecha, cliente, IVA, total a pagar y la
cantidad vendida.

 Ambiente Requerido: Aulas informáticas, biblioteca virtual del Centro de formación – SENA.
 Materiales: Internet, lápices, papel, computadores, video beam, televisor, esfero,
marcadores, etc.

Tomando como referencia la planeación pedagógica y las orientaciones para elaborar guías de
aprendizaje citado en la guía de desarrollo curricular

4. ACTIVIDADES DE EVALUACIÓN
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

Tome como referencia las técnicas e instrumentos de evaluación citados en la guía de Desarrollo
Curricular

Evidencias de Aprendizaje Criterios de Evaluación Técnicas e Instrumentos de


Evaluación

Evidencias de Crea la base de datos en el Adjuntar la evidencia solicitada


Conocimiento: motor de base de datos a través de la Plataforma
seleccionado, siguiendo SOFIA Plus siguiendo la ruta
Foros, Desarrollo de talleres y especificaciones técnicas del del LMS.
prueba de conocimiento. informe, según normas y
protocolos de la empresa.
Evidencias de Desempeño:

Crear una base de datos de


acuerdo con un diseño dado.

Manipular una base de datos de


acuerdo con las necesidades de
información.

Evidencias de Producto:
Crear una base de datos de
acuerdo al caso de estudio
propuesto utilizando el motor de
base de datos SQL server
siguiendo las especificaciones
solicitadas.

5. GLOSARIO DE TERMINOS

6. REFERENTES BILBIOGRAFICOS

http://www.w3schools.com/sql/

http://www.1keydata.com/es/sql/

http://www.1keydata.com/sql/sql.html

http://www.sqlcourse.com/index.html

http://www.windowsazure.com/es-es/services/sql-database/?rnd=1
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

http://laboratorio.is.escuelaing.edu.co/labinfo/doc/Manual_Basico_del_Lenguaje_SQL.pdf

http://sql.11sql.com/

http://www.slideshare.net/esand0/manual-completo-de-sql

http://www.desarrolloweb.com/manuales/9/

http://office.microsoft.com/es-es/access-help/importar-o-vincular-datos-de-sql-server-
HA010200494.aspx

http://office.microsoft.com/es-hn/access-help/importar-o-vincular-datos-de-access-a-sql-server-
HA010341762.aspx

http://office.microsoft.com/es-es/access-help/maneras-de-trabajar-con-los-datos-de-sql-server-en-
access-HA001034599.aspx

http://www.youtube.com/watch?v=Ptr_JXPKXIs

http://www.forosdelweb.com/f21/conectar-sql-con-access-482436/

http://www.lawebdelprogramador.com/foros/SQL_Server/1387254-
VINCULAR_TABLAS_DE_ACCESS_EN_SQL_SERVER.html

http://www.lawebdelprogramador.com/foros/Visual_Basic_para_Aplicaciones/1319924-
Conectar_tabla_vinculada_Access_-%3E_SQL_por_codigo.html

http://blogs.technet.com/b/office_sp/archive/2011/03/21/art-237-culos-de-office-com-sobre-el-uso-
de-access-con-sql-server.aspx

http://www.youtube.com/watch?v=IzhV1sXlczE

7. CONTROL DEL DOCUMENTO

Nombre Cargo Dependencia Fecha

Centro de
Autor
Yamelys Salcedo Instructora Diseño y Junio de 2017
(es)
Metrología.
SERVICIO NACIONAL DE APRENDIZAJE SENA
Procedimiento de Desarrollo Curricular
GUÍA DE APRENDIZAJE

8. CONTROL DE CAMBIOS (diligenciar únicamente si realiza ajustes a la guía)

Nombre Cargo Dependencia Fecha Razón del


Cambio

Autor
(es)

S-ar putea să vă placă și