Está en la página 1de 3

INSTITUTO PROFESIONAL VIRGINIO GMEZ ESCUELA DE INFORMTICA

BASES DE DATOS / TNS COMP. E INF. CERTAMEN N 1


(29/05/2012)

NOMBRE: ______________________________________________________________________________ Pregunta 1: Crear la siguiente tabla a travs de SQL considerando restricciones con nombre y actualizacin a nulo cuando sea necesario. Tanto el tipo de datos como el tamao debe definirlos adecuadamente. Considere adems que el Hab_Ciudad no puede ser 0 o menor, al igual que Km2. Tipo slo pude ser Urbana o Rural. (20 puntos) Nombre de la tabla: Ciudad

#Cod_Ciudad 1001 1002 1003

Nombre_Ciudad LOS ANGELES Chilln RANCAGUA

Hab_Ciudad Km2 Tipo 117972 27,35 146701 33,41 206971 50,36

Hombres Urbana Urbana Rural 56790 100968

Mujeres 61182 106003

CREATE TABLE CIUDAD(COD_CIUDAD NUMBER(5), NOMBRE_CIUDAD VARCHAR2(25) NOT NULL, HAB_CIUDAD NUMBER(7) NOT NULL, KM2 NUMBER(4,2) NOT NULL, TIPO VARCHAR2(6) NOT NULL, HOMBRES NUMBER(7), MUJERES NUMBER(7), CONSTRAINT PKCIU PRIMARY KEY(COD_CIUDAD), CONSTRAINT CHKHCIU CHECK (HAB_CIUDAD > 0), CONSTRAINT CHKKMCIU CHECK (KM2 > 0), CONSTRAINT CHKTCIU CHECK (TIPO IN('Urbana','Rual'));

Pregunta 2: Cree una secuencia llamada Sec_Ciudad, para utilizarlo en el campo Cod_Ciudad de la tabla anterior. Iniciada e incrementada de acuerdo a los valores del campo indicado (ver tabla), no cclico y con un valor mximo de 9999. (5 puntos)

CREATE SEQUENCE SEC_CIUDAD START WITH 1001 INCREMENT BY 1 MAXVALUE 9999 NOCYCLE;
1 BASE DE DATOS / ORACLE 9I

INSTITUTO PROFESIONAL VIRGINIO GMEZ ESCUELA DE INFORMTICA Pregunta 3: Indique la sentencia SQL para insertar los dos primeros registros de la tabla anterior, considerando que se ejecutarn las dos inserciones al mismo tiempo. Para ello debe hacer uso de la secuencia creada en el punto anterior. (10 puntos)
INSERT INTO CIUDAD VALUES(SEC_CIUDAD.NEXTVAL,'LOS ANGELES',117972,27.35,'URBANA',56790,61182); INSERT INTO CIUDAD VALUES(SEC_CIUDAD.NEXTVAL,'Chilln',146701,33.41,'URBANA',NULL,NULL); otra forma: INSERT INTO CIUDAD(COD_CIUDAD, NOMBRE_CIUDAD, HAB_CIUDAD, KM2, TIPO, HOMBRES, MUJERES) VALUES(SEC_CIUDAD.NEXTVAL,'LOS ANGELES',117972,27.35,'URBANA',56790,61182); INSERT INTO CIUDAD(COD_CIUDAD, NOMBRE_CIUDAD, HAB_CIUDAD, KM2, TIPO, HOMBRES, MUJERES) VALUES(SEC_CIUDAD.NEXTVAL,'Chilln',146701,33.41,'URBANA',NULL,NULL); Otra forma para los Nulos. INSERT INTO CIUDAD(COD_CIUDAD, NOMBRE_CIUDAD, HAB_CIUDAD, KM2, TIPO) VALUES(SEC_CIUDAD.NEXTVAL,'Chilln',146701,33.41,'URBANA');

Pregunta 4: Dada la tabla anterior obtenga, por medio de SQL, los siguientes informes o listados a) Un listado de todas las ciudades con ms de cien mil habitantes, donde el nmero de mujeres sea mayor al de hombres. Debe mostrar el Nombre de la Ciudad en maysculas junto a su cdigo separados por el smbolo -, en una sola columna llamada Ciudad, adems debe mostrar el campo Hombres, Mujeres y la diferencia entre ellos (Mujeres Hombres) llamada Diferencia. Todo ordenado por Nombre de la Ciudad (10 puntos) SELECT UPPER(NOMBRE_CIUDAD)||'-'||COD_CIUDAD AS CIUDAD, HOMBRES, MUJERES, (MUJERES - HOMBRES) AS DIFERENCIA FROM CIUDAD WHERE HAB_CIUDAD > 100000 AND MUJERES > HOMBRES ORDER BY NOMBRE_CIUDAD

b) Indique el nmero total de habitantes mujeres. (10 puntos)

SELECT SUM(MUJERES) FROM CIUDAD

c) Indique el total de Km2 de las ciudades de Los ngeles y Chilln, considerando que usted no tiene certeza de si los datos estn escritos con maysculas o minsculas. (10 puntos)

SELECT SUM(KM2) FROM CIUDAD WHERE UPPER(NOMBRE_CIUDAD) = 'LOS ANGELES' OR UPPER(NOMBRE_CIUDAD) = 'CHILLAN'

2 BASE DE DATOS / ORACLE 9I

INSTITUTO PROFESIONAL VIRGINIO GMEZ ESCUELA DE INFORMTICA

d) Listado de todas las ciudades rurales, cuyos Km2 sean menor a 5. Debe mostrar el Nombre de la Ciudad en minsculas, cantidad de hombres y mujeres, en el caso de que existan valores nulos (en ambos casos) debe aparecer un cero. (15 puntos)

SELECT LOWER(NOMBRE_CIUDAD), NVL(HOMBRES,0), NVL(MUJERES,0) FROM CIUDAD WHERE TIPO = 'Rural' AND KM2 > 12

Pregunta 5: Dado el siguiente modelo, obtenga un listado de todos los buses cuya patente tenga menos de 6 caracteres, que pertenezcan al tramo Chilln y al Tramo Los ngeles, ordenados por marca. Debe mostrar: Patente, Nombre del Tramo y la Marca. (20 puntos)

SELECT NOMBRE, FEC_REV, OBSERVACION, PATENTE FROM REVISION R JOIN SUPERVISOR S ON R.COD_SUP = S.COD_SUP JOIN BUS B ON R.COD_BUS = B.COD_BUS WHERE LENGTH (PATENTE) < 6 AND NOMBRE = 'Chilln' OR NOMBRE = 'LOS ANGELES' ORDER BY MARCA

Suerte (los que estudiaron no la necesitan)

3 BASE DE DATOS / ORACLE 9I