¿Te gustaría aprender Base de Datos con SQL Server?
Tenemos los diplomados que necesitas.¡Haz clic aquí!

Ejercicio 01 : Funciones Matemáticas

Crear un programa que calcule la distancia de dos puntos de un plano cartesiano (x,y). Dado los valores, x = (3, 2); y = (5, 8). Mostrar en pantalla la distancia de los puntos x, y.

1234567891011121314DECLAREv_point_x1 NUMBER := 3;v_point_x2 NUMBER := 2;v_point_y1 NUMBER := 5;v_point_y2 NUMBER := 8;v_distance DECIMAL(6,2);BEGINv_distance := SQRT(POWER((v_point_x1-v_point_x2),2)+POWER((v_point_y1-v_point_y2),2));DBMS_OUTPUT.PUT_LINE('CALCULAR LA DISTANCIA DE DOS PUNTOS');DBMS_OUTPUT.PUT_LINE('************************************');DBMS_OUTPUT.PUT_LINE('Punto X : (' || v_point_x1||','||v_point_x2||')');DBMS_OUTPUT.PUT_LINE('Punto Y : (' || v_point_y1||','||v_point_y2||')');DBMS_OUTPUT.PUT_LINE('Distancia XY : ' || v_distance);END;

Ejercicio 02 : Sentencia Loop While

Desarrollar un programa que sume «n» veces un número aleatorio.
Imprimir en pantalla los números aleatorios generados y la suma obtenida.
La cantidad de iteraciones deberá generarse de manera aleatoria, considerando los valores del 1 al 10. Los números aleatorios generados en cada iteración deberán ser del 10 al 100.

12345678910111213141516DECLAREv_sum NUMBER := 0;v_x NUMBER :=0;v_num NUMBER;v_limit NUMBER;BEGINv_limit := FLOOR(DBMS_RANDOM.value(1,10));LOOPv_x := v_x + 1;v_num := FLOOR(DBMS_RANDOM.value(10,100));DBMS_OUTPUT.PUT_LINE('Número aleatorio '||v_x||' -> '|| v_num);v_sum := v_sum + v_num;EXIT WHEN v_x = v_limit;END LOOP;DBMS_OUTPUT.PUT_LINE('Suma Total = '||v_sum);END;

Ejercicio 03 : Sentencia FOR

Desarrollar un programa que devuelva la cantidad de números múltiplos de 3 que existen del 1 al 100.

123456789101112DECLAREv_multiple_3 NUMBER := 0;BEGINFOR v_num IN 1..100 LOOPIF (MOD(v_num,3)=0) THENv_multiple_3 := v_multiple_3 + 1;END IF;END LOOP;DBMS_OUTPUT.PUT_LINE('Números multiplos de 3 del 1 al 100: '||v_multiple_3);END;-- Output:-- Números multiplos de 3 del 1 al 100: 3

Ejercicio 04: Cursores

Elabore un bloque anónimo PL/SQL que almacene en un objeto cursor la lista de empleados (código, nombres, apellidos y salario) que tiene un sueldo menor e igual $ 2,800. Mostrar el resultado por cada registro. Utilizar el esquema de base de datos HR (Human Resources) que viene por defecto en Live SQL.

123456789101112131415161718192021DECLARECURSOR employees_cursor ISSELECT employee_id,first_name,last_name,salary FROM hr.employees WHERE salary<=2800;v_id hr.employees.employee_id%TYPE;v_name hr.employees.first_name%TYPE;v_surname hr.employees.last_name%TYPE;v_salary hr.employees.salary%TYPE;v_num NUMBER := 0;BEGINDBMS_OUTPUT.PUT_LINE(LPAD('-',50,'-'));DBMS_OUTPUT.PUT_LINE('INFORME DE EMPLEADOS');DBMS_OUTPUT.PUT_LINE(LPAD('-',50,'-'));OPEN employees_cursor;LOOPFETCH employees_cursor INTO v_id,v_name,v_surname,v_salary;EXIT WHEN employees_cursor%NOTFOUND;v_num := v_num+1;DBMS_OUTPUT.PUT_LINE('[' || v_num || '] Empleado N° '|| v_id || ' - ' || v_name || ' ' || v_surname || ' tiene un sueldo de' ||TO_CHAR(v_salary,'$99,999.00'));END LOOP;CLOSE employees_cursor;END;

Ejercicio 05: Sentencia IF

Elaborar un bloque anónimo PL/SQL que devuelva un reporte de los empleados que tienen un salario menor e igual a $ 2,800.00. El reporte debe mostrarse agrupado por departamentos. Los valores de la columna deben ser por ancho fijo.

