Vous êtes sur la page 1sur 25

MANUAL DE MSSQSERVER 2008 1. Implementar la siguiente base de datos, coloque de nombre ExamenBDII.

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

2. Insertar los siguientes datos


--INSERTAR DATOS EN LA TABLA Clientes insert into Clientes values(200,'Rosalia','Perez','211287','ros@yahoo.es','Estudiante',' UPN'); insert into Clientes values(201,'Andrea','Verde','254879','andreita@hotmail.com','Estudi ante','UNT'); insert into Clientes values(202,'Yajaira','Gomez','789547','yg@hotmail.es','Estudiante', 'ISE'); insert into Clientes values(203,'Perla','Areteaga','458796','perlita@hotmail.com','Enfer mea','ClinicaInteramericana'); insert into Clientes values(204,'Katy','Barros','857968','katy@hotmail.es','Estudiante', 'UPT'); insert into Clientes values(205,'Maria','Vera','8964512','marilu@gmail.com','Estudiante' ,'UNT'); insert into Clientes values(206,'Elizah','Merino','789654','eli@htmail.es','Estudiante', 'UPAO'); insert into Clientes values(207,'Junior','Mendoza','785964','junior@gmail.com','Estudian te','UCV'); insert into Clientes values(208,'Aldo','Torres','548796','modacasual@hotmail.com','Fisic oculturista','VisageSpa'); insert into Clientes values(209,'Alberto','saldaa','5486957','albert_14@hotmail.com','P eriodista','Industriaa'); insert into Clientes values(210,'Isaias','Cerna','548967','isaias_14@yahoo.es','Cadete', 'Policia Nacional'); insert into Clientes values(211,'Roberto','Castillo','789546','Rober_17@hotmail.es','Tec nico','Plaza vea'); --INSERTAR DATOS EN LA TABLA UbicacionCliente insert into UbicacionCliente values(200,'psj los cedros 789','Huanchaco','Trujillo'); insert into UbicacionCliente values(201,'Calle Salvador lara','Trujillo','Trujillo'); insert into UbicacionCliente values(202,'Av. America 1558','La noria','Trujillo'); insert into UbicacionCliente values(203,'Av. La Marina 1254','moche','Trujillo'); insert into UbicacionCliente values(204,'Calle mariano melgar 958','Florencia de mora','Trujillo');

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

insert into UbicacionCliente values(205,'Prolongacion union 1456','El porvenir','Trujillo'); insert into UbicacionCliente values(206,'Psj. san luis 1458','salaverry','Trujillo'); insert into UbicacionCliente values(207,'Psj. Santa Lucia 254','Moche','Trujillo'); insert into UbicacionCliente values(208,'Av. Gonzales prada 1245','Bolivar','Chepen'); insert into UbicacionCliente values(209,'calle fujimori 1457','guadalupe','Guadalupe'); insert into UbicacionCliente values(210,'las quintanas 458','Buenos Aires','Trujillo'); --INSERTAR DATOS EN LA TABLA Idiomas_Ofertados insert insert insert insert insert insert insert insert into into into into into into into into Idiomas_Ofertados Idiomas_Ofertados Idiomas_Ofertados Idiomas_Ofertados Idiomas_Ofertados Idiomas_Ofertados Idiomas_Ofertados Idiomas_Ofertados values(1,'Frances'); values(2,'Ingles Britanico'); values(3,'aymara'); values(4,'Chino mandarin'); values(5,'Portugues'); values(6,'Italiano'); values(7,'Aleman'); values(8,'quechua');

