You are on page 1of 43

LENGUAJE DE MANIPULACIÓN DE DATOS

Operadores. es un símbolo que especifica una acción en una o mas expresiones.

CONDICIONES QUE SE UTILIZAN PARA CONSULTAR EN TODAS LAS TABLAS


OPERADORES LÓGICOS
ALL. Se utiliza con el SELECT, con la diferencia que puede llamar o hacer consultas
con todas las tablas.

AND. TRUE si ambas expresiones booleanas son TRUE.

1
ANY. (Cualquiera) miembro del conjunto de operaciones TRUE

BETWEEN. Devuelve todos los datos que están dentro de un intervalo

2
EXISTS. TRUE si una subconsulta contiene cualquiera de las filas.

IN. TRUE si el operando es igual a uno de la lista de expresiones.

3
LIKE. TRUE si el operando coincide con un patrón.

NOT. Invierte el valor de cualquier otro operador booleano.

4
OR. TRUE si cualquiera de las dos expresiones booleanas es TRUE.

1. DEBER.
 En la misma base de datos hacer una consulta, de cada sentencias donde se use cada una


 de los operadores. A mano y copiar el resultado. Para miércoles 06/06/2018 en hoja de
papel ministro
BASE DE DATOS VERDULEROS.
2. Grupos, Productos, Vendedores, Ventas (buscar el diseño de estas tablas)
3. Hacer la suma de la base de datos ventas, (consultar)

5
ACTUALIZACION MASIVA

6
Tarea 13/06/2018
 Realizar un query que permita obtener un reporte de los productos vendidos con el 10%
de su precio normal. Una vez obtenida la información analizar información para los
precios comprendidos en el siguiente rango entre 0$ y 1$

7
USE verduleros
GO
--SELECT * FROM Productos
SELECT NomProducto AS PRODUCTOS, Precio, Precio*0.1 AS DESCUENTO FROM Productos -
- Seleccione el nombre del producto y llamele PRODUCTOS
WHERE Precio BETWEEN 0 AND 2 -- donde el precio este en el rango entre 0 y 1

AS.- Cambia el nombre de un campo.


Taller 2.

Realizar un reporte que permita mostrar en libras los productos vendidos.

USE verduleros
GO
--SELECT * FROM Productos
SELECT [Cod Producto] AS PRODUCTOS, Kilos, Kilos*2.2046 AS LIBRAS FROM ventas

Taller 3

8
Realizar un reporte que permita mostrar el precio de venta al público de cada producto
considerando que el Iva vigente corresponde al 12%.

USE verduleros
GO
--SELECT * FROM Productos
--SELECT NomProducto, Precio, Precio*0.12 + Precio AS IVA12 FROM Productos --
Seleccione el nombre del producto y llamele PRODUCTOS
--WHERE Precio BETWEEN 0 AND 2 -- donde el precio este en el rango entre 0 y 1
SELECT NomProducto, Precio, Precio*1.12 AS IVA12 FROM Productos

9
Taller 4

Realizar un reporte que permita mostrar todos los productos cuyo precio sea inferior a 2$
y su precio de venta al publico IVA, sea inferior a 3$

USE verduleros
GO
--SELECT * FROM Productos
--SELECT NomProducto, Precio, Precio*0.12 + Precio AS IVA12 FROM Productos --
Seleccione el nombre del producto y llamele PRODUCTOS
--WHERE Precio BETWEEN 0 AND 2 -- donde el precio este en el rango entre 0 y 1
SELECT NomProducto, Precio , Precio*1.12 AS IVA12 FROM Productos
WHERE Precio < 2 AND Precio *1.12 < 3

RECUPERACIÓN AVANZADA DE DATOS (14/06/2018)

Obtener un reporte de todas las personas de nacionalidad cubana´

20/06/2018
JOIN / ON
Unión de Tablas
Los JOINs en SQL sirven para combinar filas de dos o más tablas basándose en un campo común
entre ellas, devolviendo por tanto datos de diferentes tablas. Un JOIN se produce cuando dos o
más tablas se juntan en una sentencia SQL

10
USE ESTUDIANTESNT
GO
SELECT
ESTUDIANTE.numeroIdentificacion,ESTUDIANTE.primerNombre,ESTUDIANTE.segundoNombre,
DOCUMENTO.Nombre_documento
FROM ESTUDIANTE JOIN DOCUMENTO
ON ESTUDIANTE.fk_tipoDocumentoId=DOCUMENTO.pk_tipoDocumentoId
WHERE DOCUMENTO.pk_tipoDocumentoId=1

Sintaxis

Dato 1, Dato2, Dato3


SELECT
FROM A.Dato 1,X Dato2,X Dato3

ON A JOIN X
WHERE A_PK_A = X_FK_A

EJERCICIOS

