2. Para el siguiente subquery: Select * from tr3 where b3 _____ (select b1 from tr4) Complete el operador que “siempre” haría que funcione (no cause un error) a) = b) in c) like d) is null
3. La instrucción: Select * from tr4 left join tr5 on tr4.id = tr5.id and 5=2 Retorna: a) Todos los registros de la tabla tr4 b) Todos los registros de la tabla tr5 c) Ningún registro d) Nada de lo anterior
4. La instrucción: Select * from tr4 inner join tr5 on tr4.id = tr5.id and 5=2 Retorna: e) Todos los registros de la tabla tr4 f) Todos los registros de la tabla tr5 g) Ningún registro h) Nada de lo anterior
5. Considerando el siguiente DDL: Create table tr6 (id int primary key, c1 int) Create table tr7 (id int primary key, c2 int) Create view VW1 as select tr6.c1, tr7.c2 from tr6 inner join tr7 on tr6.id =tr7.id En caso de que sean posibles ejecutar las siguientes instrucciones ¿cómo se afectan a las tablas tr6 y tr7? Insert into VW1 (c1, c2) values (1, 2) update VW1 set c1 = 3 where c2 = 2 ORA-01776: no se puede modificar más de una tabla base a través de una vista de unión Tr6 cambia el valor de c1. Tr7 no cambia nada.
6. Una empresa que presta los servicios de parqueos para diferentes edificios o centros comerciales, que permite controlar el ingreso y la salida de los vehículos, tiene el siguiente modelo lógico.
7.
8. 1. Escriba el script del DDL que permita desarrollar la creación del modelo lógico de parqueo. CREATE TABLE tb_parqueo( id_parqueo INTEGER notnull, nombre CHAR(50)null, PRIMARY KEY (id_parqueo) ); CREATE TABLE tb_marca( id_marca INTEGER notnull, descripcion_marca CHAR(30)null, PRIMARY KEY (id_marca) ); CREATE TABLE tb_posicion_parqueo( id_posicion INTEGER notnull, id_parqueo INTEGER null, piso CHAR(2)null, posicion CHAR(2)null, PRIMARY KEY (id_posicion), FOREIGN KEY (id_parqueo) REFERENCES tb_parqueo(id_parqueo)); CREATE TABLE tb_Acceso( id_acceso INTEGER notnull, id_parqueo INTEGER null, nombre CHAR(50)notnull,tipo CHAR(20)notnull, PRIMARY KEY (id_acceso), FOREIGN KEY (id_parqueo) REFERENCES tb_parqueo(id_parqueo)); CREATE TABLE tb_persona( id_persona INTEGER notnull, cedula CHAR(13)notnull, nombre CHAR(30)notnull, apellido CHAR(30)notnull, telefono CHAR(30)notnull, sexo CHAR(1)notnull, PRIMARY KEY (id_persona));
10. 2. La tabla tb_persona tiene el índice idx_1 que contiene el campo apellido agregue el campo nombre a este índice. dropindex idx_1; createindex idx_1 ontb_persona(nombre,apellido);
11. 3. Ingrese un nuevo usuario con User: CLIO y Password: QWERTY2. Y que cumpla con el siguiente nivel de seguridad. create user CLIO identified by QWERTY2; GRANT SELECT ON tb_marca TO CLIO; GRANT SELECT, INSERT ON tb_vehiculo TO CLIO; GRANT SELECT ON tb_parqueo TO CLIO; GRANT SELECT, INSERT ON tb_posicion_parqueo TO CLIO; GRANT SELECT ON tb_acceso TO CLIO; GRANT SELECT, INSERT ON tb_persona TO CLIO; GRANT SELECT, INSERT, UPDATE ON tb_ingreso_salida TO CLIO;
12. 5. Los campos id_acceso_entrada, id_conductor, id_vehiculo, fecha_entrada, y hora de entrada, de la tabla tb_ingreso_salida, permiten valores null. Altere la tabla para que estos campos no permitan valores nulos. 6. Cree una vista que permita tener mostrar el siguiente reporte: Placa del vehiculo, Conductor del Vehiculo, Dueño del Vehiculo, Fecha de Entrada, Hora de Entrada y Nombre del parqueo. alter tabletb_ingreso_salidamodify (id_acceso_entradaintegernotnull, id_conductorintegernotnull, id_vehiculointegernotnull, fecha_entrada DATE notnull, hora_entrada TIMESTAMP notnull); createview Reporte as (selectv.placa, i.id_conductor, v.id_dueno, i.fecha_entrada,i.hora_entrada,p.nombre fromtb_vehiculo v, tb_ingreso_salida i, tb_parqueo p, tb_posicion_parqueopp wherev.id_vehiculo=i.id_vehiculo and i.id_posicion=pp.id_posicion and pp.id_parqueo=p.id_parqueo);
13. 7. Indique cuál es el acceso que tiene más frecuencia de salida en el año 2007. 8. ¿Cuál es la persona que mas ha ingresado durante el mes Agosto/2007, al parqueo de “Piedra Larga”? selectid_acceso_salida, count(id_acceso_salida) fromtb_ingreso_salida whereto_number(fecha_salida, ‘YYYY') = 2007 groupbyid_acceso_salida havingcount (id_acceso_salida)=max(id_acceso_salida) selectid_conductor,count(id_conductor) fromtb_ingreso_salida i ,tb_posicion_parqueo p ,tb_parqueopp whereto_char(fecha_entrada, 'MON-YYYY') like '%AGO-2007' and i.id_posicion = p.id_posicion and pp.id_parqueo = p.id_parqueo and nombre='Piedra Larga' groupbyid_conductor havingcount(id_conductor)=max(id_conductor)
14. 9. ¿Cuál es la persona que siempre ha ingresado con su vehículo a cualquier centro comercial, durante el año 2007? selectid_conductor fromtb_ingreso_salidai,tb_vehiculov,tb_parqueop,tb_posicion_parqueopp wherei.id_vehiculo=v.id_vehiculo and id_conductor=id_dueno and i.id_ingreso_salida=pp.id_posicion and pp.id_parqueo=p.id_parqueo and p.nombrelike '%Centro Comercial%' and to_char(fecha_entrada, ‘YYYY') =‘2007'
15. 10. Se necesita un reporte que contenga nombre del parqueo, posición del parqueo, fecha de ingreso, hora de ingreso, acceso de ingreso, conductor, marca del vehiculo y placa del vehiculo; de todos los vehículos que se encuentran actualmente usando los parqueos. selectp.nombre,i.id_posicion,i.fecha_entrada,i.hora_entrada, i.id_acceso_entrada,i.id_conductor,v.id_marca,v.placa fromtb_ingreso_salidai,tb_vehiculov,tb_parqueop,tb_posicion_parqueopp wherei.id_vehiculo=v.id_vehiculo and i.id_ingreso_salida=pp.id_posicion and pp.id_parqueo=p.id_parqueo and i.fecha_salidaisnull
16. 11. Se ha detectado que desde Febrero del 2007 hasta Julio del 2007 el reloj del acceso de salida “Juan Tanca Marengo” del “Centro Comercial DIC” tiene un retraso de 5 min. Corrija el tiempo de salida en la tabla tb_ingreso_salida. updatetb_ingreso_salida set hora_salida=hora_salida+5/1440 whereid_acceso_salida=(selectid_acceso fromtb_Accesoa,tb_parqueo p wherep.id_parqueo=a.id_parqueo and a.nombre='Juan Tanca Marengo' and p.nombre='Centro Comercial DIC') and fecha_salida BETWEEN TO_DATE('01-FEB-07','DD-MON-YY') AND TO_DATE('01-JUL-07','DD-MON-YY')