Practicas solucionadas
PRACTICA 6 y 7 (viernes 1 abril)
Practica 7 (viernes 1 abril)
- Despliegue el nombre completo del alumno,
su promedio y beca, de los alumnos que pertenezcan a las carreras 1,4 y 5.
- Despliegue el nombre de la carrera, el nombre completo del alumno, su promedio y beca, de los
alumnos que pertenezcan a las carreras 1,4 y 5.
- Despliegue el nombre de la carrera, el nombre completo del alumno, su promedio y beca. Deberán aparecer todas las carreras tengan o no
alumnos, el promedio y beca deberán aparecer en 0 en caso de no tener
alumnos.
- Despliegue la clave de las carreras con director
- Despliegue el nombre de la carrera, el nombre completo del alumno, su promedio y beca, de los
alumnos que pertenezcan a las carreras con director (usar subquery independiente y correlacionado)
- Genere una lista de carreras que no tengan ningún alumno. (usar subquery independiente y correlacionado)
- Desplegar la clave y nombre de las carreras que tengan más de 2 alumnos con estatus activo “A”. (usar subquery
independiente y correlacionado)
- Genere una lista de alumnos que tengan más de 2 faltas injustificadas en el mes.
(usar subquery
independiente y correlacionado)
- Genere una lista con clave de la carrera,
total de alumnos por carrera. Ordenado por total de alumnos, de todas las
carreras con mas de 3 alumnos
- *Genere una lista con clave de la carrera,
nombre completo del alumno, total de
alumnos por carrera. Ordenado
por total de alumnos, de todas las carreras con mas de 3 alumnos
- Desplegar el nombre de la carrera, director, total de créditos,
el promedio máximo y mínimo por carrera Para aquellas becas máximas por carrera mayores a 100.
- *Desplegar el nombre de la carrera, director, total de créditos,
el promedio máximo y el nombre de los alumnos con promedio máximo
por carrera. Para aquellas becas máximas por carrera mayores a 100.
- Actualice el promedio del alumno (TABLA ALUMNO) con el promedio de
la tabla de respaldo con fecha del mes en curso.
PRACTICA 6 (viernes 1 abril)
- Cree en
la base de datos los 3
procedimientos realizados la clase anterior (Loop básico, for y while),
con los diferentes ciclos, los 3 deben
agregar N número de folios en la tabla Claves.
- Cree en
la base de datos las 3 funciones
realizadas la clase anterior ((Loop básico, for y while), que
reciba la matricula del alumno y regrese tantos asteriscos como su
promedio.
- Cree un
objeto que reciba la matricula del
alumno y actualice el monto de la
beca de la siguiente manera:
·
Si tiene FI (faltas injustificadas) en el año en curso disminuya el monto en un
20%
·
Si tiene RI (retardos injustificados) en
el año en curso disminuya el monto en un 10%
·
Si no tiene incidencias de ningún tipo increméntela en un
15% (puede usar el SQL%NOTFOUND)
- Cree un
objeto que cada vez que se modifique el promedio del alumno o se elimine
un alumno se registre en la tabla bitácora (folio n(4), usuario c(50) requerido,
tabla c(30) requerido, fecha_mov fecha, observaciones c(100) ) previamente
creada.
- Cree un
objeto que cada vez que se eliminen incidencias lo registre en la tabla bitácora,
poniendo en el campo observaciones el número de registros eliminados.
- OPCIONAL.
Cree una función que reciba la
matricula del alumno y regrese el
valor de su nombre de la siguiente manera:
·
A,B,C,D,E
- 1
·
F,G,H,I,J – 2
·
K,L,M,N,Ñ -3
·
O,P,Q,R,S-4
·
T,U,V,W-5
·
X,Y,Z -6
Ejemplo
JUAN
= 2+5+1+3 = 11
Sugerencias:
usar la función lenght para saber la longitud del nombre y saber cuantas veces se realizara el
ciclo (USE FOR), usar substr para ir obteniendo letra por letra dentro del
ciclo y luego el if para darle valor.
PRACTICA 5 (viernes18 marzo)
Ejemplo bloque anónimo base
Declare
V_id number(4); --declaracion variable
Begin
V_id := 1; --asignacion valor
Dbms_output.put_line(‘V_id =’ ||
to_char(v_id) ); -- instruccion imprime en pantalla
End;
Para realizar los siguientes puntos use el
bloque anonimo base agregando lo
necesario.
- Evaluar
cada una de las siguientes declaraciones. Determinar si es permitida o no
y explicar por qué.
Declare
- V_id number(4);
- V_x,v_y, v_z varchar2(10);
- V_fcump date not null;
- V_en_stock boolena:=1;
2.En cada
una de las siguiente asignaciones determine el tipo de dato del resultado de la expresión.
- V_dia := v_fecha – sysdate;
- V_envio:=
user|| ‘: ‘ || to_char(v_cve_dep);
- V_suma
:= 100+250;
- V_flag
:= TRUE;
- V_n1
:= v_n2 > (2*v_n3);
- V_valor
:= null;
- Valor de v_peso en subbloque.
- Valor de v_nva_loc en subbloque.
- Valor de v_mensaje en subbloque.
- Valor de v_peso en bloque principal.
- Valor de v_nva_loc en bloque principal.
Valor de v_mensaje en bloque principal.
DECLARE
v_pesonumber(3):= 600;
v_mesjvarchar(255) := 'PRODUCTO 1';
BEGIN
V_peso :=v_peso + 5;
V_mesj := ‘BLOQUE PRINCIPAL’
/*SUB BLOQUE*/
DECLARE
v_pesonumber(3) := 1;
v_mesjvarchar(255) := 'SUBBLOQUE';
v_nvalocvarchar2(50) :='EUROPA';
BEGIN
v_peso := v_peso +1;
v_nvaloc := 'ESTE '|| v_nvaloc;
END;
v_peso := v_peso +1;
v_mesj := v_mesj || 'BQ PRINCIPAL 2PTE';
v_nvaloc := 'OESTE '|| v_nvaloc;
dbsm_output.put_line(
v_mesj);
END;
4. Cree una
función que reciba la matricula del alumno y regrese una clasificacion de acuerdo al promedio (Use IF):
menor de 6 PA
entre 6 y menor de 7.5 BA
entre 7.5 y menor de 8.5 RP
de 8.5 y mayor ER
Funciones
- Ejecute
las siguientes instrucciones, realice las
correcciones necesarias y analice los resultados:
select 'hola'||', adios' campoconcat,
ascii('A') valorasccii,
chr(65) --caracter que corresponde al
valor numerico 65
from dual;
-- Cambio de la primera letra a mayusculas, pone todo en minusculas, pone todo en
mayusculas.
select initcap('hola'),
lower('HOLA,adIOS'), upper('hola,Adios')
from dual;
select instr('hoooola','oo'), --posicion
de la cadena de caracteres
length('hoola'), --longitud de la cadena
de caracteres
substr('lors770312',7,2) mes --obtiene una subcadena de carateres
/* substr( rfc, posicion inicial, numero de caracteres)
*/
from dual;
/* Ajusta la cadena de caracteres a la
longitude indicada, rellena con blancos o con el carácter determinado*/
select rpad('***hola***’,'*'),
lpad('
hola '),
rpad('***hola***',8,'*'),
rpad(' hola ',8)
from dual;
/*Elimina blancos o caracteres especificos
*/
select ltrim('***hola***','*'),'***hola***',
ltrim(' hola '),
rtrim('***hola***','*'),'***hola***',
rtrim(' hola ')
from dual;
select table_name,
nullable, data_precision,
decode(nullable,'N','NO PERMITE
NULOS','Y','SI PERMITE','PERMITE NULOS'),
decode(nullable,'N','NO PERMITE NULOS','S','SI PERMITE','PERMITE
NULOS'),
/* funcion que cambia un valor por otro,
trabaja por parejas y si se deja un valor al final es el de predeterminado
Ejem: decode(column name,
old_value_n1, new_value_n1) */
nvl(data_precision,0) --función que
sustituye un nulo por un valor determinado
from user_tab_cols
where table_name like
'%DEP%';
/*** FUNCIONES NUMERICAS
Round
redondea, trunc trunca***/
select 1+5, 8*10,57/2.22,
round(57/2.22,3),trunc(57/2.22,3)
from dual;
/** funciones fecha
select sysdate,
to_char(sysdate, 'dd mon yyyy hh:mi'),
-- da formato a la fecha 20 jun 2010 10:20
to_char(sysdate, 'dd month yyyy'),
add_months(sysdate,3) --agrega 3 meses a
la fecha
from dual;
- Desplegar matricula del alumno,
nombre asegurándose que este en minúsculas y que tenga dos * al principio
y al final , el teléfono sustituyendo el nulo por 0 de todos los alumnos que hayan nacido del 1990 a la fecha y cuya longitud de nombre sea
mayor de 5.
- Despliegue la palabra ‘hola’ con la función que asegure que la primera
letra este en mayúscula, el valor ASCII de la letra ‘O’ y el carácter que
corresponde al número 62, el usuario y la fecha del sistema con formato (29 JAN 2000 10:20).
- De la constante ‘prueba’ aplicar la función que
ponga en mayúscula la letra inicial, obtener la posición de la cadena de
caracteres ‘EZ’ del campo apellido
del alumno, número de caracteres del campo apellido, desplegar el nombre
en minúsculas, ajustar el campo curp a 20 caracteres agregando ** en donde sea
necesario a la izquierda y luego a la derecha , del apellido eliminar las
Z al final (derecha). De todos los alumnos cuyo nombre termine con la letra O (desplegar por lo menos 2
registros, si es necesario ingréselos.) con promedio entre 8 y 10
- Generar un listado con el nombre, apellido unido
a la palabras FELIZ CUMPLEAÑOS , día y mes del cumpleaños, de todos los
alumnos que cumplen años en el mes en curso (usando la fecha del sistema).
Ordenado por día y mes del cumpleaños.
- *Liste el
nombre de todas las tablas que creaste (usando numero de máquina).
- Despliegue
la información de la tabla constraint asegurándose que el nombre de la
tabla este en minúsculas, el nombre del constraint que empiece en
mayúsculas y el resto este en minúsculas, el tipo de constraint sustituya
C por CHECK, P por PK, R por FK, y el campo estatus. Al desplegarse ningún
valor deberá aparecer nulo, será sustituido por un *. Para una tabla
específica o si esta es nula para todas las tablas de un usuario
específico. Ordenado por nombre de la tabla y tipo constraint.
Funciones
PRACTICA 3 (viernes 12 de febrero 2016)
- Cree un procedimiento por tabla (3) que
permita insertar datos y ejecútelo, utilice MAYUSCULAS para la
información y en el orden adecuado. Deberá ingresar por lo menos 5
registros por tabla, mas los ingresados
previamente, 10 registros en total.
- Implemente un procedimiento para cada uno
de los puntos 4,5 y 8 de la Practica 2
- Cree un procedimiento que limpie la tabla
alumno_res y copie la información de la tabla alumno.
- Cree un procedimiento que haga lo necesario para eliminar a un alumno específico (respetando los constraints).
- Verifique que el AUTOCOMMIT ESTE APAGADO
(OFF)
SHOW AUTOCOMMIT
- Inserte datos a las tablas, utilice MAYUSCULAS
para la información y en el
orden adecuado. Haga los ajustes
necesarios para poder ingresar todos los registros.
Carrera
Cve_c
|
Nom_c
|
Tot_c
|
Director
|
1
|
SISTEMAS
|
100
|
JUAN
VARGAS
|
2
|
CONTABILIDAD
|
400
|
|
3
|
MERCADOTECNIA
|
C4
|
MARINA
MARTINEZ
|
Alumno
Mat
|
CvC
|
Nombre
|
Apellido
|
CURP
|
Direccion
|
SEXO
|
prom
|
Beca
|
1
|
1
|
JUAN
|
PEREZ
|
PELJ770908
|
55443344
|
H
|
6
|
0
|
2
|
10
|
MARIA
|
MARTINEZ
|
MATM751001
|
F
|
8
|
1000
|
|
3
|
3
|
ROSA
|
GONZALEZ
|
NK3399002
|
33445566
|
F
|
10
|
2000
|
Agregar 4 incidencias para dos alumnos diferentes
(usar variables).
- Salve los cambios en la BD
COMMIT
- Renuncio el director de Sistemas, realice
los ajustes necesarios
- Contrataron a Mario Martinez como director
de Contabilidad
- La tabla Incidenicias debe tener datos.
Elimine todos los Alumnos ¿Lo pudo hacer? ¿Por qué?
- Salvar los cambios hechos.
- Dar la sintaxis para incrementar la beca de
una alumno especifico en una cantidad especifica. Ejecutarlo y revisar los
cambios.
- Crear la tabla de respaldo Alumno_res con
matricula, promedio, beca y fecha del respaldo en 1 solo paso estructura y
datos.
- De Rollback y consulte la tabla de alumno para ver si ser realizaron los cambios del punto 8. ¿Qué paso y por que?
- Eliminar toda la información de la tabla Alumno_res
- Cree las siguientes tablas basándose en la descripción, elija el
tipo de dato apropiado y asegúrese de agregar los constraints necesarios
para mantener la integridad. Al
nombre de la tabla agregue
el número de máquina.
- CARRERA con clave carrera numérico de 3 PK,
nombre carrera carácter de 30 requerido, director carácter de 50 .
- ALUMNO con matricula numérico de 4 PK, Nom_a
alfanumérico de 30 requerido, Apellido_a alfanumérico de 30,CURP
requerido, cve_c FK con carrera, sexo validando valores permitidos F o M, promedio numérico acepta decimales y
validar que se encuentre entre 0 y
10, teléfono, fecha de ingreso y estatus con valor predeterminado A y que
solo permita los siguiente valores (A, B, S, BT).
- INCID con Folio numérico de 3 PK, matrícula FK con
alumno, fecha_i requerido,
Tipo_i con los siguientes valores
permitidos: F, FJ, R, RJ y
observaciones alfanumérico de 100.
- Cree la tabla RECORD con matricula fk de alumno
y parte de la PK, Mes numérico de 2
parte de la PK, total de incidencias numérico de 2, requerido,
revisar que sea mayor a 0
- Verifique que las tablas y constraints se hayan creado
correctamente consultando el diccionario de datos.
- Agregue a la tabla:
- CARRERA la columna Total de créditos validar que estén entre 300 y 900
- Alumno la columna dirección, si el valor es nulo substituir por DESCONOCIDA.
- Agregue al campo beca de la
tabla alumno, la validación para que este no pueda ser mayor a 3,000.
- Cree un objeto que permita ver solamente el nombre del alumno y teléfono. De los
empleados activos (A, V).
- Cree un objeto que agilice la búsqueda en la tabla alumno, sabiendo
que los criterios de búsqueda mas usados son fecha de ingreso y CURP.
- Cree un objeto que agilice la búsqueda en la tabla INCID basándose en la siguiente consulta
Select folio, matricula, fecha,
From INCID
Where tipo_i =’FJ’
- Cree un objeto que asegure que el CURP del alumno sea único, no use constraints.
- Elimine la columna observaciones de la tabla INCID.
Guarde las
instrucciones de la creación de estas tablas en un archivo con terminación
.sql.
Solución PRACTICA 1
- Create table CARRERA (cv_carr number(3) primary key,, nom_c varchar2(30) not null, direc_c varchar2(50) );.
- Create table ALUMNO ( matricula number(4) , Nom_a varchar2(30) not null, Apellido_a varchar2(30), CURP varchar2(20) not null, cve_c number(3) references carrera (cv_carr), sexo varchar2(1) check (sexo in ('F','M'), promedio number( 4,2) check( promedio between 0 and 10), teléfono number(10), fecha date , estatus varchar2(2) check (estatus in ('A',' B', 'S', 'BT') ).
- Create table INCID ( Folio number(3) primary key, matrícula number(4) references alumno (matricula), fecha_i date not null, Tipo_i varchar2(2) check(tipo_i in ( ' F', 'FJ', 'R', 'RJ'), observaciones varchar2(100) );
- Create table RECORD (matricula number(4) references alumno (matricula), Mes number(2) , tot_incid number(2) not null check (tot_incid >0) )
- Select table_name from user_tables where table_name = '&tabla';
- Agregue a la tabla:
- alter table CARRERA add tot_c number(3) check tot_c between 300 and 900);
- Alter table alumno add direccion varchar2(50) default 'DESCONOCIDA'
- Alter table alumno add beca number (4) check (beca <3000)
- Create view Vista as select nom_a, apellido_a, teléfono from alumno estatus in ('A', 'BT').
- Create index ialum on alumno(fecha_i, CURP)f
- Create index iincid on INCID (tipo_i)
- Create unique index icurpon alumno( CURP).
- alter table incid drop colulmn observacioens;
Este comentario ha sido eliminado por el autor.
ResponderEliminarBuenas tardes, intentare poner las practicas con una semana de anticipación para que tengan disponibles y puedan adelantar, favor de fijarse en las fechas de revisión
ResponderEliminar.
MIS EN LA PRACTICA 2 EN EL SEGUNDO PUNTO ABAJO DE LA TABLA ALUMNO DICE Agregar 4 incidencias para dos alumnos diferentes (usar variables).
ResponderEliminarSE HACE DE ESTA MANERA COMO LO HICIMOS EN CLASE O DE OTRA FORMA YA QUE NO ENTIENDO LO DE INCIDENCIAS
INSERT INTO (MAT,CVC,NOMBRE,APELLIDO,CURP,DIRECCION,SEXO,PROM,BECA)
VALUES (&MATERIA,&CLAVE,&NAME,&APELLIDO,&CLAVEC,&HUBICACION,&SE,&prom,&BECA)
Luis, una vez agregado los alumnos, por ejemplo el alumno con matricula 1, se agregan dos incidencias
ResponderEliminarinsert into INCIDENCIA (mata, ....
values (1, ....
Hola miss buen día soy Chao solo para saber si dará un repaso el día de hoy ya que tengo varias dudas en mis ejercicios saludos
ResponderEliminar