Realizar un query que permita mostrar los Nombres Completos de todos los estudiantes
del Nelson Torres INT que tengan como documentos de identificación sea un pasaporte.

11
USE ESTUDIANTESNT
GO
SELECT DOCUMENTO.Nombre_documento, ESTUDIANTE.numeroIdentificacion,
ESTUDIANTE.primerNombre, ESTUDIANTE.segundoNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.segundoApellido
FROM ESTUDIANTE JOIN DOCUMENTO
ON ESTUDIANTE.fk_tipoDocumentoId = DOCUMENTO.pk_tipoDocumentoId
WHERE DOCUMENTO.pk_tipoDocumentoId = 1 AND ESTUDIANTE.numeroIdentificacion LIKE
'17%'

Ejercicio 2
USE ESTUDIANTESNT
GO
SELECT ESTUDIANTE.numeroIdentificacion, ESTUDIANTE.primerNombre,
ESTUDIANTE.primerApellido, SEXO.sexo, ESTUDIANTE.correoElectronico
FROM ESTUDIANTE JOIN SEXO
ON ESTUDIANTE.fk_tipoDocumentoId = SEXO.pk_sexoId
WHERE Sexo.pk_sexoId <= 3 AND ESTUDIANTE.correoElectronico LIKE '%gmail%'

12
Realizar un Query que permita mostrar el numero de cedula, primer apellido, fecha de
naciemiento de todas las mujeres que se hayan iniciado la carrera en el año 2015,

USE ESTUDIANTESNT
GO
SELECT
ESTUDIANTE.numeroIdentificacion,ESTUDIANTE.primerApellido,ESTUDIANTE.fechaNacimi,
GENERO.genero, ESTUDIANTE.fechaInicioCarrera
FROM ESTUDIANTE JOIN GENERO
ON ESTUDIANTE.fk_tipoDocumentoId = GENERO.pk_generoId
WHERE ESTUDIANTE.fechaInicioCarrera LIKE '%2015%'

25/06/2018
JOIN CON TRES TABLAS

Realizar un reporte que nos permita obtener los datos de todos los estudiantes nombre y
apellido (Sexo Mujer) del INT que tengan como documento de identificación la cedula
de identidad. (Se utilizaran tres tablas con JOIN) (DOCUMENTO, ESTUDIANTE,
SEXO)

13
SINTAXIS

SELECT Tabla1.dato tabla2.dato tabla3.dato


FROM Tabla1 JOIN Tabla2
ON Tabla1.pkdato = Tabla2.fkdato

USE ESTUDIANTESINNT
GO
SELECTESTUDIANTE.primerNombre,ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, SEXO.sexo
FROM (ESTUDIANTE JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTE.fk_sexoId)
JOIN DOCUMENTO
ON DOCUMENTO.pk_tipoDocumentoId = ESTUDIANTE.fk_tipoDocumentoId
WHERE SEXO.pk_sexoId = 2

Ejercicio 2

Realizar un Query que permitan obtener los datos de todos los estudiantes de INT,
SOLTEROS y que su tipo de sangre sea o+.

14
USE ESTUDIANTESINNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ESTADOCIVIL.estadocivil, TIPOSANGRE.tipoSangre
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTE.fk_estadocivilId)
JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = TIPOSANGRE.pk_tipoSangre
WHERE ESTADOCIVIL.pk_estadocivilId = 1 and TIPOSANGRE.pk_tipoSangre = 7

Ejercicio5

Recupere todos los datos de los estudiantes del INT que provienen de colegios fiscales y
que su etnia sea INDIGENA

15
USE ESTUDIANTESINNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ETNIA.etnia, TIPOCOLEGIO.tipocolegio
FROM (ESTUDIANTE JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTE.fk_etniaId)
JOIN TIPOCOLEGIO
ON TIPOCOLEGIO.pk_tipoColegioId = TIPOCOLEGIO.pk_tipoColegioId
WHERE ETNIA.pk_etniaId = 1 and TIPOCOLEGIO.pk_tipoColegioId = 1

Taller 09/07/2018
Realizar un query que permita tener un reporte que contenga, nombre completos y
numero de cedula de todos los estudiantes cuyo estado civil sea soltero y su tipo de sangre
sea 0+ y su fecha de nacimiento sea superior al año 1993

USE ESTUDIANTESINNT
GO
SELECT ESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ESTUDIANTE.fechaNacimiento,
ESTADOCIVIL.estadocivil, TIPOSANGRE.tipoSangre
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTE.fk_estadocivilId)
JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = TIPOSANGRE.pk_tipoSangre
WHERE ESTADOCIVIL.pk_estadocivilId = 1 and TIPOSANGRE.pk_tipoSangre = 7 and
ESTUDIANTE.fechaNacimiento > '1993'

