Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ABDUnidad IPAEjercicios Resueltos
ABDUnidad IPAEjercicios Resueltos
1
SMBD y SQL Avanzado
Índice de Contenido
Pág.
Presentación…………………………………………………………..………….. 03
1.- Programas almacenados en el esquema PSM……………….……………… 03
1.1.- Crear Tabla Estudiante……………………………...……….…….. 03
1.2.- Insertar Estudiantes………………………………………………... 04
1.3.- Listar estudiantes cuyo nombre tenga una letra dada……………. . 05
1.4.- Fecha de Ingreso………………………………………………….. 07
1.5.- Tabla libro…………………………………………………………. 08
1.6.- Registrar libro……………………………………………………... 09
1.7.- Precio de libros……………………………………………………. 10
1.8.- Editorial…………………………………………………………… 12
1.9.-Base de dato tienda………………………………………………… 13
1.10.- Insertar Fabricante……………………………………………….. 14
1.11.-Insertar Producto………………………………………………….. 15
Ejercicio propuestos…………………………………………………….. 15
2.- Funciones…………...……...…………………………………………………. 16
2.1.- Calcular precio mayor……………………………………………... 15
2.2.- Menor calificación………………………………………………… 17
2.3.- Promediar precios…………………………………………………. 18
2.4.- Sumar precios……………………………………………………… 19
3.- Estructuras de control……………………………………………………….. 20
3.1.- Bifurcación (if)…….………………………………………………. 20
3.2.- Case……………………………………………………………….. 21
3.3.- While…….………………………………………………………… 22
2
SMBD y SQL Avanzado
Presentación
1.-PROCEDIMIENTOS
EJERCICIO 1.1 Crear tabla Estudiante. Crear base de datos llamada ludovicoSilva,
seleccionar la base de datos y posteriormente desarrollar un procedimiento llamado
crearTablaEstudiante () que permita crear una tabla llamada estudiante con los campos
id INT, IdAula INT, nombre VARCHAR(30),apellido VARCHAR(30) y nota FLOAT
DELIMITER //
BEGIN
END//
DELIMITER ;
Llamando al procedimiento por el entorno sql
CALL crearTablaEstudiante()
3
SMBD y SQL Avanzado
CALL `crearTablaEstudiante`();
-- Definir el procedimiento
DELIMITER //
BEGIN
END //
DELIMITER ;
4
SMBD y SQL Avanzado
Llamando al procedimiento
CALL insertarEstudiante ()
CALL `insertarEstudiante`();
Ejercicio 1.3. Listar estudiantes cuyo nombre tenga una letra dada. Realizar un
procedimiento llamado buscarLetra(IN letra CHAR(1)) que reciba una letra y permita
buscar a los estudiantes cuyo nombre contenga dicha letra.
-- Definir el procedimiento
DELIMITER //
CREATE OR REPLACE
PROCEDURE buscarLetra(IN letra CHAR(1)) NOT DETERMINISTIC NO SQL S
QL SECURITY DEFINER
BEGIN
END//
DELIMITER ;
Llamando al procedimiento
SET @p0='a';
CALL buscarLetra(@p0);
Resultado del llamado del procedimiento
5
SMBD y SQL Avanzado
MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). (La consulta tardó
0,0022 segundos.)
SET @p0='a'
CALL buscarLetra(@p0)
25
|
Mostrar todo Número de filas: Filtrar filas:
+ Opciones
CALL buscarLetra('i')
25
Mostrar todo| Número de filas:
Filtrar filas:
+ Opciones
6
SMBD y SQL Avanzado
DELIMITER //
BEGIN
END //
DELIMITER ;
Llamado al procedimiento
/* A una variable @p0 se le asigna la fecha que se desea buscar, note que se le antepone al
nombre el operador@*/
SET @p0='2002-02-01';
/* Se llama el procedimiento con la sentencia CALL seguido del nombre del procedimiento,
dentro de paréntesis se le envía el parámetro de entrada @p0 y @p1 que es el parámetro de
salida, este último recibe la cantidad de coincidencias.*/
7
SMBD y SQL Avanzado
Opciones
cantidad
2
Ejercicio 1.5. Tabla Libro. Crear una base de datos llamada biblioteca, seleccionar la
base de datos y crear un procedimiento crearTablaLibro () que permite crear una
tabla llamada libro
-- Definiendo el procedimiento
DELIMITER //
BEGIN
END //
DELIMITER ;
8
SMBD y SQL Avanzado
Llamado al procedimiento
CALL crearTablaLibro()
MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). (La consulta tardó
0,3954 segundos.)
CALL crearTablaLibro()
Ejercicio 1.6. Registrar libros. Realizar procedimiento para incluir registros en la tabla
libro
-- Definiendo el procedimiento
DELIMITER //
BEGIN
values('El aleph','Borges','Planeta',15,100);
9
SMBD y SQL Avanzado
END //
DELIMITER ;
Llamando al procedimiento
CALL insertarLibros()
CALL insertarLibros()
Ejercicio 1.7. Precios de los libros. Procedimiento preciosLibros() que retorna los
precios de todos los libros
-- definir el procedimiento
DELIMITER //
10
SMBD y SQL Avanzado
BEGIN
END//
DELIMITER ;
Llamado al procedimiento
CALL preciosLibros()
Resultado de la consulta
CALL preciosLibros()
25
|
Mostrar todo Número de filas: Filtrar filas:
+ Opciones
precio
15.00
22.20
40.00
18.20
36.40
30.80
45.00
11
SMBD y SQL Avanzado
precio
46.00
DELIMITER //
BEGIN
END //
DELIMITER ;
Llamado al procedimiento
Perfilando
12
SMBD y SQL Avanzado
25
|
Mostrar todo Número de filas: Filtrar filas:
+ Opciones
cantidad
5
Ejercicio 1.9. Base de Dato tienda. Crear una base datos llamada tienda. Seleccionar
la base de datos y crear una tabla llamada fabricante y otra llamada producto
DELIMITER //
BEGIN
Llamando al procedimiento
CALL crearTablas ()
13
SMBD y SQL Avanzado
DELIMITER //
CREATE OR REPLACE PROCEDURE insertarFabricante()
BEGIN
INSERT INTO fabricante VALUES(1, 'Asus');
INSERT INTO fabricante VALUES(2, 'Lenovo');
INSERT INTO fabricante VALUES(3, 'Hewlett-Packard');
INSERT INTO fabricante VALUES(4, 'Samsung');
INSERT INTO fabricante VALUES(5, 'Seagate');
INSERT INTO fabricante VALUES(6, 'Crucial');
INSERT INTO fabricante VALUES(7, 'Gigabyte');
INSERT INTO fabricante VALUES(8, 'Huawei');
INSERT INTO fabricante VALUES(9, 'Xiaomi');
END //
DELIMITER ;
Llamado al procedimiento
CALL insertarFabricante ()
CALL `insertarFabricante`();
DELIMITER //
CREATE OR REPLACE PROCEDURE insertarProducto()
BEGIN
14
SMBD y SQL Avanzado
INSERT INTO producto VALUES(1, 'Disco duro SATA3 1TB', 86.99, 5);
INSERT INTO producto VALUES(2, 'Memoria RAM DDR4 8GB', 120, 6);
INSERT INTO producto VALUES(3, 'Disco SSD 1 TB', 150.99, 4);
INSERT INTO producto VALUES(4, 'GeForce GTX 1050Ti', 185, 7);
INSERT INTO producto VALUES(5, 'GeForce GTX 1080 Xtreme', 755, 6);
INSERT INTO producto VALUES(6, 'Monitor 24 LED Full HD', 202, 1);
INSERT INTO producto VALUES(7, 'Monitor 27 LED Full HD', 245.99, 1);
INSERT INTO producto VALUES(8, 'Portátil Yoga 520', 559, 2);
INSERT INTO producto VALUES(9, 'Portátil Ideapd 320', 444, 2);
INSERT INTO producto VALUES(10, 'Impresora HP Deskjet 3720', 59.99, 3);
INSERT INTO producto VALUES(11, 'Impresora HP Laserjet Pro M26nw',
180, 3);
END //
DELIMITER ;
CALL insertarProducto()
CALL insertarProducto()
MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). (La consulta tardó
1,1378 segundos.)
CALL insertarProducto()
b.- Lista los títulos y los precios de todos los libros de la tabla libro, convirtiendo los
nombres a mayúscula.
c.- Lista los nombres y los precios de todos los productos de la tabla producto,
redondeando el valor del precio
15
SMBD y SQL Avanzado
d.- Lista el código de los fabricantes que tienen productos en la tabla producto
g.- Lista todos los productos que tengan un precio entre 80 y 300.
h.- Devuelve una lista con el nombre, precio y nombre de fabricante de todos los
productos de la base de datos. Ordene el resultado por el nombre del fabricante, por
orden alfabético.
2.- FUNCIONES
2.1. Calcular el precio mayor.
DELIMITER //
BEGIN
DECLARE x DOUBLE;
RETURN x;
END //
DELIMITER ;
Llamando a la función
precioMayor
755
16
SMBD y SQL Avanzado
DELIMITER //
BEGIN
DECLARE x DOUBLE;
END //
DELIMITER ;
Llamando a la función
precioMayor
755
DELIMITER //
BEGIN
DECLARE x DOUBLE;
17
SMBD y SQL Avanzado
RETURN x;
END //
DELIMITER ;
Perfilando
25
Mostrar todo| Número de filas:
Filtrar filas:
+ Opciones
2.3.- Promediar precios. Promediar los precios de los productos. (Seleccionar la base
de datos tienda)
DELIMITER //
BEGIN
DECLARE x DOUBLE;
RETURN x;
END //
DELIMITER ;
18
SMBD y SQL Avanzado
Llamando a la función
SELECT promedioPrecio() AS `Promedio Precio`;
Perfilando
25
Mostrar todo| Número de filas:
Filtrar filas:
+ Opciones
Promedio Precio
271.7236363636364
BEGIN
DECLARE x DOUBLE;
RETURN x;
END //
DELIMITER ;
Llamando a la función
SELECT sumaPrecio() AS `Suma de Precios`;
19
SMBD y SQL Avanzado
Perfilando
25
|
Mostrar todo Número de filas: Filtrar filas:
+ Opciones
Suma de Precios
2988.96
DELIMITER //
RETURNS varchar(10)
BEGIN
DECLARE a VARCHAR(10);
IF precio>40 then
RETURN 'ALTO';
ELSE
RETURN 'BAJO';
END IF;
END //
DELIMITER ;
20
SMBD y SQL Avanzado
Llamando a la función
SET @p0='80';
SELECT `tipoPrecio`(@p0) AS `tipoPrecio`;
Resultado de la función
tipoPrecio
ALTO
DELIMITER //
RETURNS VARCHAR(30)
BEGIN
CASE
SET tipo='baja';
SET tipo='media';
ELSE
SET tipo='alta';
END CASE;
RETURN tipo;
END //
DELIMITER ;
21
SMBD y SQL Avanzado
Llamado la función
SELECT tipoNota(12.45);
SELECT tipoNota(12.45)
Perfilando
25
|
Mostrar todo Número de filas: Filtrar filas:
+ Opciones
tipoNota(12.45)
media
while cont<=num do
set total=total*cont;
set cont=cont+1;
end while;
RETURN total;
END //
DELIMITER ;
Llamado a la función
SELECT factorial(2);
SELECT factorial(2)
22
SMBD y SQL Avanzado
Perfilando
25
|
Mostrar todo Número de filas: Filtrar filas:
+ Opciones
factorial(2)
2
23