--INSERTAR DATOS EN LA TABLA Horario_Cursos insert into Horario_Cursos values(1,'9:00-11:00','11:0013:00','18:00-20:00'); insert into Horario_Cursos values(2,'9:00-11:00','11:0013:00','18:00-20:00'); insert into Horario_Cursos values(3,'7:00-9:00','15:0017:00','19:00-21:00'); insert into Horario_Cursos values(4,'7:00-9:00','15:0017:00','19:00-21:00'); insert into Horario_Cursos values(5,'7:00-9:00','15:0017:00','19:00-21:00'); insert into Horario_Cursos values(6,'9:00-11:00','11:0013:00','18:00-20:00'); insert into Horario_Cursos values(7,'7:00-9:00','15:0017:00','19:00-21:00'); insert into Horario_Cursos values(8,'9:00-11:00','11:0013:00','18:00-20:00'); --INSERTAR DATOS EN LA TABLA Medio_Comunicacion insert insert insert insert insert insert insert insert insert insert insert insert into into into into into into into into into into into into Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion Medio_Comunicacion values(1,200,'Revista'); values(2,201,'TV'); values(3,202,'RADIO'); values(4,203,'pERIODICO'); values(5,204,'TV'); values(6,205,'Radio'); values(7,206,'TV'); values(8,207,'RADIO'); values(9,208,'PERIODICO'); values(10,209,'PERIODICO'); values(11,210,'PERIODICO'); values(12,211,'TV');

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

--INSERTAR DATOS EN LA TABLA Interes_Cliente insert insert insert insert insert insert insert insert insert insert insert insert into into into into into into into into into into into into Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente Interes_Cliente values(201,8,'19:00-21:00'); values(202,5,'9:00-11:00'); values(203,4,'15:00-17:00'); values(204,2,'18:00-20:00'); values(205,3,'11:00-13:00'); values(206,6,'19:00-21:00'); values(207,5,'18:00-20:00'); values(208,1,'9:00-11:00'); values(209,8,'18:00-20:00'); values(210,6,'11:00-13:00'); values(211,7,'19:00-21:00'); values(212,1,'19:00-21:00');

3. Realizar las siguientes consultas: 3.1. Listar los interesados por ciudades, distritos 3.2. Listar los interesados por idioma 3.3. Reportar un conteo o total de interesados por idiomas (cursos) 3.4. Reportar un conteo o total de interesados por medios de comunicacin 3.5. Listar instituciones a las que pertenecen los interesados 3.6. Listar los horarios(disponibilidad de los clientes) 3.7. Listar los clientes que empiezan sus apellidos con la letra p 3.8. Listar las ubicaciones de los clientes que pertenecen a los distritos de la esperanza, los granados y el porvenir 3.9. Listar el 75% de clientes ordenados por telfono del cliente 3.10. Listar el total de clientes

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

1. USO DE JOIN (JUNTURA NATURAL DE TABLAS) 1.1. Listar los idiomas y sus respectivos horarios.
use ExamenBDII select I.idIdioma,I.nomIdioma , H.manana, H.tarde ,H.noche from dbo.Idiomas_Ofertados I,dbo.Horario_Cursos H where I.idIdioma=H.idIdioma

1.2.

Listar los interesados por ciudades, distritos


select C.nomCliente as Nombre_cliente,C.apeCliente as Apellido_cliente, C.telfCliente as Telefono, C.email, C.OcupacionCliente as Ocupacion,U.distrito as Distrito from Clientes as C inner join UbicacionCliente as U on(C.idCliente=U.idCliente) order by U.Distrito asc;

1.3.

Listar los interesados por idioma


select C.nomCliente as Nombre_cliente, C.apeCliente as Apellidos_cliente,I.nomIdioma as Idioma, C.email as Email, C.OcupacionCliente as Ocupacion from Clientes as C inner join Interes_Cliente as E on(C.idCliente=E.idCliente) inner join Idiomas_Ofertados as I on(E.idIdioma=I.idIdioma) order by I.nomIdioma asc

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

1.4.

Reportar un conteo o total de interesados por idiomas (cursos)


select I.nomIdioma as Idioma,count(*) as Numero_Interesados from Clientes as C inner join Interes_Cliente as E on(C.idCliente=E.idCliente) inner join Idiomas_Ofertados as I on(E.idIdioma=I.idIdioma) group by I.nomIdioma order by count(*) desc;

1.5.

Reportar un conteo o total de interesados por medios de comunicacin