16
Realizar un query que permita tener un reporte que contenga, nombre completos
y numero de cedula de todos los estudiantes cuyo correo electrónico sea de Gmail,
y el numero de celular empiece con 099

USE ESTUDIANTESINNT
GO
SELECTESTUDIANTE.primerNombre, ESTUDIANTE.primerApellido,
ESTUDIANTE.numeroIdentificacion, ESTUDIANTE.correoElectronico,
ESTUDIANTE.numeroCelular
FROM ESTUDIANTE
WHERE ESTUDIANTE.numeroCelular like '099%' and ESTUDIANTE.correoElectronico like
'%gmail%'

17
CONJUNTOS
USE ESTUDIANTESNTBD
GO
SELECT primerNombre,fk_discapacidad
FROM ESTUDIANTE
WHERE fk_tipoDiscapacidad < '7'

18
DEBER 23/07/2018

Contar el número de estudiantes cuyo último digito de cedula sea 0.

USE ESTUDIANTESNTBD
GO
SELECT count (numeroIdentificacion)
FROM ESTUDIANTE
WHERE numeroIdentificacion like '%0'

_____________________________________________________

USE ESTUDIANTESNTBD
GO
SELECT (numeroIdentificacion)
FROM ESTUDIANTE
WHERE numeroIdentificacion like '%0'

19
Contar el número de estudiantes de sexo femenino cuyo correo electrónico sea de Yahoo!

USE ESTUDIANTESNTBD
GO
SELECT count (fk_sexoId) as sexo, count (correoElectronico) as correo
FROM ESTUDIANTE
WHERE fk_sexoId = 2 and correoElectronico like '%yahoo%'

USE ESTUDIANTESNTBD
GO
SELECT fk_sexoId, correoElectronico
FROM ESTUDIANTE
WHERE fk_sexoId = 2 and correoElectronico like '%yahoo%'

20
Sumar todos lo padres de familia cuyo nivel de formación sea superior a universitaria.

USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as Nombre, sum (fk_nivelFormacionPadre) as
NivelFormacionPadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8

_______________________________________________________________
USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as Nombre, count (fk_nivelFormacionPadre) as
NivelFormacionPadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8

__________________________________________________________________
USE ESTUDIANTESNTBD
GO
SELECT primerNombre as Nombre, fk_nivelFormacionPadre as NivelFormacionPadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionPadre = 8

21
4. Sumar todas las madres de familia cuyo nivel de formación sea primaria

USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as Nombre, count (fk_nivelFormacionMadre) as
NivelFormacionMadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3

_____________________________________________
USE ESTUDIANTESNTBD
GO
SELECT count (primerNombre) as NumerodeMAdres, sum (fk_nivelFormacionMadre) as
Sumax3
FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3

_______________________________________________

USE ESTUDIANTESNTBD
GO
SELECT primerNombre as Nombre, fk_nivelFormacionMadre as NivelFormacionMadre
FROM ESTUDIANTE
WHERE fk_nivelFormacionMadre = 3

22
5. Calcular el promedio de los ingresos familiares de los estudiantes de sexo masculino
cuyo tipo de sangre sea A+

USE ESTUDIANTESNTBD
GO
SELECT AVG (ingresoTotalHogar) as IngresosFamiliares
FROM ESTUDIANTE
WHERE fk_sexoId = 1 and fk_tipoSangre = 1

6. Contar el numero de chicas cuya etnia sea Indigena


USE ESTUDIANTESNTBD
GO
SELECT count (fk_sexoId) as NumeroChicas
FROM ESTUDIANTE
WHERE fk_sexoId = 2 and fk_etniaId = 1

23
6. Preparar un reporte que muestre los siguientes datos, nombres completos, numero de
cedula, nivel académico que cursa, sexo, teléfono, paralelo, tipo del colegio al que
pertenece de todos los estudiantes cuyo ingreso familiar sea inferior a 400 dólares, su
estado civil sea soltero, y pertenezcan a un hogar cuyo total de miembros del hogar no
supere a las 5 personas. Al final se debe mostrar el número total de estudiantes incluidos
en el reporte.

USE ESTUDIANTESNTBD
GO
SELECT primerNombre, primerApellido, segundoNombre, segundoApellido,
numeroIdentificacion, nivelacademico, sexo,numeroCelular,
paralelo,fk_tipoColegioId,cantidadMiembrosHogar,ingresoTotalHogar,
fk_estadocivilId
FROM (ESTUDIANTE JOIN NIVELACADEMICO
ON pk_nivelAcademicoQueCursa=fk_nivelAcademicoQueCursa)
JOIN SEXO
ON pk_sexoId=fk_sexoId
JOIN PARALELO
ON pk_paraleloId=fk_paraleloId
JOIN TIPOSANGRE
ON pk_tipoSangre=fk_tipoSangre

WHERE ingresoTotalHogar<=400 AND fk_estadocivilId=1 AND cantidadMiembrosHogar<=5

