Sunteți pe pagina 1din 7

RECUPERACION DE DATOS

--Todos los nombres que comiencen con BR


SELECT CompanyName from Customers
WHERE CompanyName like 'CO%'
--Todos los nombres que comiencen con Br
SELECT CompanyName from Customers
WHERE CompanyName like 'Bo%'
--Todos los nombres que terminen con las letras en
SELECT CompanyName from Customers
WHERE CompanyName like '%en'
--Todos los nomber que contengan letras en
SELECT CompanyName from Customers
WHERE CompanyName like '%en%'
TABLA CON IDENTITY
create table producto
(
cod_producto int identity (1,1) , -- para que baye de uno en uno
cod_proveedor int ,
stock int ,
nombre varchar (60),
constraint PK_producto primary key (cod_producto),
constraint FK_producto_proveedor foreign key ( cod_proveedor) references proveedor
(cod_proveedor)
)
select *from producto
drop table producto -- elimina toda la tabla
CREAR REGLAS
create rule r_cedulas
AS @value like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][-][0-9]'
GO
CREATE TABLE evaluacion
(
cod_est d_codigos,
cod_mat d_codigos,
aporte1 d_notas,
aporte2 d_notas,
total d_notas,
asistencia d_asistencias,
equivalencia
d_equivalencias,
cod_doc d_codigos,
CONSTRAINT pk_evaluacion
PRIMARY KEY (cod_est, cod_mat),
CONSTRAINT fk_evaluacion_estudiante
FOREIGN KEY (cod_est) REFERENCES estudiante(cod_est),
CONSTRAINT fk_evaluacion_materia
FOREIGN KEY (cod_mat) REFERENCES materia(cod_mat),
CONSTRAINT fk_evaluacion_docente
FOREIGN KEY (cod_doc) REFERENCES docente(cod_doc)
)
select * from estudiante

Insert Into
estudiante(cod_est,cedula,nombres,apellido,fecha_nac,fecha_ing,telefono,sexo,direccion)
Values(1,'060493608-8','Karla','Gomez','1994-10-05','2001-1005','0992595540','F','Rocafuerte y Villaruel')
PROCEDIMIENTOS ALMACENADOS

-2.
Seleccionar los estudiantes de sexo Masculino ordenado por nombre
Select * from estudiante where sexo in ('M')
Order By nombres
--create procedure pa_mostrar_estudiantes_sexo
@sexo varchar(1)
as
select * from estudiante
where estudiante.sexo=@sexo
exec pa_mostrar_estudiantes_sexo 'M'

FUNCIONES

VISTAS
/* 14. Seleccionar el promedio de notas de los estudiantes de sexo femenino */
Create view VW_PromedioEstSexoF
as
select AVG(ev.total)as PromedioEst from evaluacion ev inner join estudiante e on
ev.cod_est=e.cod_est where e.sexo like 'F'
select *from VW_PromedioEstSexoF

-5. Uno o varios objetos que permitan obtener la sucursal donde ms


