Las mejores preguntas de la entrevista de Oracle: Preguntas básicas, SQL y PL/SQL de Oracle

Preguntas y respuestas más frecuentes de las entrevistas de Oracle:

Las 40 mejores preguntas de la entrevista de Oracle junto con las respuestas que cubren casi todos los conceptos básicos de Oracle.

Esta es una serie en profundidad que cubre casi todas las preguntas de la entrevista Oracle:

Parte nº 1: Preguntas sobre Oracle Basic, SQL y PL/SQL (este artículo)

Parte nº 2: Preguntas sobre Oracle DBA, RAC y ajuste del rendimiento

Parte nº 3: Preguntas de la entrevista de Oracle Forms and Reports

Parte nº 4: Preguntas de la entrevista técnica de Oracle Apps y Oracle SOA

Empecemos con el primer artículo de la serie.

Tipos de preguntas tratadas en este artículo:

  • Preguntas básicas de la entrevista Oracle
  • Preguntas de la entrevista Oracle SQL
  • Preguntas de la entrevista Oracle PL/SQL

Si está pensando en presentarse a una entrevista sobre Oracle, las preguntas de este artículo le serán de gran ayuda.

¡Adelante!

Lista de las principales preguntas de la entrevista de Oracle

P #1) ¿Qué es Oracle y cuáles son sus diferentes ediciones?

Contesta: Oracle es una de las bases de datos más populares de Oracle Corporation, que trabaja con conceptos de gestión relacional, por lo que también se conoce como Oracle RDBMS. Se utiliza ampliamente para el procesamiento de transacciones en línea, el almacenamiento de datos y la informática grid empresarial.

P #2) ¿Cómo identificará la versión de software de Oracle Database?

Contesta: Oracle sigue una serie de formatos para cada versión.

Por ejemplo ,

La versión 10.1.0.1.1 puede ser referida como:

10: Número de versión principal de la base de datos

1: Número de versión de mantenimiento de BD

0: Número de versión del servidor de aplicaciones

1: Número de versión específico del componente

1: Número de versión específico de la plataforma

P #3) ¿Cómo diferenciar entre VARCHAR & VARCHAR2?

Contesta: Tanto VARCHAR & VARCHAR2 son tipos de datos de Oracle que se utilizan para almacenar cadenas de caracteres de longitud variable. Sus diferencias son:

  • VARCHAR puede almacenar caracteres de hasta 2000 bytes, mientras que VARCHAR2 puede almacenar hasta 4000 bytes.
  • VARCHAR mantendrá el espacio para los caracteres definidos durante la declaración aunque no se utilicen todos, mientras que VARCHAR2 liberará el espacio no utilizado.

P #4) ¿Cuál es la diferencia entre los comandos TRUNCATE & DELETE?

Contesta: Ambos comandos se utilizan para eliminar datos de la base de datos.

La diferencia entre ambos incluye:

  • TRUNCATE es una operación DDL mientras que DELETE es una operación DML.
  • TRUNCATE elimina todas las filas, pero deja intacta la estructura de la tabla. No se puede revertir, ya que emite COMMIT antes y después de la ejecución del comando, mientras que el comando DELETE se puede revertir.
  • El comando TRUNCATE liberará el espacio de almacenamiento del objeto mientras que el comando DELETE no lo hace.
  • TRUNCATE es más rápido que DELETE.

P #5) ¿Qué se entiende por tipo de datos RAW?

Contesta: El tipo de datos RAW se utiliza para almacenar datos binarios de longitud variable o cadenas de bytes.

La diferencia entre el tipo de datos RAW & VARCHAR2 es que PL/SQL no reconoce este tipo de datos y por lo tanto, no puede hacer ninguna conversión cuando los datos RAW se transfieren a diferentes sistemas. Este tipo de datos sólo puede ser consultado o insertado en una tabla.

Sintaxis: RAW (precisión)

P #6) ¿Qué se entiende por Joins? Enumere los tipos de Joins.

Contesta: Las uniones se utilizan para extraer datos de varias tablas utilizando algunas columnas o condiciones comunes.

Existen varios tipos de uniones, como se indica a continuación:

  • INNER JOIN
  • OUTER JOIN
  • UNIONES CRUZADAS o PRODUCTO CARTESIANO
  • EQUI JOIN
  • ANTI JOIN
  • SEMI JOIN

P #7) ¿Cuál es la diferencia entre las funciones SUBSTR & INSTR?