select tipoComunicacion as Comunicacion,count(*) as Numero_Interesados from Medio_Comunicacion group by tipoComunicacion;

1.6.

Listar instituciones a las que pertenecen los interesados


select nomCliente as Nombre_cliente, apeCliente as Apellidos_cliente,LaboraCliente as Institucion_cliente from Clientes order by LaboraCliente;

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

1.7.

Listar los horarios(disponibilidad de los clientes)


select C.nomCliente as Nombre_cliente, C.apeCliente as Apellidos_cliente,E.horaInteres as Disponibilidad_cliente from Clientes as C inner join Interes_Cliente as E on(C.idCliente=E.idCliente) order by E.horaInteres;

2. FUNCIONES EN MSSQLSERVER 2008-2005 2.1. LEFT (IZQUIERDA) Permite recortar un conjunto de caracteres, desde la izquierda hacia la derecha. left(cadena,longitud) 2.1.1. Vamos a colocar el nombre de los idiomas, que empiecen con una letra mayscula y las dems en minscula.
SELECT * FROM dbo.Idiomas_Ofertados

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

2.1.2.

Viendo el escenario anterior, ahora usando la funcin left vamos a obtener el primer carcter, luego lo convertimos en mayscula, seguidamente obtenemos el resto de la cadena inicial y finalmente lo concatenamos y tenemos lo deseado. Paso 1. Obtenemos el Primer carcter
SELECT idIdioma, left(nomIdioma,1)from dbo.Idiomas_Ofertados

Paso 2: Convertimos en mayuscula SELECT idIdioma, upper (left(nomIdioma,1))from dbo.Idiomas_Ofertados

Paso 3: Obtenemos la subcadena de nombre del idioma. SELECT idIdioma, lower (substring(nomIdioma,2,len(nomIdioma)-1)) from dbo.Idiomas_Ofertados

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Paso 4:Concatenamos las dos cadenas simplemente en MSSERVER, se usa el signo +.

de

caracteres,

select idIdioma, upper (left(nomIdioma,1))+ lower (substring(nomIdioma,2,len(nomIdioma)-1)) as Idioma from dbo.Idiomas_Ofertados

2.2.

UPPER Permite cambiar una cadena de caracteres en mayscula.


upper(cadena)

2.3.

LOWER Permite cambiar una cadena de caracteres en minscula. lower(cadena) SUBSTRING Permite obtener una subcadena, dada la cadena original, posicin desde donde empezara la subcadena y el tamao de caracteres a mostrar. Substring (cadena, inicio, longitud) + Permite concatenar cadenas. Cadena1+cadena2 LEN Obtiene el tamao de una cadena de caracteres. len (cadena)

2.4.

2.5.

2.6.

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

3. REPORTES DE DATOS USANDO FUNCIONES 3.1. Colocar los centros de trabajo de los clientes en mayscula y colocar los apellidos de los clientes la primera letra con mayscula.
select * from Clientes

3.2.

Solucin: primero colocamos en mayscula primera letra del apellido y luego convertimos a mayscula todos los datos del campo LaboraCliente.

select idCliente,nomCliente, upper (left(apeCliente,1))+ lower (substring(apeCliente,2,len(apeCliente)-1)) as apeCliente, Ocupacioncliente, upper (LaboraCliente) as LaboraCliente from dbo.Clientes

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

3.3.

Concatenar el nombre del cliente con el apellido, cada campo debe empezar con mayscula y el centro de trabajo con su ocupacin, el centro de trabajo debe estar todo en mayscula.

select idCliente,nomCliente+' '+ upper (left(apeCliente,1))+ lower (substring(apeCliente,2,len(apeCliente)-1)) as DatosCliente, Ocupacioncliente+' '+ upper (LaboraCliente) as Ocupacion_CentroLaboral from dbo.Clientes

3.4.

Actualizar los datos de los clientes, es decir sus apellidos deben empezar por mayscula y su centro de trabajo debera estar en maysculas.
select * from Clientes;

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

3.5.