24
PRUEBA
25/07/2018

USE ESTUDIANTESNTBD
GO
SELECT count (*) as TOTAL --numeroIdentificacion as total primerApellido,
primerNombre, estadocivil,fechaNacimiento, nivelacademico, correoElectronico
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON pk_estadocivilId = fk_estadocivilId
JOIN NIVELACADEMICO
ON pk_nivelAcademicoQueCursa = fk_nivelAcademicoQueCursa)
WHERE fechaNacimiento BETWEEN '1997-01-01' AND '2004-12-12'

25
EXAMEN 30/07/2018

USE ESTUDIANTESNT
GO
SELECT primerNombre, segundoNombre, primerApellido, segundoApellido,
numeroIdentificacion, numeroCelular, correoElectronico, estadocivil, etnia,
ingresoTotalHogar--, cantidadMiembrosHogar, fk_nivelFormacionMadre
FROM (ESTUDIANTE JOIN ESTADOCIVIL
ON pk_estadocivilId = fk_estadocivilId
JOIN ETNIA
ON pk_etniaId = fk_etniaId)
--JOIN NIVELFORMACION
--ON pk_nivelFormacion = fk_nivelFormacionMadre)
WHERE ingresoTotalHogar < '700' and cantidadMiembrosHogar < '5' and
fk_nivelFormacionMadre > '3'

ORDENAMIENTO DE DATOS 13/08/2018


Listar registros en un orden determinado, para ello se debe considerar que:
 El ordenamiento de datos se los hace al final (query)
 Se debe especificar el nombre del campo (atributo) por el cual se desea ordenar de forma
ascendente o descendente.

26
Sintaxis:

ORDER BY Nombre_Campo (Base de Datos)


SELECT datos
FROM Tablas
WHERE Condición Evaluación
ORDER BY Dato (Campo o atributo)

Ejemplo:
USE ESTUDIANTESNT2607018
GO
SELECT primerApellido, primerNombre, fechaNacimiento
FROM ESTUDIANTE
--WHERE fechaNacimiento > '01/01/1990'
ORDER BY fechaNacimiento DESC

27
AGRUPACIÓN DE DATOS

Permite agrupar FILAS según las columnas (con los campos o atributos) que se indiquen como
parámetros se debe considerar que CUANDO SE AGRUPAN SOLO SE PUEDEN
SELECCIONAR LOS CAMPOS AGRUPADOS.

Sintaxis
GROUP BY Parámetro

USE ESTUDIANTESNT2607018
GO
SELECT fk_nivelAcademicoQueCursa, primerApellido
FROM ESTUDIANTE
--WHERE fechaNacimiento > '01/01/1990'
GROUP BY fk_nivelAcademicoQueCursa, primerApellido

Ejemplo 2
USE ESTUDIANTESNT2607018
GO
SELECT SEXO, Sexo, COUNT (Sexo.sexo) AS TOTAL
FROM ESTUDIANTE JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTE. fk_sexoId
GROUP BY SEXO.sexo

28
DEBER

Realizar un query que me permita mostrar etnia, estado civil, nivel académico, con un
total.

Ejercicio:
Realizar un query que permita contar el numero de estudiantes:
Tanto mujeres como hombres, especificando el nivel académico al que pertenece y su
estado civil de los estudiantes cuyo apellido empiece con A

USE ESTUDIANTESNT2607018
GO
SELECT ESTUDIANTE.primerApellido, NIVELACADEMICO.nivelacademico,
ESTADOCIVIL.estadocivil, COUNT (*) AS TOTAL
FROM (ESTUDIANTE JOIN SEXO
ON pk_sexoId = fk_sexoId)
JOIN ESTADOCIVIL
ON pk_estadocivilId = pk_estadocivilId
JOIN NIVELACADEMICO
ON pk_nivelAcademicoQueCursa = fk_nivelAcademicoQueCursa
WHERE primerApellido like 'A%'
GROUP BY SEXO.sexo, NIVELACADEMICO.nivelacademico, primerApellido, estadocivil

29
PROGRAMACION TRANSACKT SQL 20/08/2018

O Implementación de estructuras de programación en SQL

Variables: (Es un lugar donde yo guardo temporalmente un dato) Es una entidad a la que se
asigna un valor y este valor puede cambiar durante el proceso, donde se utiliza la variable,
generalmente en SQL (Lenguaje estructurado de Elementos) se usa dos tipos de variable:

1. Locales.
Son definidas por el usuario. Las variables locales se declaran a través de un nombre y se define
usando la palabra reservada y reciben un valor inicial mediante la instrucción, SELECT o SET.

Siempre los nombres de las variables empiezan con el símbolo de @.

A cada variable local se le debe asignar un tipo de dato. (Definida por el usuario)

Sintaxis:

