Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SENA
Colombia, 23/072017
Contenido
TABLA PROFESOR.........................................................................................................................................4
TABLA CURSO...............................................................................................................................................6
TABLA ESTUDIANTES....................................................................................................................................8
TABLA ESTUDIANTEXCURSO.........................................................................................................................9
TABLA ARTICULO........................................................................................................................................11
TABLA CLIENTE...........................................................................................................................................12
TABLA PEDIDO...........................................................................................................................................13
TABLA COMPANIA......................................................................................................................................15
TABLA TIPOS AUTOMOTORES....................................................................................................................16
TABLA AUTOMOTORES..............................................................................................................................17
TABLA ASEGURAMIENTOS.........................................................................................................................18
TABLA INCIDENTES.....................................................................................................................................19
3 Procedimientos almacenados para procesos con MySQL.................................................20
3.1 Proceso mostrar cursos.........................................................................................................20
3.2 Mostrar pedidos.......................................................................................................................20
3.3 Empresas fundadas entre 1991 y 1998...........................................................................21
3.4 Clientes ordenados por apellidos:.....................................................................................21
3.5 Incidentes con un herido......................................................................................................22
3.6 Incidentes del vehículo FLL420..........................................................................................22
4. Funciones..........................................................................................................................................22
4.1 Contar estudiantes mayores de 22...................................................................................22
4.2 Mostrar el nombre del más estudiante más joven......................................................23
4.3 Valor promedio de los cursos con más de 40 horas....................................................23
4.4 Sueldo promedio de profesores categoría 1..................................................................24
4.5 Nombre del profesor con el menor sueldo.....................................................................24
6.1 Disparador para profesor en MySQL.....................................................................................25
6.1.1 Actualizar............................................................................................................................25
6.1.2 Eliminando registros.......................................................................................................26
6.2 Disparador para la tabla curso en MySQL..........................................................................26
6.2.1 Actualizar Curso...................................................................................................................26
6.2.2 Eliminar registros curso.................................................................................................27
6.3 Disparadores para estudiante.............................................................................................28
6.3.1 Disparador para actualizaciones de registros........................................................28
6.3.2 Disparador para eliminación de registros...............................................................28
6.4 Disparadores para automotores.............................................................................................29
6.4.1 Disparador de actualización.........................................................................................29
6.4.2 Disparador eliminación registros................................................................................29
6.5 Disparadores para aseguramientos en MySQL.............................................................30
6.5.1 Trigger para actualización.............................................................................................30
6.5.2 Trigger para eliminación................................................................................................31
6.6 Disparadores para la tabla incidentes.............................................................................31
6.6.1 Actualización.....................................................................................................................32
6.6.2 Eliminación de registros................................................................................................32
6.7 Disparador de actualización con Oracle (Tabla artículo)...........................................32
6.7.1 Actualización.....................................................................................................................32
6.8 Disparadores para la tabla cliente....................................................................................33
6.8.1 Actualizar............................................................................................................................33
6.8.2 Eliminar registros.............................................................................................................34
6.9 Disparadores para la tabla pedido....................................................................................34
6.9.1 Actualizar............................................................................................................................34
6.9.2 Eliminar registros.............................................................................................................35
TABLA PROFESOR
+-----------+-------------+------+-----+---------+-------+
+-----------+-------------+------+-----+---------+-------+
+-----------+-------------+------+-----+---------+-------+
+---------------+-----------+----------+-----------+----------+
+---------------+-----------+----------+-----------+----------+
+---------------+-----------+----------+-----------+----------+
+---------------+-----------+----------+-----------+----------+
+---------------+-----------+----------+-----------+----------+
+---------------+-----------+----------+-----------+----------+
TABLA CURSO
mysql> describe curso;
+------------+--------------+------+-----+---------+----------------+
+------------+--------------+------+-----+---------+----------------+
+------------+--------------+------+-----+---------+----------------+
+----------+-------------------------------+-----------+------------+
+----------+-------------------------------+-----------+------------+
+----------+-------------------------------+-----------+------------+
+----------+-------------------------------+-----------+------------+
+----------+-------------------------------+-----------+------------+
+----------+-------------------------------+-----------+------------+
TABLA ESTUDIANTES
TABLA ESTUDIANTEXCURSO.
mysql> select cod_curso, doc_est, nom_est, fec_ini_estcur
-> from curso join estudiante join estudiantexcurso
-> on doc_est = doc_est_estcur and cod_curso = cod_curso_estcur;
+------------+-----------------+-----------+-----------------+
| cod_curso | doc_est | nom_est | fec_ini_estcur |
+------------+-----------------+-----------+-----------------+
| 289011 | 1.098.765.678 | Carlos | 2011-01-02 |
| 250067 | 63.502.720 | María | 2011-01-03 |
| 289011 | 1.098.098.097 | Jonatan | 2011-01-02 |
| 345671 | 63.502.720 | María | 2011-01-04 |
| 172943 | 72240535 | Jhon | 2014-02-06 |
+------------+------------------+----------+------------------+
TABLA ARTICULO
TABLA CLIENTE
TABLA PEDIDO
TABLA COMPANIA
TABLA TIPOS AUTOMOTORES
TABLA AUTOMOTORES
TABLA ASEGURAMIENTOS
En MySQL los procedimientos con select no son distintos de los insert y requieren
mucho menos trabajo que con Oracle.
4. Funciones
4.1 Contar estudiantes mayores de 22
USE `laboratoriosql`;
DROP function IF EXISTS `contar22`;
DELIMITER $$
USE `laboratoriosql`$$
CREATE FUNCTION contar22 ()
RETURNS INTEGER
BEGIN
DECLARE cantidad int;
select count(*) into cantidad from estudiante
where edad_est > 22;
RETURN cantidad;
END$$
DELIMITER ;
Llamamos la función y visualizamos el resultado:
mysql> select contar22();
+------------+
| contar22() |
+------------+
|3|
+------------+
4.2 Mostrar el nombre del más estudiante más joven
Primero he creado una función que devuelve como valor la edad del alumno más
joven:
USE `laboratoriosql`;
DROP function IF EXISTS `masJoven`;
DELIMITER $$
USE `laboratoriosql`$$
CREATE FUNCTION masJoven ()
RETURNS int
BEGIN
DECLARE masJoven int;
SELECT edad_est into masJoven
from estudiante
order by edad_est asc limit 1;
RETURN masJoven;
END;$$
DELIMITER ;
Y luego la he combinado con un select, así:
mysql> select nom_est, edad_est from estudiante where edad_est = masJoven();
+---------+------------+
| nom_est | edad_est |
+---------+------------+
| Jonatan | 17 |
+---------+------------+
4.3 Valor promedio de los cursos con más de 40 horas
USE `laboratoriosql`;
DROP function IF EXISTS `promediocursos`;
DELIMITER $$
USE `laboratoriosql`$$
CREATE FUNCTION promediocursos ()
RETURNS INTEGER
BEGIN
declare var_promedio int;
select avg(valor_cur) into var_promedio
from curso
where horas_cur > 40;
RETURN var_promedio;
END$$
DELIMITER ;
Probamos la función:
4.4 Sueldo promedio de profesores categoría 1
USE `laboratoriosql`;
DROP function IF EXISTS `promediosueldo`;
DELIMITER $$
USE `laboratoriosql`$$
CREATE FUNCTION promediosueldo ()
RETURNS INTEGER
BEGIN
DECLARE avgsueldo int;
SELECT AVG(sal_prof) INTO avgsueldo FROM profesor
WHERE cate_prof = 1;
RETURN avgsueldo;
END$$
DELIMITER ;
Probamos la función con select:
mysql> select promediosueldo();
+---------------------+
| promediosueldo() |
+---------------------+
| 550000 |
+---------------------+
1 row in set (0.00 sec)
4.5 Nombre del profesor con el menor sueldo
USE `laboratoriosql`;
DROP function IF EXISTS `menorSueldo`;
DELIMITER $$
USE `laboratoriosql`$$
CREATE FUNCTION menorSueldo ()
RETURNS VARCHAR(30)
BEGIN
DECLARE nombre VARCHAR(30);
SELECT nom_profesor INTO nombre
FROM profesor
ORDER BY sal_prof ASC LIMIT 1;
RETURN nombre;
END$$
DELIMITER ;
mysql> select menorsueldo();
+-----------------+
| menorsueldo() |
+-----------------+
| Maritza |
+-----------------+
1 row in set (0.00 sec)