Primero adecuamos el apellido y luego el centro de trabajo Paso1: Primero actualizamos adecuadamente el apellido y el centro de trabajo.
update Clientes set apeCliente =upper (left(apeCliente,1))+ lower (substring(apeCliente,2,len(apeCliente)-1)), LaboraCliente=upper (LaboraCliente) Nos debe salir el siguiente mensaje. (13 filas afectadas)

Paso2: Reportamos los datos de la tabla Clientes y debemos observar los cambios realizados.
select * from Clientes;

4. CREACIN DE TABLAS CON DATOS CALCULADOS


create table PagoDocentes ( idPagoDocente int primary key, preHora decimal (9,2), cantHoras int not null, pagoHTrab as preHora*cantHoras ) insert into PagoDocentes (idPagoDocente,preHora,cantHoras) values(2,10,10) insert into PagoDocentes (idPagoDocente,preHora,cantHoras) values(3,11,10) insert into PagoDocentes (idPagoDocente,preHora,cantHoras) values(4,12,8)

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

select * from PagoDocentes

5. Insertando datos devueltos en una consultas, en una tabla.


create table PagoDocentesCurso ( idPagoDocente int primary key, nomDocente varchar(45), nomIdioma varchar (20), preHora decimal (9,2), cantHoras int not null, pagoHTrab as preHora*cantHoras )

insert into PagoDocentesCurso (idPagoDocente,preHora,CantHoras) select idPagoDocente,preHora,CantHoras from PagoDocentes select idPagoDocente, preHora,pagoHTrab from PagoDocentesCurso

6. Usando agrupamientos GROUP BY Listar centro laboral y cantidad de clientes de ese centro laboral. Paso 1: Seleccionamos los centros laborales de todos los clientes.
select LaboraCliente from dbo.Clientes

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Paso 2: Como observamos en el resultado anterior existen centros de trabajos repetidos vamos a agruparlo.
select LaboraCliente from dbo.Clientes group by LaboraCliente

Paso 3: Ahora contamos los empleados por centro laboral.


select LaboraCliente, count(*) as NumC_CT from dbo.Clientes group by LaboraCliente ORDER BY NumC_CT desc

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

7. CREACIN DE VISTAS EN MSSQLSERVER 7.1. Listar los clientes interesados en un determinado idioma y en un determinado horario. 7.1.1. Primero creamos la vista, con la consulta que nos reporta todo lo pedido.
create view v_RepCliente_Idioma_HI as select Inte.idCliente,C.nomCliente,I.nomIdioma, Inte.horaInteres from dbo.Interes_Cliente as Inte inner join dbo.Idiomas_Ofertados I on (I.idIdioma=Inte.idIdioma) inner join dbo.Clientes as C on (C.idCliente=Inte.idCliente)

7.1.2.

Guardamos la vista, seleccionando el cdigo anterior y presionando F5 o simplemente hacemos clic en ejecutar de MSSQLServer 2008. Con ello hemos logrado crear nuestra vista y lo podemos utilizar en cualquier momento. Ejecutamos la vista para ver el resultado que esta produce.
select * from v_RepCliente_Idioma_HI

7.1.3.

7.2.

Para eliminar una vista simplemente hacemos lo siguiente.


drop view v_RepCliente_Idioma_HI

7.3.

Para modificar una vista simplemente hacemos lo siguiente y agregamos ms clausulas o campos que se desean agregar o modificar.
alter view v_RepCliente_Idioma_HI

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

7.4.

Crear una vista que permitir reportar todos los clientes que son Estudiantes. 7.4.1. Creamos la vista
create view v_Clientes_Estudiantes as select idCliente, nomCliente,apeCliente, OcupacionCliente,LaboraCliente from Clientes where OcupacionCliente= 'Estudiante'

7.4.2.

Ejecutamos la vista y observamos el resultado que desea la consulta.

select * from dbo.v_Clientes_Estudiantes

7.5.

