Tareas, practicas


Practicas solucionadas



    PRACTICA 6  y 7 (viernes 1 abril)

    Practica 7 (viernes 1 abril)

    En esta practicar usara sub consultas independientes y correlacionadas, asi como funciones de grupo que puede ver en la pagina funciones
    1. Despliegue el nombre completo del alumno, su promedio y beca, de los alumnos que pertenezcan a las carreras 1,4 y 5.
    2. 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.
    3. 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.
    4. Despliegue la clave de las carreras con director
    5. 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)
    6. Genere una lista de carreras  que no tengan ningún  alumno. (usar subquery independiente y correlacionado)
    7. Desplegar la clave y nombre  de las carreras  que tengan más de 2 alumnos   con estatus activo “A”. (usar subquery independiente y correlacionado)
    8. Genere una lista de alumnos que tengan  más de 2 faltas injustificadas en el mes. (usar subquery independiente y correlacionado)
    9. 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
    10. *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
    11. 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.
    12. *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.
    13. 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)

    1. 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.
    2. 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.
    3. 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)

    1. 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.
    2. 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.
    3. 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.
    1. Evaluar cada una de las siguientes declaraciones. Determinar si es permitida o no y explicar por qué.
    Declare
      1. V_id                number(4);
      2. V_x,v_y, v_z    varchar2(10);
      3. V_fcump                     date not null;
      4. V_en_stock      boolena:=1;
         2.En cada una de las siguiente asignaciones determine el tipo de dato del  resultado de          la expresión.
      1. V_dia := v_fecha – sysdate;
      2. V_envio:= user|| ‘: ‘ || to_char(v_cve_dep);
      3. V_suma := 100+250;
      4. V_flag := TRUE;
      5. V_n1 := v_n2 > (2*v_n3);
      6. V_valor := null;
          3.Evalue el siguiente bloque anónimo y determine el valor de las siguientes variables              (indique el motivo del error y comente en caso de ser necesario):
      1. Valor de v_peso en subbloque.
      2. Valor de v_nva_loc en subbloque.
      3. Valor de v_mensaje en subbloque.
      4. Valor de v_peso en bloque principal.
      5. 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

    PRACTICA 4 (vierenes 19)
    Funciones

    1. 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;


    1. 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.
    2. 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).
    3. 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
    4. 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.
    5. *Liste el nombre de todas las tablas que creaste (usando numero de máquina).
    6. 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)




    1. 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.

    1. Implemente un procedimiento para cada uno de los puntos 4,5 y 8 de la Practica 2


    1. Cree un procedimiento que limpie la tabla alumno_res y copie la información de la tabla alumno.
    2. Cree un procedimiento que haga lo necesario para eliminar a un alumno específico (respetando los constraints).

    PRACTICA 2 ( viernes 5 de febrero 2016)


    1. Verifique que el AUTOCOMMIT ESTE APAGADO (OFF)

    SHOW AUTOCOMMIT

    1. 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).
    1. Salve los cambios en la BD
    COMMIT

    1. Renuncio el director de Sistemas, realice los ajustes necesarios
    2. Contrataron a Mario Martinez como director de Contabilidad
    3. La tabla Incidenicias debe tener datos. Elimine todos los Alumnos ¿Lo pudo hacer? ¿Por qué?
    4. Salvar los cambios hechos.
    5. Dar la sintaxis para incrementar la beca de una alumno especifico en una cantidad especifica. Ejecutarlo y revisar los cambios.
    6. Crear la tabla de respaldo Alumno_res con matricula, promedio, beca y fecha del respaldo en 1 solo paso estructura y datos.
    7. De Rollback y consulte la tabla de alumno  para ver si ser realizaron los cambios del punto 8. ¿Qué paso y por que?
    8. Eliminar toda la información de la tabla Alumno_res

    PRACTICA 1

    1. 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.
      1. CARRERA con clave carrera numérico de 3 PK, nombre carrera carácter de 30 requerido, director carácter de 50 .
      2.  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).
      3. 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.
      4. 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
    2. Verifique que las tablas y constraints se hayan creado correctamente consultando el diccionario de datos.
    3. Agregue a la tabla:
      1.  CARRERA  la columna  Total de créditos  validar que estén entre 300 y 900
      2. Alumno la columna dirección, si el valor es nulo substituir por DESCONOCIDA.
    4.  Agregue al campo beca de la tabla alumno, la validación para que este no pueda ser mayor a 3,000.
    5. Cree un objeto que permita ver solamente el nombre del  alumno y teléfono. De los empleados activos (A, V).
    6. 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.
    7. 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’

    1. Cree un objeto que asegure que el CURP del  alumno sea único, no use constraints.
    2. 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
      1. Create table CARRERA (cv_carr number(3) primary key,,                                                                                                                                 nom_c    varchar2(30) not null,                                                                                                                                       direc_c    varchar2(50)   );.
      2.  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') ).
      3. 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)  );
      4. Create table  RECORD  (matricula  number(4) references  alumno (matricula),                                                                                                 Mes number(2) , tot_incid number(2) not null check (tot_incid >0) )

    1. Select table_name from user_tables where table_name = '&tabla';
    2. Agregue a la tabla:
      1.  alter table CARRERA add tot_c number(3) check tot_c between 300 and 900);
      2. Alter table alumno add direccion varchar2(50) default 'DESCONOCIDA'
    3.  Alter table alumno add beca number (4) check (beca <3000)
    4. Create view Vista as                                                                                                                                                                         select nom_a, apellido_a, teléfono                                                                                                                                                from alumno                                                                                                                                                                                       estatus in ('A', 'BT').
    5. Create index ialum on  alumno(fecha_i, CURP)f
    6. Create index iincid on   INCID (tipo_i)


    1. Create unique index icurpon alumno( CURP).
    2. alter table incid drop colulmn observacioens;

    5 comentarios:

    1. Este comentario ha sido eliminado por el autor.

      ResponderEliminar
    2. Buenas 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
    3. MIS EN LA PRACTICA 2 EN EL SEGUNDO PUNTO ABAJO DE LA TABLA ALUMNO DICE Agregar 4 incidencias para dos alumnos diferentes (usar variables).
      SE 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)

      ResponderEliminar
    4. Luis, una vez agregado los alumnos, por ejemplo el alumno con matricula 1, se agregan dos incidencias
      insert into INCIDENCIA (mata, ....
      values (1, ....

      ResponderEliminar
    5. 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