peticiones se haya realizado
CREATE PROCEDURE SUCURSALMASPETICIONES
AS
SELECT TOP 1 S.codsuc, S.nombresec, COUNT(P.numpres) AS 'NUMERO DE
PETICIONES'
FROM SUCURSAL S INNER JOIN PRESTAMO PR
ON S.codsuc = PR.codsuc INNER JOIN PETICION P
ON P.numpres = PR.numpres
GROUP BY S.codsuc, S.nombresec
ORDER BY [NUMERO DE PETICIONES] DESC
EXEC SUCURSALMASPETICIONES
--6. Uno o varios objetos que permita dado el cdigo de la sucursal,
obtener el nmero de prstamos que estn con saldo 0.
CREATE PROCEDURE SALDOCERO (@codsuc INT)
AS
SELECT S.codsuc, S.nombresec, PR.numpres, PR.saldoprestamo
FROM SUCURSAL S
INNER JOIN PRESTAMO PR ON S.codsuc = PR.codsuc
WHERE PR.saldoprestamo <=0 AND S.codsuc = @codsuc
EXEC SALDOCERO 1
select *from SUCURSAL
-- 7. Uno o varios objetos que permitan obtener los clientes
-- que tengan el promedio del total de prstamos mayor o igual al
promedio total de todos los prstamos
CREATE FUNCTION PROMEDIO_PRESTAMO (@cedula VARCHAR(10))
returns float
as
begin
return (SELECT AVG(PR.totalprestamo)
FROM CLIENTE C INNER JOIN PETICION P
ON C.cedula = P.cedula INNER JOIN PRESTAMO PR
ON PR.numpres = P.numpres
WHERE C.cedula = @cedula)
end
select dbo.PROMEDIO_PRESTAMO('060493301')
create function PROMEDIOPRESTAMO()
returns float
as
begin
return ( select AVG(P.totalprestamo) from PRESTAMO P)
end
CREATE PROCEDURE CLIENTEPPRES_M
as

select C.cedula, C.primernombre, C.primerapellido,