Insertamos datos a la tabla clientes, usando la vista creada anteriormente, pero debemos de tener en cuenta que la restriccin establecida indica que solo va admitir actualizar la tabla clientes siempre y cuando la ocupacin del cliente sea igual a estudiante. Para ello tenemos que modificar la vista creada anteriormente y colocar la restriccin, caso contrario no podr almacenar en la vista los clientes que no cumplan la condicin. Paso 1: Modificamos la vista anterior.
ALTER view v_Clientes_Estudiantes as select idCliente, nomCliente,apeCliente, OcupacionCliente,LaboraCliente from Clientes where OcupacionCliente= 'Estudiante' with check option

Paso 2: ahora insertamos los datos Nota: la vista es un puente para llegar a la base de datos y la vista creada.
insert into v_Clientes_Estudiantes (idCliente,nomCliente,apeCliente, OcupacionCliente,LaboraCliente) values (213,'Hobby','Saavedra','Estudiante','UNT')

Paso 3: Seleccionamos algunos parmetros de la tabla clientes.


select idCliente,nomCliente,apeCliente, OcupacionCliente,LaboraCliente from dbo.Clientes

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Paso 4: Ahora verificamos la vista creada


select * from dbo.v_Clientes_Estudiantes

8. FUNCIONES DEFINIDAS POR EL USUARIO 8.1. Tipos de funciones 8.1.1. Funciones Escalares Una funcin escalar retorna un nico valor, cuando se le llama. Ejercicio 1: Crear una funcin que permita calcular el sueldo de un docente, dado su cantidad de horas y el precio por hora. Paso 1: Creamos la funcin y declaramos las variables necesarias.
create function pagoTotalDocentes(@cantidad int , @preUnitario decimal(9,2)) Returns decimal(9,2) as Begin Declare @pagoDocente decimal(9,2) set @pagoDocente=@cantidad*@preUnitario

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Return (@pagoDocente) End

Paso 2: Llamamos a la funcin y le mandamos los parmetros necesarios.


select preHora,cantHoras , dbo.pagoTotalDocentes(preHora,cantHoras) as Pago from dbo.PagoDocentes

Ejercicio 2: Crear una funcin que permita ingresar un nmero correspondiente a cada mes (1=Enero, 2=Febrero12=Diciembre), y la funcin debe reportar el mes correspondiente al nmero ingresado. Paso 1: Creamos la funcin y usamos instrucciones condicionales mltiples, select case.
create function f_nombreMes (@numero int ) returns varchar(10) as begin declare @nombre varchar(10) set @nombre= case @numero when '1' then 'Enero' when '2' then 'Febrero' when '3' then 'Marzo' when '4' then 'Abril' when '5' then 'Mayo' when '6' then 'Junio' when '7' then 'Julio' when '8' then 'Agosto' when '9' then 'Setiembre' when '10' then 'Octubre' when '11' then 'Noviembre' when '12' then 'Diciembre' end--case return @nombre end;

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Paso 2: Ahora llamamos a la funcin, f_nombreMes y le mandamos un parmetro en este caso el nmero 3 y debe devolvernos que corresponde al mes de marzo. Nunca olvidar de colocar el usuario que lo ha creado.
select dbo.f_nombreMes(3) as Mes_Consultado

8.1.2. Funciones con valores de tabla de varias instrucciones Ejercicio 1: Creamos una funcin que se le ingrese por parmetro la ocupacin y devuelva los clientes que pertenecen a esa ocupacin. Paso 1: Creamos la funcin ListadoOcupacion
create function ListadoOcupacion(@ocupacion varchar(30)) returns @clientes table ( idcliente int , nomCliente varchar(30) , ocupacionCliente varchar(30),LaboraCliente varchar(30) ) as Begin Insert into @clientes select idcliente,nomCliente, ocupacionCliente,LaboraCliente from clientes where ocupacionCliente=@ocupacion return End

Paso 2: Ejecutamos la funcin y le mandamos el parmetro respectivo.


select * from dbo.ListadoOcupacion('Estudiante')