DECLARE @Nombre_Variable Tipo_Dato

DECLARE @prueba varchar (50)

Asignar un valor a una variable


SET @VARIABLE = VALOR
Ej.
DECLARE @Fecha (Date)
SET @fecha = '01/01/2018'

Mostrar el resultado de un variable


PRINT 'Comentario' + (@VARIABLE)
Ej.

PRINT 'La Fecha inicial e' + (@Fecha)

Sentencias de Control
 IF
 FOR
 WHILE
 CASE

30
2. Globales.

Son suministradas por el sistema y están predefinidas por el sistema, estas son:

 VERSION. Devuelve la versión de SQL con la que esta trabajando.


 SERVERNAME. Devuelve el nombre del servidor.
 LANGUAGE. Devuelve el lenguaje del servidor o del motor
 M AX_CONNECTIONS. Devuelve el número máximo de conexiones permitidas en ese
servidor
 ERROR. Devuelve el ultimo error generado en una transacción
 IDENTITY. Devuelve el ultimo valor de un atributo identity (llaves primarias) mediante
reset

USE ESTUDIANTESNT2607018
GO
--PRINT 'El nombre de esta base de datos es:' + @@SERVERNAME
--PRINT 'El lenguaje de este motor de base de datos es:' + @@LANGUAGE
--PRINT 'La versión de este motor de base de datos es:' + @@VERSION
--PRINT 'El número de conexiones permitidas es:' + STR (@@MAX_CONNECTIONS)
PRINT 'El número de conexiones permitidas es:' + STR (@@IDENTITY)

HERRAMIENTAS PARA EL CONTROL DE FLUIDO


El Lenguaje SQL puede utilizar instrucciones de control de flujo y estas se pueden utilizar con:
Instrucciones Interactivas. Define la ejecución cuando la condición de evolución es verdadera.

SINTAXIS
IF (Condicion_Evaluacion)
BEGIN
--
--
--
END

ELSE
BEGIN
--
--
--
END

 Instrucciones en lotes.
 Instrucciones en procedimientos almacenados.

31
Ejemplo 22/08/2018
Realizar un query que permita verificar si un estudiante se encuentra matriculado, en tal caso se
debe promover a ese estudiante a nivel superior, caso contrario debo removerle al nivel inferior.

USE ESTUDIANTESNT
DECLARE @CEDULA VARCHAR(15)
SET @CEDULA='1723973713'
IF EXISTS (SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,fk
_nivelAcademicoQueCursa --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTE
WHERE numeroIdentificacion=@CEDULA)
BEGIN
SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,fk
_nivelAcademicoQueCursa
FROM ESTUDIANTE
WHERE numeroIdentificacion=@CEDULA
END
ELSE
BEGIN
--SELECT *from ESTUDIANTE
--END
INSERT INTO ESTUDIANTE

32
DEBER 27/08/2018

Realizar un query (usando la sentencia IF), que permita. Contar todos los registros de
una base de datos si uno de ellos contiene en el primer nombre MARIA.

USE ESTUDIANTESNT
GO
DECLARE @primerNOmbre VARCHAR (10)
SET @primerNOmbre = 'MARIA'
IF EXISTS (SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT
WHERE ESTUDIANTESINT.primerNombre = @primerNOmbre)
BEGIN
SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT
WHERE ESTUDIANTESINT.primerNombre = @primerNOmbre
END
ELSE
BEGIN
SELECT * FROM ESTUDIANTESINT
END

33
Realizar un query (usando la sentencia IF), que permita. Contar los registros de todos
los estudiantes si los estudiantes pertenecen a primer nivel.

USE ESTUDIANTESNT
GO
DECLARE @primerNIvel VARCHAR (10)
SET @primerNIvel = 'PRIMERO'
IF EXISTS (SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
WHERE NIVELACADEMICO.nivelacademico = @primerNIvel)
BEGIN
SELECT COUNT (*) AS TOTAL
FROM ESTUDIANTESINT JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
WHERE NIVELACADEMICO.nivelacademico = @primerNIvel
END
ELSE
BEGIN
SELECT * FROM ESTUDIANTESINT
END

Realizar un query que permita. Contar los registros de todos los estudiantes nacidos en
la provincia diferente a la provincia de pichincha.

Realizar un query que permita. Contar los registros de todos los estudiantes nacidos en
el canton de Cayambe.

34
5.- Realizar un query que permita. Mostrar los siguientes datos agrupados por escuela:

Nombres completos del estudiante.

Número de cédula

Sexo

Fecha de nacimiento

Cantón de nacimiento