123456789101112131415161718192021222324DECLARECURSOR dpto_employees_cursor ISSELECT e.department_id,d.department_name,e.employee_id,e.first_name,e.last_name,e.salary FROM hr.employees eINNER JOIN hr.departments d ON e.department_id=d.department_idWHERE salary<2800ORDER BY d.department_name DESC, salary DESC;v_last_department_id hr.departments.department_id%TYPE:=0;v_num NUMBER := 0;BEGINDBMS_OUTPUT.PUT_LINE(LPAD('-',70,'-'));DBMS_OUTPUT.PUT_LINE('INFORME DE EMPLEADOS POR DEPARTAMENTOS');DBMS_OUTPUT.PUT_LINE(LPAD('-',70,'-'));FOR emp IN dpto_employees_cursorLOOPIF v_last_department_id<>emp.department_id THENDBMS_OUTPUT.PUT_LINE(chr(13)||'DEPARTAMENTO: ' || UPPER(emp.department_name));DBMS_OUTPUT.PUT_LINE(LPAD('-',70,'-'));ELSEDBMS_OUTPUT.PUT_LINE(rpad(emp.employee_id, 10) || rpad(emp.first_name|| ' ' || emp.last_name, 20) ||TO_CHAR(emp.salary,'$999,999.00'));END IF;v_last_department_id:=emp.department_id;END LOOP;END;

Base de datos de ventas

Para los siguientes ejercicios utilizaremos una propia base de datos de ventas, debido a que no contamos con los permisos de alterar la información de los esquemas de base de datos que nos proporciona Oracle Live SQL.

Copia las siguientes sentencias SQL y pégalo en la ventana de trabajo de la herramienta para finalmente ejecutar las sentencias.