8.1.3. Funciones con valores de tablas en lnea Las funciones son la evolucin de las vistas, pero la diferencia es que las funciones aceptan parmetros. Paso 1: Creamos la funcin
create function f_Clientes_Estudiantes ( @ocupacionCliente varchar(30)) returns table as return ( select idCliente, nomCliente,apeCliente,

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

OcupacionCliente,LaboraCliente from Clientes where OcupacionCliente= @ocupacionCliente )

Paso 2: Llamamos al funcin, teniendo en cuenta el nombre del usuario que lo ha creado, el nombre de la funcin y el o los parmetros necesarios.
select * from dbo.f_Clientes_Estudiantes('Estudiante')

9. PROCEDIMIENTOS ALMACENADOS EN MSSQLSERVER 2008 Es un conjunto de cdigo puro del lenguaje que utilizamos dentro de las bases de datos como por ejemplo: create table, insert into, Select from. Que se almacena fsicamente en la base de datos y de la misma forma se exportan cuando creamos una copia de seguridad de nuestra base de datos. Como funcionan: Los procedimientos almacenados se basan en una estructura definida por SQL SERVER Iniciamos con: CREATE PROCEDURE nombre_del_procedimiento @variables tipo(longitud) } AS BEGIN Todo el cdigo puro de base de datos END Como probamos: Esto es lo ms fcil de realizar solo necesitamos lo siguiente: Escribimos EXEC nombre_del_procedimiento ' variables', 12,' variables' Nota: Cabe destacar que no necesariamente se deben definir variables en el caso de un Select * From solo pondremos EXEC y nombre del procedimiento 9.1. Tipos de procedimientos almacenados 9.1.1. Procedimientos almacenados sin parmetros (vistas)
Ejemplo 1: El procedimiento almacenado creado anteriormente permite listar los clientes que pertenecen a los distritos de La noria , Trujillo y El Porvenir.

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Paso 1: Creamos el procedimiento almacenado sp_Listar_Clientes_Ocupacion


create procedure sp_Listar_Clientes_Ocupacion as begin select UC.idCliente, C.nomcliente, UC.distrito,UC.provincia from Clientes as C inner join UbicacionCliente UC on (C.idCliente=UC.idCliente) where UC.distrito in ('La noria', 'Trujillo', 'El Porvenir') order by UC.distrito end

Paso 2: Ejecutamos el procedimiento almacenado.


exec sp_Listar_Clientes_Ocupacion

Ejemplo 2: Crear un procedimiento almacenado, el cual permita reportar a todos los clientes, que estan interesados en algun idioma y en un determinado horario. Paso 1: Creamos el procedimiento almacenado create procedure sp_Listar_Cliente_I_IC as begin select C.idCliente,C.nomCliente , I.nomIdioma , IC.horaInteres from dbo.Interes_Cliente as IC inner join dbo.Clientes as C on (IC.idCliente=C.idCliente) inner join dbo.Idiomas_Ofertados I on (I.idIdioma=IC.idIdioma) end Paso 2: Ejecutamos el procedimiento almacenado. exec sp_Listar_Cliente_I_IC

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

9.1.2.

Procedimientos almacenados con parmetros


Ejemplo 1: Crear procedimiento almacenado, que permita reportar los datos de un cliente, cuyos nombres y apellidos son ingresados como parmmetros. Paso 1: Crear el procedimiento almacenado. create procedure sp_Buscar_Cliente @nombre varchar(30), @apellido varchar(30) as begin select * from Clientes where nomcliente = @nombre and apeCliente=@apellido end Paso 2: Ejecutamos el procedimiento almacenado. exec sp_Buscar_Cliente 'Maria','Vera';

9.1.3. Procedimientos almacenados para realizar lo siguiente: 9.1.3.1. Insertar datos Ejemplo 1: Crear un procedimiento almacenado, para insertar datos en una determinada tabla en este caso, tabla Clientes. Paso 1: Creamos el procedimiento almacenado.
create procedure sp_Insertar_Clientes @idCliente int , @nomCliente varchar(30), @apeCliente varchar(30), @telfCliente varchar(12), @email varchar(30), @OcupacionCliente varchar(30), @LaboraCliente varchar(30)as Begin insert into Clientes values (@idCliente,@nomCliente, @apeCliente,@telfCliente,@email, @OcupacionCliente,@LaboraCliente) End