USE ESTUDIANTESNT
GO
SELECT primerNombre, segundoNombre, primerApellido, segundoApellido,
numeroIdentificacion, SEXO, CANTON, CARRERA, count (*) AS TOTAL
FROM ((ESTUDIANTESINT JOIN CARRERAS
ON CARRERAS.pk_carreraid = ESTUDIANTESINT.fk_carreraid
JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId)
JOIN CANTON
ON CANTON.pk_cantonNacimientoId = ESTUDIANTESINT.fk_cantonNacimientoId)
GROUP BY CARRERA, primerNombre, segundoNombre, primerApellido, segundoApellido,
numeroIdentificacion, SEXO, CANTON

Prueba 27/08/2018

Realizar un query que permita mostrar los siguientes datos (no códigos sino las palabras).
Número de identificación
Primer Nombre
Segundo Nombre
Primer Apellido
Segundo Apellido
Tipo de Sangre
Sexo
Fecha de Nacimiento

Si el numero de cedula termina en 1 o en 2 debe desplegar día de matricula Lunes.

35
USE ESTUDIANTESNT
GO
--DECLARE @CEDULA VARCHAR(15)
--SET @CEDULA
IF EXISTS ((SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,
TIPOSANGRE, SEXO, fechaNacimiento --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTESINT JOIN TIPOSANGRE

ON TIPOSANGRE.pk_tipoSangre = ESTUDIANTESINT.fk_tipoSangre
JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
WHERE numeroIdentificacion like '%1'or numeroIdentificacion like '%2' ))

BEGIN SELECT 'el dia de matricula es martes' as dia


((SELECT
numeroIdentificacion,primerNombre,segundoNombre,primerApellido,segundoApellido,
TIPOSANGRE, SEXO, fechaNacimiento --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTESINT JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = ESTUDIANTESINT.fk_tipoSangre
JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
WHERE numeroIdentificacion like '%1'or numeroIdentificacion like '%2'))
--PRINT'su dia de matricula es lunes'
END

ELSE

BEGIN

SELECT * from ESTUDIANTESINT


END
--INSERT INTO ESTUDIANTE
--PRINT'su dia de matricula es lunes'

TALLER

Realizar un Query que permita obtener el siguiente reporte:

 Nombres Completos del estudiante


 Numero de Cedula
 Genero
 Etnia
 Paralelo
 Nivel Académico que Cursa

Considerando:
1. Si nació el primer día del mes se debe contar cuantos estudiantes son mujeres y cuantos
estudiantes hombres.
2. Si Nació el ultimo día del mes se debe sumar todos los ingresos familiares de las mujeres.

36
3. Si su fecha de matricula es entre 5 y el 10 de cada mes se debe contar cuantos solteros
existen.
USE ESTUDIANTESNT
GO
--DECLARE @CEDULA VARCHAR(15)
--SET @CEDULA
IF EXISTS ((SELECT primerNombre,segundoNombre,primerApellido,segundoApellido,
numeroIdentificacion, GENERO, ETNIA, NIVELACADEMICO, fechaMatricula--,
fechaMatricula --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTESINT JOIN GENERO

ON GENERO.pk_generoId = ESTUDIANTESINT.fk_generoId
JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTESINT.fk_etniaId
JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId
WHERE ESTUDIANTESINT.fechaMatricula between '2018-05-05' and '2018-05-10')) --
BETWEEN ESTUDIANTESINT.fechaMatricula ='10/05/2018' ))
--GROUP BY pk_estadocivilId))

BEGIN select count (*) as solteros


((SELECT primerNombre,segundoNombre,primerApellido,segundoApellido,
numeroIdentificacion, GENERO, ETNIA, NIVELACADEMICO, fechaMatricula --
,fechaMatricula --ARMAMOS LA CONDICION DEL IF
FROM ESTUDIANTESINT JOIN GENERO

ON GENERO.pk_generoId = ESTUDIANTESINT.fk_generoId
JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTESINT.fk_etniaId
JOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId
WHERE ESTUDIANTESINT.fechaMatricula between '2018-05-05' and '2018-05-10')) --
BETWEEN ESTUDIANTESINT.fechaMatricula ='10/05/2018' ))
--GROUP BY pk_estadocivilId, primerApellido))
--PRINT'su dia de matricula es lunes'
END

ELSE

BEGIN

SELECT * from ESTUDIANTESINT


END
--INSERT INTO ESTUDIANTE
--PRINT'su dia de matricula es lunes'

37
USE ESTUDIANTESNT
GO
SELECT (count (pk_estadocivilId))as total,
primerNombre,segundoNombre,primerApellido,segundoApellido, numeroIdentificacion,
GENERO, ETNIA, NIVELACADEMICO, fechaMatricula--, fechaMatricula --ARMAMOS LA
CONDICION DEL IF
FROM ESTUDIANTESINT JOIN GENERO