Contesta:

  • La función SUBSTR devuelve la subparte identificada por valores numéricos de la cadena proporcionada.
    • Por ejemplo , [SELECT SUBSTR ('India es mi país, 1, 4) from dual] devolverá "Indi".
  • INSTR devolverá el número de posición de la subcadena dentro de la cadena.
    • Por ejemplo , [SELECT INSTR ('India es mi país, 'a') from dual] devolverá 5.

P #8) ¿Cómo podemos encontrar los valores duplicados en una tabla Oracle?

Contesta: Podemos utilizar el siguiente ejemplo de consulta para obtener los registros duplicados.

 SELECT EMP_NAME, COUNT (EMP_NAME) FROM EMP GROUP BY EMP_NAME HAVING COUNT (EMP_NAME)> 1; 

P #9) ¿Cómo funciona la sentencia ON-DELETE-CASCADE ¿Trabajar?

Contesta: Utilizando ON DELETE CASCADE se borrará automáticamente un registro en la tabla hija cuando el mismo se borre de la tabla padre. Esta sentencia se puede utilizar con Claves Foráneas.

Podemos añadir la opción ON DELETE CASCADE a una tabla existente utilizando el siguiente conjunto de comandos.

Sintaxis:

 ALTER TABLE CHILD_T1 ADD CONSTRAINT CHILD_PARENT_FK REFERENCES PARENT_T1 (COLUMN1) ON DELETE CASCADE; 

P #10) ¿Qué es una función NVL? ¿Cómo se puede utilizar?

Contesta: NVL es una función que ayuda al usuario a sustituir el valor si se encuentra null para una expresión.

Se puede utilizar como la siguiente sintaxis.

 NVL (Valor_In, Reemplazar_Con) 

P #11) ¿Cuál es la diferencia entre una Clave Primaria & una Clave Única?

Contesta: La clave primaria se utiliza para identificar cada fila de la tabla de forma única, mientras que una clave única evita los valores duplicados en una columna de la tabla.

A continuación se indican algunas diferencias:

  • La clave primaria sólo puede ser una en la tabla, mientras que las claves únicas pueden ser múltiples.
  • La clave primaria no puede contener ningún valor nulo, mientras que la clave única permite múltiples valores nulos.
  • La clave primaria es un índice agrupado, mientras que la clave única es un índice no agrupado.

P #12) ¿En qué se diferencia el comando TRANSLATE del REPLACE?

Contesta: El comando TRANSLATE traduce uno a uno los caracteres de la cadena proporcionada por el carácter de sustitución. El comando REPLACE sustituye un carácter o un conjunto de caracteres por una cadena de sustitución completa.

Por ejemplo:

 TRANSLATE ('Missisippi','is','15) => M155151pp1 REPLACE ('Missisippi','is','15) => M15s15ippi 

P #13) ¿Cómo podemos averiguar la fecha y hora actuales en Oracle?

Contesta: Podemos encontrar la fecha y hora actual utilizando el comando SYSDATE en Oracle.

Sintaxis:

 SELECT SYSDATE en CURRENT_DATE desde dual; 

P #14) ¿Por qué utilizamos la función COALESCE en Oracle?

Contesta: La función COALESCE se utiliza para devolver la primera expresión no nula de la lista de argumentos proporcionados en la expresión. Debe haber un mínimo de dos argumentos en una expresión.

Sintaxis:

 COALESCE (expr 1, expr 2, expr 3...expr n) 

P #15) ¿Cómo escribir una consulta para obtener los estudiantes de 5to RANK de la tabla STUDENT_REPORT?

Respuesta: La consulta será la siguiente:

 SELECT TOP 1 RANK FROM (SELECT TOP 5 RANK FROM STUDENT_REPORT ORDER BY RANK DESC) AS STUDENT ORDER BY RANK ASC; 

P #16) ¿Cuándo se utiliza la cláusula GROUP BY en una consulta SQL?

Contesta: La cláusula GROUP BY se utiliza para identificar y agrupar los datos por una o más columnas en los resultados de la consulta. Esta cláusula se utiliza a menudo con funciones agregadas como COUNT, MAX, MIN, SUM, AVG, etc.

Sintaxis:

 SELECT COLUMN_1, COLUMN_2 FROM TABLENAME WHERE [condición] GROUP BY COLUMN_1, COLUMN_2 

P #17) ¿Cuál es la forma más rápida de obtener los datos de una tabla?

Contesta: La forma más rápida de obtener los datos sería utilizar ROWID en la consulta SQL.

P #18) ¿Dónde utilizamos las sentencias DECODE y CASE?

Contesta: Ambas sentencias DECODE & CASE funcionarán como sentencias IF-THEN-ELSE y son alternativas entre sí. Estas funciones se utilizan en Oracle para transformar los valores de los datos.

Por ejemplo:

Función DECODE

 Select ORDERNUM, DECODE (STATUS,'O', 'ORDERED','P', 'PACKED,'S','SHIPPED','A','ARRIVED') FROM ORDERS; 

CASO Función

 Select ORDERNUM , CASE (WHEN STATUS ='O' then 'ORDERED' WHEN STATUS ='P' then PACKED WHEN STATUS ='S' then 'SHIPPED' ELSE 'ARRIVED') END FROM ORDERS; 

Ambos comandos mostrarán los números de pedido con sus respectivos estados como,

Si,

Estado O= Encargado

Estado P= Envasado

Estado S= Enviado

Estado A= Llegada

P #19) ¿Por qué necesitamos restricciones de integridad en una base de datos?

Contesta: Las restricciones de integridad son necesarias para hacer cumplir las reglas de negocio con el fin de mantener la integridad de la base de datos y evitar la entrada de datos no válidos en las tablas. Con la ayuda de las restricciones mencionadas a continuación, se pueden mantener las relaciones entre las tablas.

Se dispone de varias restricciones de integridad que incluyen Clave primaria, Clave foránea, CLAVE ÚNICA, NOT NULL y CHECK.

P #20) ¿Qué significa MERGE en Oracle y cómo podemos fusionar dos tablas?

Contesta: La sentencia MERGE se utiliza para fusionar los datos de dos tablas. Selecciona los datos de la tabla de origen y los inserta/actualiza en la otra tabla basándose en la condición proporcionada en la consulta MERGE.

Sintaxis:

 MERGE INTO TARGET_TABLE_1 USING SOURCE_TABLE_1 ON SEARCH_CONDITION WHEN MATCHED THEN INSERT (COL_1, COL_2...) VALUES (VAL_1, VAL_2...) WHERE  WHEN NOT MATCHED THEN UPDATE SET COL_1=VAL_1, COL_2=VAL_2... WHEN  

P #21) ¿Cuál es el uso de las funciones Agregadas en Oracle?

Contesta: Las funciones de agregado realizan operaciones de resumen sobre un conjunto de valores para proporcionar un único valor. Existen varias funciones de agregado que utilizamos en nuestro código para realizar cálculos. Estos son:

  • AVG
  • MIN
  • MAX
  • CONTAR
  • SUM
  • STDEV

P #22) ¿Para qué sirven los operadores de conjunto UNION, UNION ALL, MINUS & INTERSECT?

Contesta: El operador set facilita al usuario la obtención de datos de dos o más tablas a la vez si las columnas y los tipos de datos relativos son los mismos en las tablas de origen.

  • UNIÓN devuelve todas las filas de ambas tablas excepto las filas duplicadas.
  • UNIÓN TODOS devuelve todas las filas de ambas tablas junto con las filas duplicadas.
  • MENOS devuelve filas de la primera tabla, que no existen en la segunda tabla.
  • INTERSECT devuelve sólo las filas comunes de ambas tablas.

P #23) ¿Podemos convertir una fecha a char en Oracle y si es así, cuál sería la sintaxis?

Contesta: Podemos utilizar la función TO_CHAR para realizar la conversión anterior.

Sintaxis:

 SELECT to_char (to_date ('30-01-2018', 'DD-MM-YYYY'), 'YYYY-MM-DD') FROM dual; 

P #24) ¿Qué se entiende por transacción de base de datos & qué todas las sentencias TCL están disponibles en Oracle?

Contesta: Una transacción se produce cuando un conjunto de sentencias SQL se ejecutan de una sola vez. Para controlar la ejecución de estas sentencias, Oracle ha introducido TCL, es decir, sentencias de control de transacciones que utilizan un conjunto de sentencias.

El conjunto de declaraciones incluye:

  • COMPROMETERSE: Se utiliza para hacer permanente una transacción.
  • ROLLBACK: Se utiliza para revertir el estado de la base de datos al punto de confirmación anterior.
  • SAVEPOINT: Ayuda a especificar un punto de transacción al que se puede hacer rollback más tarde.

P #25) ¿Qué entiendes por objeto de base de datos? ¿Puedes enumerar algunos de ellos?

Contesta: El objeto utilizado para almacenar los datos o las referencias de los datos en una base de datos se conoce como objeto de base de datos. La base de datos consta de varios tipos de objetos de base de datos, como tablas, vistas, índices, restricciones, procedimientos almacenados, disparadores, etc.

P #26) ¿Qué es una tabla anidada y en qué se diferencia de una tabla normal?

Contesta: Una tabla anidada es un objeto de colección de la base de datos, que puede almacenarse como columna en una tabla. Mientras se crea una tabla normal, se puede hacer referencia a toda una tabla anidada en una sola columna. Las tablas anidadas sólo tienen una columna sin restricción de filas.

Por ejemplo:

 CREATE TABLE EMP ( EMP_ID NUMBER, EMP_NAME TYPE_NAME) 

Aquí, estamos creando una tabla normal como EMP y haciendo referencia a una tabla anidada TYPE_NAME como columna.

P #27) ¿Podemos guardar imágenes en una base de datos y, en caso afirmativo, cómo?

Contesta: BLOB son las siglas de Binary Large Object (objeto binario de gran tamaño), un tipo de datos que se utiliza generalmente para almacenar imágenes, archivos de audio y de vídeo, o algunos ejecutables binarios.

P #28) ¿Qué entiende por esquema de base de datos y qué contiene?

Contesta: El esquema es una colección de objetos de base de datos propiedad de un usuario de base de datos que puede crear o manipular nuevos objetos dentro de este esquema. El esquema puede contener cualquier objeto de base de datos como tablas, vistas, índices, clusters, procesos almacenados, funciones, etc.

P #29) ¿Qué es un diccionario de datos y cómo puede crearse?

Contesta: Siempre que se crea una nueva base de datos, el sistema crea un diccionario de datos específico de la base de datos. Este diccionario es propiedad del usuario SYS y mantiene todos los metadatos relacionados con la base de datos. Tiene un conjunto de tablas y vistas de sólo lectura y se almacena físicamente en el tablespace SYSTEM.

P #30) ¿Qué es una Vista y en qué se diferencia de una tabla?

Contesta: Una vista es un objeto de base de datos definido por el usuario que se utiliza para almacenar los resultados de una consulta SQL, a los que se puede hacer referencia posteriormente. Las vistas no almacenan estos datos físicamente, sino como una tabla virtual, por lo que se pueden denominar tablas lógicas.

La vista es diferente de la tabla:

  • Una tabla puede contener datos pero no resultados de consultas SQL, mientras que View puede guardar los resultados de consultas, que pueden utilizarse en otra consulta SQL en su conjunto.
  • La tabla se puede actualizar o eliminar, mientras que las vistas no.

P #31) ¿Qué se entiende por situación de bloqueo?

Contesta: Un bloqueo es una situación en la que dos o más usuarios están esperando simultáneamente los datos bloqueados por el otro, lo que provoca el bloqueo de todas las sesiones de usuario.

P #32) ¿Qué se entiende por índice?

Contesta: Un índice es un objeto de esquema que se crea para buscar datos de forma eficaz dentro de la tabla. Los índices suelen crearse sobre determinadas columnas de la tabla, a las que se accede con más frecuencia. Los índices pueden ser agrupados o no agrupados.

P#33) ¿Qué es un ROL en la base de datos Oracle?

Contesta: Dar acceso a objetos individuales a usuarios individuales es una ardua tarea administrativa. Para facilitar este trabajo, se crea un grupo de privilegios comunes en una base de datos, que se conoce como ROLE. El ROLE, una vez creado puede ser asignado o revocado a los usuarios utilizando el comando GRANT & REVOKE.

Sintaxis:

 CREATE ROLE READ_TABLE_ROLE; GRANT SELECT ON EMP TO READ_TABLE_ROLE; GRANT READ_TABLE_ROLE TO USER1; REVOKE READ_TABLE_ROLE FROM USER1; 

P #34) ¿Cuáles son los atributos que se encuentran en un CURSOR?

Respuesta: Un CURSOR tiene varios atributos que se mencionan a continuación:

(i) %ENCONTRADO :

  • Devuelve INVALID_CURSOR si el cursor ha sido declarado pero está cerrado.
  • Devuelve NULL si la obtención no se ha producido pero el cursor sólo está abierto.
  • Devuelve TRUE, si las filas se obtienen correctamente y FALSE si no se devuelve ninguna fila.

(ii) NO SE ENCUENTRA :

  • Devuelve INVALID_CURSOR si el cursor ha sido declarado pero está cerrado.
  • Devuelve NULL si la obtención no se ha producido pero el cursor sólo está abierto.
  • Devuelve FALSE, si las filas se obtienen correctamente y TRUE si no se devuelve ninguna fila.

(iii) %ISOPEN : Devuelve TRUE, si el cursor está ABIERTO de lo contrario FALSE

(iv) %ROWCOUNT Devuelve el número de filas obtenidas.

P #35) ¿Por qué usamos %ROWTYPE & %TYPE en PLSQL?

Contesta: %ROWTYPE & %TYPE son los atributos en PL/SQL que pueden heredar los tipos de datos de una tabla definida en una base de datos. El propósito de utilizar estos atributos es proporcionar independencia e integridad de los datos.

Si alguno de los tipos de datos o la precisión cambia en la base de datos, el código PL/SQL se actualiza automáticamente con el tipo de datos cambiado.

%TYPE se utiliza para declarar una variable que debe tener el mismo tipo de datos que una columna de la tabla.

Mientras que %ROWTYPE se utilizará para definir una fila completa de registros con una estructura similar a la de una tabla.

P #36) ¿Por qué creamos Procedimientos Almacenados & Funciones en PL/SQL y en qué se diferencian?

Contesta: Un procedimiento almacenado es un conjunto de sentencias SQL que se escriben para realizar una tarea específica. Estas sentencias se pueden guardar como un grupo en la base de datos con un nombre asignado y se pueden compartir con diferentes programas si se dispone de permisos para acceder a los mismos.

Las funciones son, de nuevo, subprogramas que se escriben para realizar tareas específicas, pero existen diferencias entre ambas.

Procedimientos almacenados Funciones

Los Procedimientos Almacenados pueden o no devolver un valor y también pueden devolver múltiples valores. La función siempre devolverá un único valor.
Los procedimientos almacenados pueden incluir sentencias DML como insertar, actualizar y eliminar. No podemos utilizar sentencias DML en una función.
Los procedimientos almacenados pueden llamar a funciones. Las funciones no pueden llamar a procedimientos almacenados.
Los Procedimientos Almacenados soportan el manejo de excepciones usando el bloque Try/Catch. Functions no soporta el bloque Try/Catch.

P #37) ¿Cuáles son los parámetros que podemos pasar a través de un procedimiento almacenado?

Contesta: Podemos pasar parámetros IN, OUT & INOUT a través de un procedimiento almacenado y deben ser definidos al declarar el procedimiento mismo.

P #38) ¿Qué es un disparador y cuáles son sus tipos?

Contesta: Un disparador es un programa almacenado que se escribe de tal forma que se ejecuta automáticamente cuando se produce algún evento. Este evento puede ser cualquier operación DML o DDL.

PL/SQL admite dos tipos de disparadores:

  • Nivel de fila
  • Nivel de declaración

P #39) ¿Cómo distinguir una variable global de una variable local en PL/SQL?

Contesta: La variable global es la que se define al principio del programa y sobrevive hasta el final. Puede ser accedida por cualquier método o procedimiento dentro del programa, mientras que el acceso a la variable local está limitado al procedimiento o método donde se declara.

P #40) ¿Qué son los paquetes en PL SQL?

Contesta: Un paquete es un grupo de objetos de base de datos relacionados como procs almacenados, funciones, tipos, triggers, cursores, etc. que se almacenan en la base de datos Oracle. Es una especie de biblioteca de objetos relacionados a la que pueden acceder múltiples aplicaciones si se permite.

La estructura de un Paquete PL/SQL consta de 2 partes: especificación del paquete & cuerpo del paquete.

Conclusión

Espero que las preguntas anteriores le hayan ayudado a hacerse una idea de lo que es Oracle.

Aunque conozcas a fondo todos los conceptos básicos, la forma de presentarlos en la entrevista importa mucho, así que mantén la calma y afronta la entrevista con confianza y sin vacilaciones.

Leer SIGUIENTE Parte 2: Preguntas sobre Oracle DBA, RAC y ajuste del rendimiento

¡¡Le deseamos todo el éxito!!

Lecturas recomendadas

    Desplazarse hacia arriba