(dbo.PROMEDIO_PRESTAMO(C.cedula))
AS total_prestamo, (dbo.PROMEDIOPRESTAMO()) AS Promedio
FROM CLIENTE C inner join PETICION P
on P.CEDULA = C.CEDULA inner join PRESTAMO PR
on PR.numpres = P.numpres
WHERE (dbo.PROMEDIO_PRESTAMO(C.cedula)) >= (dbo.PROMEDIOPRESTAMO())
exec CLIENTEPPRESTAMO_M
SELECT *FROM CLIENTE
/*Uno o varios objetos para determinar el tiempo promedio (horas) que las
personas tienen por cada reaccin existente.*/
Create Proc P_TiempoPromedio
as
select r.codigoreaccion,r.descripcion ,avg(horasduracion)as HorasPromedio
from Reaccion r inner join Aplicacion_Reaccion ar on
r.codigoreaccion=ar.codreaccion
group By r.codigoreaccion,r.descripcion
Exec P_TiempoPromedio
/*Uno o varios objetos para seleccionar los efectos que han tenido las
vacunas correspondientes a un grupo sanguneo cuando se le ha aplicado la
vacuna por una enfermedad especfica.*/
create procedure P_EfectosVacuna
@codvacuna int ,
@gruposangineo int
as
select r.descripcion from Reaccion r inner join Aplicacion_Reaccion ar on
r.codigoreaccion=ar.codreaccion inner join AplicacionVacuna av on
av.cedula=ar.cedula and av.codvacuna=ar.codvacuna inner join Persona p
on
p.cedula=av.cedula
where av.codvacuna=@codvacuna and p.codgruposang=@gruposangineo
exec P_EfectosVacuna 1, 2
CREATE TABLE estudiante
(
cod_estudiante int,
cedula varchar(10),
nombre varchar(60),
fecha_nac date,
sexo varchar (1),
constraint pk_estudiante primary key(cod_estudiante),
constraint uq_cedula unique(cedula),
constraint ck_cedula check (cedula like '[0-9][0-9][0-9][0-9][0-9][0-9]
[0-9][0-9][0-9][0-9]')
);
Insert Into estudiante(cod_estudiante,cedula,nombre,fecha_nac,sexo)
Values (1,'0603438605','Carlos','1994/12/18','M')
Insert Into estudiante(cod_estudiante,cedula,nombre,fecha_nac,sexo)
Values (1,'0603438605','Mayra','1994/13/18','f')

select * from estudiante


drop table estudiante
CREATE TABLE evaluacion(
cod_materia int,
cod_estudiante int,
PRIMARY KEY (cod_estudiante,cod_materia),
FOREIGN KEY (cod_materia)REFERENCES materia(cod_materia),
FOREIGN KEY (cod_estudiante) References estudiante(cod_estudiante)
);
insert into evaluacion values(1,1);
insert into evaluacion values(2,2);
insert into evaluacion values(3,3);
select *from evaluacion
drop table evaluacion
CREATE TABLE materia
(
cod_periodo int,
cod_estudiante int,
cod_materia int,
acumulado numeric,
principal numeric,
suspencion numeric,
total numeric (4,2) ,
asistencia int,
constraint pk_cod_materia primary key (cod_materia),
constraint ck_total check (total >=1),
);
insert into
materia(cod_periodo,cod_materia,codmat,total,,asistencia)
values (1,'programacion',10,09,7.5,9,70)

Select * From materia


drop table materia

--Crear uno o varios objetos para obtener los estudiantes aprobados, dado
el
--cdigo de la materia y cdigo del perodo acadmico.
create procedure pa_estudiantes_aprobados
@codmateria varchar(5)
@codperiodo varchar(5)
as
select codest, Cedula,(Nombre+ ''+Apellido) as nombrecompleto,
total from Estudiante inner join Periodo pe on e.codest = pe.codest

inner join MateriaAsignada m on pe.codperiodo=m.codperiodo


and pe.codest=m.codest
where m.total>=7
and pe.codmateria=@codmateria and pe.codmateria=@codperiodo
--Crear uno o varios objetos para obtener el nivel que ms aprobados
--tuvo en un perodo determinado
create function fn_aprobados_periodo (@codperiodo)
returns int as begin
return
select codnivel,nombrenivel,,count (codest) as numAprobados
from Nivel n inner join Materia m on n.codnivel=m.codnivel
inner join MateriaAsignada ma on m.codmateria=ma.codmateria
where matotal>=7
group by n.codnivel,nombrenivel
end
--Crear uno o varios objetos para mostrar, dado el cdigo del perodo
acadmico,
--la materia,docente, cantidad de aprobados y cantidad de reprobados,
ordenados por nivel.
create procedure ps_resumenperiodo
@codperiodo varchar(5)
as
select m.nombremateria,db_accessadmin.nombrecompleto,
dbo.fn_obteneraprobados(@codperido,m.codmateria)as numaprob,
dbo_fn_obtenerreprovados(@codperido,m.codmateria) as numreprob
from nivel n inner join Materia m on n.codnivel=m.codnevel inner join
peridomateria pm
on m.codmateria =pm_codmateria inner join Docente d on
pm.codestudiante=d.codestudisnte
where pm.codperiodo=@codperiodo
-----------create function fn_obteneraprobado(@codperio varchar(5),@codmateria
varchar (5))
returns int
as
begin
return
select COUNT (codest) from materiaaisgnada
where codperido=@codperiodo and codpriod=@codmateria and total >=7
end
-----------------create function fn_obteneraprobado(@codperio varchar(5),@codmateria
varchar (5))
returns int
as
begin
return

select COUNT (codest) from materiaaisgnada


where codperido=@codperiodo and codpriod=@codmateria and total <=7
end
--Crear uno o varios objetos para determinar el porcentaje de estudiantes
que
--aprobaron todas las materias asignadas
create function fn_por_est_aptobados()
returns numeric (5,2)
as
return(select (dbo.fn_nestumac()*100/dbo.fn-numestu())
---------create function fn_dbo.fn-numestu()
returns int
as
begin
return
(
select count (codestudiante) from estudisnte
)
end
------------create function dbo.fn_nestumac()
returns int
as
begin
return
(
select count (*) from estudiante
where dbo.fn_mataprofporestu(codestudiante)=dbo.fn_nummatestudiante(cod
estudinate)
)end
------------------------------create function fn_num_mat_aprof(@codestudiante int )
returns int
as
begin
return
(select count (codmateria) from materiaasignada)
where codestudiante=@codestudiante
end
--------------------------create function fn_num_mat_aprof(@codestudiante int )
returns int
as
begin
return
(select count (codmateria) from materiaasignada)
where codestudiante=@codestudiante and toatal <=7
end

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