ON GENERO.pk_generoId = ESTUDIANTESINT.fk_generoId
JOIN ETNIA
ON ETNIA.pk_etniaId = ESTUDIANTESINT.fk_etniaIdJOIN NIVELACADEMICO
ON NIVELACADEMICO.pk_nivelAcademicoQueCursa =
ESTUDIANTESINT.fk_nivelAcademicoQueCursa
JOIN ESTADOCIVIL
ON ESTADOCIVIL.pk_estadocivilId = ESTUDIANTESINT.fk_estadocivilId
WHERE ESTUDIANTESINT.fechaMatricula between '2018-05-05' and '2018-05-10'
GROUP BY pk_estadocivilId,
primerNombre,segundoNombre,primerApellido,segundoApellido, numeroIdentificacion,
GENERO, ETNIA, NIVELACADEMICO, fechaMatricula

38
CASE 05/09/2018

Es una sentencia de control que permite interactuar el resultado de SQL luego de lo cual
evaluamos un resultado.
SINTAXIS
CASE (Condition - Evaluation)
WHEN Valor_Ejecuto THEN Valor_Resultado
WHEN Valor_Ejecuto y devolver el siguiente THEN Valor_Resultado
:
:
ELSE
VALOR por defecto
END
Ejercicio;
Realizar un Query que permita mostrar los paralelos según el siguiente esquema para el paralelo
A debe mostrar: primer paralelo, para el paralelo B: Debe mostrar segundo paralelo, y así hasta
el séptimo paralelo.
USE ESTUDIANTESNT
GO
SELECT CASE PARALELO.paralelo
WHEN 'A' THEN 'PRIMERO'
WHEN 'B' THEN 'SEGUNDO'
WHEN 'C' THEN 'TERECERO'
WHEN 'D' THEN 'CUARTO'
WHEN 'E' THEN 'QUINTO'
WHEN 'F' THEN 'SEXTO'
WHEN 'G' THEN 'SEPTIMO'

ELSE 'no existe paralelo'


END
FROM PARALELO

39
Ejercicio 2
Realizar un query que me permita mostrar los siguientes datos:
Nombre 1, Nombre2, Apellido1, Apellido2, Ingreso total del hogar, de todos los estudiantes según
el siguiente esquema:
Para los alumnos con bajos recursos económicos se considerara un ingreso entre 0$ y 100$, para
los alumnos con recursos económicos medios, se considerara un ingreso entre 101$ y 600$, y
para los alumnos con recursos económicos altos, se considerar un ingreso entres 601$ y 2000$
muestre un reporte con lo antes mencionado utilizando el CASE, considere que si los ingresos
son superiores a los 1000$ se debe considerar, recursos económicos superiores.

USE ESTUDIANTESNT23082018
GO
SELECT primerNombre, segundoNombre, primerApellido, segundoApellido,
ingresoTotalHogar
case
WHEN ingresoTotalHogar between 0 and 100 THEN 'bajo'
WHEN ingresoTotalHogar between 101 and 600 THEN 'medio'
WHEN ingresoTotalHogar between 601 and 200 THEN 'Alto'

ELSE 'Superior'

END
FROM ESTUDIANTESINT

DEBER 24/09/2018
USE ESTUDIANTESNT10092018
GO
--Realizar una función que permita mostrar un reporte de todos los estudiantes
del Nelson Torres que hayan nacido en una provincia diferente a Pichincha, para
lo cual el reporte debe mostrar:
--Nombres completos del estudiante
--Número de cédula
--Fecha de Nacimiento
--Semestre y Paralelo en el que estudia
--Correo electrónico
--Número de Teléfono

CREATE FUNCTION ZUN(@DATO VARCHAR(30))


RETURNS TABLE
AS
RETURN (SELECT
E.primerNombre,E.segundoNombre,E.primerApellido,E.segundoApellido,E.numeroIdentif
icacion,E.fechaMatricula,E.numeroCelular,N.nivelacademico,P.paralelo,PROVINCIA.pr
ovincia
FROM (ESTUDIANTESINT E JOIN NIVELACADEMICO N
ON E.fk_nivelAcademicoQueCursa=N.pk_nivelAcademicoQueCursa)
JOIN PARALELO P
ON E.fk_paraleloId=P.pk_paraleloId
JOIN PROVINCIA
ON E.fk_provinciaNacimientoId=PROVINCIA.pk_provinciaNacimientoId
WHERE provincia<>@DATO
)
SELECT * FROM DBO.ZUN('PICHINCHA')

40
--Realizar una función que permita mostrar un reporte de los estudiantes del
Nelson Torres de la Carrera de Análisis de Sistemas
-- (el dato de la carrera se lo debe pasar como parámetro), para lo cual el
reporte debe mostrar:
--Nombres completos del estudiante
--Número de cédula
--Fecha de Nacimiento
--Tipo de sangre
--Tipo de colegio
--Estado Civil
CREATE PROCEDURE GB(@CARERA VARCHAR(50))
AS
SELECT
E.primerNombre,E.segundoNombre,E.primerApellido,E.segundoApellido,E.numeroIdentif
icacion,E.fechaNacimiento,E.fk_tipoSangre,E.fk_estadocivilId,C.carrera
FROM ESTUDIANTESINT E JOIN CARRERAS C
ON E.fk_carreraid=C.pk_carreraid
WHERE carrera= @CARERA
EXEC GB 'ANALISIS DE SISTEMAS'