-- Ventas Database SQL DUMP-- version 1.1.2-- source: www.solocodigoweb.com-- author: Gonzalo Chacaltana Buleje-- Servidor: Oracle Database 19c Enterprise Edition Release-- Versión del servidor: 19.4.0.0.0 -- CREANDO TABLA CLIENTES CREATE TABLE clientes (cod_cliente CHAR(5) NOT NULL PRIMARY KEY,nombres VARCHAR2(30) NOT NULL,distrito VARCHAR2(30) NULL,telefono VARCHAR2(10) NULL); -- CREANDO TABLA PRODUCTOSCREATE TABLE productos (cod_producto CHAR(5) NOT NULL PRIMARY KEY,descripcion VARCHAR2(30) NULL,precio_unitario NUMBER(9,2) NULL); -- CREANDO TABLA FACTURASCREATE TABLE facturas (cod_factura CHAR(5) NOT NULL PRIMARY KEY,cod_cliente CHAR(5) NOT NULL,fecha_emision DATE NULL,importe_total DECIMAL(9,2) NULL); -- CREANDO TABLA DETALLE_FACTURASCREATE TABLE detalle_facturas (cod_factura CHAR(5) NOT NULL,cod_producto CHAR(5) NOT NULL,cantidad SMALLINT NOT NULL,subtotal DECIMAL(9,2) NOT NULL); -- AGREGANDO RELACIONES Y CLAVES PRIMARIAS ALTER TABLE facturasADD FOREIGN KEY (cod_cliente)REFERENCES clientes(cod_cliente); ALTER TABLE detalle_facturasADD PRIMARY KEY (cod_factura,cod_producto); ALTER TABLE detalle_facturasADD FOREIGN KEY (cod_factura)REFERENCES facturas(cod_factura); ALTER TABLE detalle_facturasADD FOREIGN KEY (cod_producto)REFERENCES productos(cod_producto); -- INSERTANDO REGISTROS A LA TABLA CLIENTES INSERT INTO clientesVALUES('C0001','Julián Pérez','Lince','3214568');INSERT INTO clientesVALUES('C0002','Maria Chavez','Jesus Maria','4215678');INSERT INTO clientesVALUES('C0003','Juan Chacaltana','Comas','5416321');INSERT INTO clientesVALUES('C0004','Guadalupe Fernández','Cercado','5216364');INSERT INTO clientesVALUES('C0005','José Gómez','Lince','3458974');INSERT INTO clientesVALUES('C0006','Carlos Segura','Rimac','4562312');INSERT INTO clientesVALUES('C0007','Javier Buleje','Lince','3218974');INSERT INTO clientesVALUES('C0008','Mary Huaman','Cercado','5631278');INSERT INTO clientesVALUES('C0009','Cristian Sánchez','Cercado','5410591');INSERT INTO clientesVALUES('C0010','Flor Paz','Lince','3564165'); -- INSERTANDO REGISTROS A LA TABLA PRODUCTOS INSERT INTO productosVALUES('P0001','Memoria DDR 256 Mb',120.00);INSERT INTO productosVALUES('P0002','Memoria DDR 500 Mb',190.00);INSERT INTO productosVALUES('P0003','Mainboard PcChip v25',280.00);INSERT INTO productosVALUES('P0004','Mainboard Intel V101',320.00);INSERT INTO productosVALUES('P0005','Procesador Intel 3.6',390.00);INSERT INTO productosVALUES('P0006','Procesador Intel 2.6',340.00);INSERT INTO productosVALUES('P0007','Procesador Celeron 3.2',320.00);INSERT INTO productosVALUES('P0008','Disco Duro SATA 80 GB',180.00);INSERT INTO productosVALUES('P0009','Disco Duro SATA 120 GB',220.00);INSERT INTO productosVALUES('P0010','Case Prezcom 500 Wats',120.00); -- INSERTANDO REGISTROS A TABLA FACTURASINSERT INTO facturasVALUES('F0001','C0004',SYSDATE,0);INSERT INTO facturasVALUES('F0002','C0006',SYSDATE,0);INSERT INTO facturasVALUES('F0003','C0007',SYSDATE,0);INSERT INTO facturasVALUES('F0004','C0004',SYSDATE,0);INSERT INTO facturasVALUES('F0005','C0008',SYSDATE,0);INSERT INTO facturasVALUES('F0006','C0002',SYSDATE,0);INSERT INTO facturasVALUES('F0007','C0006',SYSDATE,0);INSERT INTO facturasVALUES('F0008','C0009',SYSDATE,0);INSERT INTO facturasVALUES('F0009','C0010',SYSDATE,0);INSERT INTO facturasVALUES('F0010','C0004',SYSDATE,0); -- INSERTANDO REGISTROS A LA TABLA DETALLE FACTURASINSERT INTO detalle_facturasVALUES('F0001','P0003',3,840.00);INSERT INTO detalle_facturasVALUES('F0001','P0005',5,1950.00);INSERT INTO detalle_facturasVALUES('F0001','P0006',2,680.00);INSERT INTO detalle_facturasVALUES('F0001','P0009',1,220.00);INSERT INTO detalle_facturasVALUES('F0002','P0009',3,660.00);INSERT INTO detalle_facturasVALUES('F0002','P0005',8,3120.00);INSERT INTO detalle_facturasVALUES('F0002','P0002',2,380.00);INSERT INTO detalle_facturasVALUES('F0002','P0007',3,960.00);INSERT INTO detalle_facturasVALUES('F0002','P0010',1,120.00);INSERT INTO detalle_facturasVALUES('F0003','P0010',4,480.00);INSERT INTO detalle_facturasVALUES('F0003','P0003',7,1960.00);INSERT INTO detalle_facturasVALUES('F0003','P0006',2,680.00);INSERT INTO detalle_facturasVALUES('F0003','P0009',1,220.00);INSERT INTO detalle_facturasVALUES('F0004','P0005',3,1170.00);INSERT INTO detalle_facturasVALUES('F0004','P0006',6,2040.00);INSERT INTO detalle_facturasVALUES('F0004','P0007',8,2560.00);INSERT INTO detalle_facturasVALUES('F0005','P0003',3,840.00);INSERT INTO detalle_facturasVALUES('F0005','P0005',5,1950.00);INSERT INTO detalle_facturasVALUES('F0005','P0002',1,190.00);INSERT INTO detalle_facturasVALUES('F0006','P0007',3,960.00);INSERT INTO detalle_facturasVALUES('F0006','P0002',2,380.00);INSERT INTO detalle_facturasVALUES('F0007','P0003',3,840.00);INSERT INTO detalle_facturasVALUES('F0007','P0008',4,720.00);INSERT INTO detalle_facturasVALUES('F0008','P0003',3,840.00);INSERT INTO detalle_facturasVALUES('F0008','P0006',1,340.00);INSERT INTO detalle_facturasVALUES('F0009','P0003',3,840.00);INSERT INTO detalle_facturasVALUES('F0010','P0009',5,1100.00);

Te esperamos en la tercera y ultima parte de artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender Base de Datos con SQL Server?
Tenemos los diplomados que necesitas.¡Haz clic aquí!

About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax