You are on page 1of 6

1. ¿Cuáles son los tipos de índices que existen en Oracle?

R/ Normal: B-tree índices por defecto en oracle


Bitmap
Particionados
Basados en función
Dominio

2. A)

APELLIDO
ID_CLIENTE NOMBRES ID_CIUDAD LIMITE_CREDITO
S
4 MATEO ERAZO 123 3000000
5 VALERIA LIZCANO 124 2000000
6 ENRIQUE MOLANO 125 1000000
7 CARLOS CASTILLO 126 3000000
8 DANIEL MORENO 127 2000000
9 FERNANDA MURILLO 128 1000000
JARAMILL
10 FABIAN 129 3000000
O
2 CAMILO RAMIREZ 121 2000000
1 LUIS SANCHEZ 120 3000000
HERNANDE
3 SOFIA 122 1000000
Z

B)
C) Ejecuta la siguientes sentencias:
a)

3. Crea una secuencia que inicie en -25 e incremente de 5 en 5, defínala como cíclica y establezca
como máximo valor 25. ¿Qué valor retorna NEXTVAL cuando se llama la duodécima vez?

R/ El NEXTVAL en la duodecima vez retorna error de SQL Statement Output


4. Los sinónimos PUBLICOS, es accesible como su nombre lo indica al usuario PUBLIC. Falso o
Verdadero.

R/ Verdadero

5. Se ejecuta la secuencia CREATE SEQUENCE SEQ_AUTOS; inmediatamente se llama la función


SEQ_AUTOS.CURRVAL que valor retorna. ¿Null? ¿0? ¿1? ¿Otro valor?

R/ Retorna Null ya que la secuencia SEQ_AUTOS no se ha creado

6. En la sentencia CREATE SEQUENCE


ord_seq INCREMENT BY 1
START WITH 1
MAXVALUE 100000
CACHE 5000;
¿Cuál es la función cumple el predicado CACHE?

R/ La función del CACHE se usa para para mejorar el rendimiento al preasignar valores de
secuencia en caché. El valor predeterminado de CACHE es 20 en Oracle. En este cas oel cache es de
5000

7. Al borrar una tabla que usa para una de sus columnas un valor por defecto de una secuencia, la
secuencia se invalida. Falso o Verdadero.

R/ Falso

8. La respuesta es la A

9. Al haber ejecutado la sentencia SELECT seqUno.nextval FROM dual; me retorna valor 100, la
respuesta correcta es la B

10. A) Se crea primero la secuencia con la siguiente sentencia

CREATE SEQUENCE SEQ_MEMBER

START WITH 1
INCREMENT BY 1
MAXVALUE 999999
NOCYCLE
NOCACHE;

Posterior a crear la secuencia procedemos a crear la tabla donde se define el campo MEMBER_ID
para que su valor sea tomado de forma secuencial al momento de insertar un registro. Se debe
crear un disparador que se activa antes de la inserción de cada fila en la tabla "MEMBERS". El
disparador asigna el valor de la secuencia a la columna "MEMBER_ID" utilizando la función "LPAD"
para rellenar el número con ceros a la izquierda y agregar la letra "M" al principio.

CREATE TABLE MEMBERS (


MEMBER_ID VARCHAR2(6) NOT NULL,
FIRST_NAME VARCHAR2(50),
LAST_NAME VARCHAR2(50) NOT NULL,
ADDRESS VARCHAR2(50),
CITY VARCHAR2(25),
STATE VARCHAR2(3),
CONSTRAINT MEMBERS_PK PRIMARY KEY (MEMBER_ID)
);

CREATE OR REPLACE TRIGGER MEMBERS_BI


BEFORE INSERT ON MEMBERS
FOR EACH ROW
BEGIN
:NEW.MEMBER_ID := 'M' || LPAD(seq_member.NEXTVAL, 5, '0');
END;

B) Para crear un índice en la concatenación de las columnas FIRST_NAME y LAST_NAME, usa la


siguiente sentencia

CREATE INDEX members_name_idx


ON members (first_name || ' ' || last_name);

Para validar que el plan de ejecución use este índice cuando se consulta por el nombre completo,
uso la siguiente sentencia:

EXPLAIN PLAN FOR


SELECT *
FROM members
WHERE first_name || ' ' || last_name = 'Charles down';

Luego, podemos ejecutar la siguiente sintaxis para ver el plan de ejecución:

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());

C) La sentencia ha generado números hasta el máximo de 999999 y luego se altera para tener un
MAXVALUE de 8, al intentar insertar un nuevo registro, la secuencia lanzará un error indicando que
ha llegado al límite máximo de 8. Por lo tanto, al intentar insertar los 4 registros adicionales
después de la alteración, se muestra un error y no se insertarán registros nuevos.

D) uso la siguiente sentencia para crear un índice para la columna STATE

CREATE INDEX members_state_idx


ON members (state);

Para el plan de ejecución de las entencias entregadas usamos las siguientes sentencias
para cada uno

EXPLAIN PLAN FOR


SELECT *
FROM members
WHERE state LIKE '%A%';

EXPLAIN PLAN FOR


SELECT *
FROM members
WHERE state LIKE '%A';

EXPLAIN PLAN FOR


SELECT *
FROM members
WHERE state LIKE 'A%';

EXPLAIN PLAN FOR


SELECT *
FROM members
WHERE state LIKE 'A';

Y con la siguiente sentencia vemos los planes de ejecución de cada uno de los querys

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());

You might also like