--OPCION 2

CREATE FUNCTION TWE(@DATO VARCHAR(30))


RETURNS TABLE
AS
RETURN (SELECT
E.primerNombre,E.segundoNombre,E.primerApellido,E.segundoApellido,E.numeroIdentif
icacion,E.fechaNacimiento,T.tipoSangre,ES.estadocivil,C.carrera

FROM (ESTUDIANTESINT E JOIN TIPOSANGRE T


ON E.fk_tipoSangre =T.pk_tipoSangre)
JOIN ESTADOCIVIL ES
ON E.fk_estadocivilId=ES.pk_estadocivilId
JOIN CARRERAS C
ON E.fk_carreraid=C.pk_carreraid
WHERE carrera=@DATO
)
SELECT * FROM DBO.TWE('ANALISIS DE SISTEMAS')

--Realizar una función que permita insertar un nuevo nivel académico (usando al
menos un parámetro).

CREATE PROCEDURE REDISTR


(
@pk_nivelAcademicoQueCursa INT ,
@nivelacademico VARCHAR (50)
)
AS
SET IDENTITY_INSERT NIVELACADEMICO ON
INSERT INTO NIVELACADEMICO (nivelacademico,pk_nivelAcademicoQueCursa)VALUES
(@nivelacademico,@pk_nivelAcademicoQueCursa)

EXEC REDISTR 7,'SEPTIMO'

SELECT * FROM NIVELACADEMICO

---OPCION 2

41
CREATE FUNCTION NUEV()
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @NIVEL VARCHAR(50)
SET @NIVEL ='OCTAVO'
RETURN @NIVEL
END
GO

INSERT INTO NIVELACADEMICO(nivelacademico)VALUES ( dbo.NUEV)

--4.---insertado (en el ejercicio anterior) usando al menos un parámetro.


--Con base en el ejercicio anterior, realizar una función que permita borrar el
nivel actualizado (en el ejercicio anterior)
--usando al menos un parámetro.
CREATE FUNCTION DELL(@nive VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
SET @nive=@nive
RETURN @nive
END
GO
DELETE FROM NIVELACADEMICO
WHERE nivelacademico=DBO.DELL('SEPTIMO')

SELECT* FROM NIVELACADEMICO

------ACTUALIZAR
use ESTUDIANTESNT
go

CREATE FUNCTION actualiizar (@datos varchar(50))


RETURNS varchar (50)
AS
begin
declare @datos varchar(50)
set @datos = @datos
return @datos
end
go
select * from NIVELACADEMICO
update NIVELACADEMICO set nivelacademico = dbo.actualiizar('OCTAVO')
where pk_nivelAcademicoQueCursa = 23

--5. Con base en el ejercicio anterior, realizar una función que permita borrar
el nivel actualizado
-- (en el ejercicio anterior) usando al menos un parámetro.
use ESTUDIANTESNT
CREATE PROCEDURE ELIMINA
@nivelacademico as varchar(50)
As
DELETE FROM NIVELACADEMICO
WHERE nivelacademico=@nivelacademico
exec ELIMINA'SEPTIMO'

SELECT * FROM NIVELACADEMICO

42
Taller 24/09/2018
USE ESTUDIANTESNT10092018
GO
CREATE FUNCTION taller (@DATO VARCHAR(30))
RETURNS TABLE
AS
RETURN SELECT ESTUDIANTESINT.primerNombre, ESTUDIANTESINT.primerApellido,
ESTUDIANTESINT.numeroIdentificacion, SEXO.sexo, PROVINCIA.provincia,
CANTON.canton, TIPOSANGRE.tipoSangre
FROM (ESTUDIANTESINT JOIN SEXO
ON SEXO.pk_sexoId = ESTUDIANTESINT.fk_sexoId
JOIN PROVINCIA
ON PROVINCIA.pk_provinciaNacimientoId =
ESTUDIANTESINT.fk_provinciaNacimientoId
JOIN CANTON
ON CANTON.pk_cantonId = ESTUDIANTESINT.fk_cantonNacimientoId)
JOIN TIPOSANGRE
ON TIPOSANGRE.pk_tipoSangre = ESTUDIANTESINT.fk_tipoSangre
WHERE TIPOSANGRE.tipoSangre = @DATO AND CANTON.canton = 'CAYAMBE'

GO
SELECT * FROM DBO.taller('B+')

43

You might also like