Paso 2: Ejecutamos el procedimiento almacenado.


exec sp_Insertar_Clientes '214','Orlando','Salazar','293939','jo@gmail.com','D ocente','UPN'

Paso 3: Reportar todos los clientes, incluido el ultimo.

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

9.1.3.2.

Actualizar datos Ejemplo 1: Crear un procedimiento almacenado, para actualizar los datos en una determinada tabla en este caso, tabla Clientes. La actualizacin se hace por el cdigo del cliente. Paso 1: Creamos el procedimiento almacenado.
create procedure sp_Actualizar_Clientes @idCliente int , @nomCliente varchar(30), @apeCliente varchar(30), @telfCliente varchar(12), @email varchar(30), @OcupacionCliente varchar(30), @LaboraCliente varchar(30) as begin update Clientes set nomCliente=@nomCliente, apeCliente=@apeCliente, telfCliente=@telfCliente, email=@email, OcupacionCliente=@OcupacionCliente, LaboraCliente=@LaboraCliente where idCliente=@idCliente end Paso 2: Revisamos el contenido de la tabla clientes. select * from Clientes

Paso 3: vamos a actualizar los datos del cliente con cdigo igual a 213. Para ello ejecutamos el procedimiento almacenado.
exec sp_Actualizar_Clientes '213','Hobby','Saavedra','83833','saavedravh@gmail.com','Docente',' UNT'

paso 4: Reportamos nuevamente los clientes y observamos que se actualizaron los datos correctamente.
select * from Clientes where idCliente=213

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

9.1.3.3.

Buscar un cliente, dado su cdigo del cliente. Ejemplo 1: Crear un procedimiento, que permita realizar una bsqueda de un cliente, por un determinado cdigo. Paso 1: Crear el procedimiento almacenado.
create procedure sp_Buscar_Clientes @idCliente int as begin select * from Clientes where idCliente=@idCliente end

Paso 2: Ejecutar el procedimiento almacenado, y buscar los datos del cliente, que tiene codigo igual a 200.
exec sp_Buscar_Clientes '200'

9.1.3.4.

Eliminar datos Ejemplo 1: Crear un procedimiento almacenado, que permita eliminar los datos de un determinado cliente, dado su cdigo. Paso 1: Crear el procedimiento almacenado.
create procedure sp_Eliminar_Clientes @idCliente int as begin delete from Clientes where idCliente=@idCliente end

Paso 2: ejecutar el procedimiento almacenado, ingresando como parametro el codigo del cliente a eliminar en este caso el 203.
exec sp_Eliminar_Clientes '203'

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

10. TRIGGERS Un trigger es un bloque PL/SQL asociado a una tabla, que se ejecuta como consecuencia de una determinada instruccin SQL (una operacin DML: INSERT, UPDATE o DELETE) sobre dicha tabla. Ejemplo 1: Crear un trigger, que permita insertar datos en la tabla Horario de Cursos, cuando se ingrese un nuevo idioma. Paso 1: Creamos en primer lugar el Trigger.
create trigger Idioma_Horararios on Idiomas_Ofertados for insert as begin insert into Horario_Cursos (idIdioma,manana,tarde,noche) select idIdioma, '9:00-11:00','15:00-17:00','19:00-21:00' from inserted end

Paso 2: Insertamos los datos, para ver si se ejecuta correctamente el Trigger creado.
insert into Idiomas_Ofertados select 9,'Ingles Estadounidense'

Paso 3: Observamos el contenido de cada tabla involucrada.


select * from dbo.Horario_Cursos select * from dbo.Idiomas_Ofertados

Instructor: Hobby Saavedra Rosas

Base de datos II: MSSQLSERVER 2008

Vous aimerez peut-être aussi