Preguntas frecuentes de la entrevista DBMS | conjunto 2

Este artículo es una extensión de Preguntas frecuentes de la entrevista DBMS | conjunto 1

P. Hay una tabla en la que solo una fila se repite por completo. Escriba una consulta para encontrar la fila repetida

Nombre Sección
a B C CS1
b.d.c. CS2
a B C CS1

En la tabla anterior, podemos encontrar una fila duplicada usando la consulta a continuación.

SELECT name, section FROM tbl
GROUP BY name, section
HAVING COUNT(*) > 1

P. ¿Consulta para encontrar el segundo salario más alto de un empleado?

SELECT max(salary) FROM EMPLOYEES WHERE salary IN
(SELECT salary FROM EMPLOYEEs MINUS SELECT max(salary)
FROM EMPLOYEES);

O

SELECT max(salary) FROM EMPLOYEES WHERE 
salary <> (SELECT max(salary) FROM EMPLOYEES);

P. Considere la siguiente tabla de empleados. ¿Cuántas filas hay en el resultado de la siguiente consulta? 

ID salario DeptName 1 10000 EC 2 40000 EC 3 30000 CS 4 40000 ME 5 50000 ME 6 60000 ME 7 70000 CS

¿Cuántas filas hay en el resultado de la siguiente consulta?

SELECT E.ID
FROM  Employee E
WHERE  EXISTS  (SELECT E2.salary
FROM Employee E2
WHERE E2.DeptName = 'CS'
AND   E.salary > E2.salary)

Las siguientes 5 filas serán el resultado de la consulta, ya que 3000 es el salario mínimo de los empleados de CS y todas estas filas son mayores que 30000. 2 4 5 6 7 

P. Escriba un disparador para actualizar la tabla Emp de tal manera que, si se realiza una actualización en la tabla Dep, el salario de todos los empleados de ese departamento debe incrementarse en alguna cantidad (actualización) Suponiendo que el nombre de la tabla sea Dept y Emp, el disparador se puede escribir como sigue: 

CREATE OR REPLACE TRIGGER update_trig
AFTER UPDATE ON Dept
FOR EACH ROW
DECLARE
CURSOR emp_cur IS SELECT * FROM Emp;
BEGIN
FOR i IN emp_cur LOOP
IF i.dept_no = :NEW.dept_no THEN
DBMS_OUTPUT.PUT_LINE(i.emp_no);  --  for printing those
UPDATE Emp                      -- emp number which are
SET sal = i.sal + 100           -- updated
WHERE emp_no = i.emp_no;
END IF;
END LOOP;
END;

P. Hay una tabla que contiene dos columnas Estudiante y Notas, necesita encontrar todos los estudiantes, cuyas calificaciones son mayores que el promedio, es decir, una lista de estudiantes por encima del promedio.

SELECT student, marks 
FROM table
WHERE marks > SELECT AVG(marks) from table;

P.Nombre al empleado que tiene el tercer salario más alto utilizando subconsultas.

SELECT Emp1.Name
FROM Employee Emp1
WHERE 2 = (SELECT COUNT(DISTINCT(Emp2.Salary))
           FROM Employee Emp2
           WHERE Emp2.Salary > Emp1.Salary
          )

Lógica: El número de personas con un salario superior al de esta persona será 2. 

P. ¿Por qué no podemos usar la cláusula WHERE con funciones agregadas como HAVING? La diferencia entre la cláusula «have» y «where» en SQL es que la cláusula «where» NO se puede usar con agregados, pero la cláusula «have» sí. 

Nota: no es una regla predefinida pero, en general, verá que en un buen número de consultas SQL, usamos WHERE antes de GROUP BY y HAVING después de GROUP BY. La cláusula Where actúa como un filtro previo, mientras que Tener actúa como un filtro posterior. La cláusula where funciona en los datos de la fila, no en los datos agregados. Consideremos la siguiente tabla ‘Marcas’. Estudiante Curso Puntuación a c1 40 a c2 50 b c3 60 d c1 70 e c2 80 Considere la consulta

SELECT Student, sum(Score) AS total 
FROM Marks

Esto seleccionaría datos fila por fila. La cláusula de tener funciona en datos agregados. Por ejemplo, el resultado de la siguiente consulta

SELECT Student, sum(score) AS total FROM Marks

Estudiante Total a 90 b 60 d 70 e 80 Cuando solicitamos tener en la consulta anterior, obtenemos

SELECT Student, sum(score) AS total
FROM Marks having total > 70

Estudiante Total a 90 e 80 

P. ¿La diferencia entre la clave principal y la clave única y por qué se debe usar una clave única si solo permite un valor nulo? 

Clave primaria:

  • Solo uno en una fila (tupla).
  • Nunca permite valor nulo (solo campo clave).
  • El identificador de clave único no puede ser nulo y debe ser único.

Llave unica:

  • Puede haber más de una clave única en una fila.
  • La clave única puede tener valores nulos (solo se permite un valor nulo único).
  • Puede ser una clave candidata.
  • La clave única puede ser nula y puede no ser única.

P. ¿Cuál es la diferencia entre la vista materializada y dinámica? Vistas materializadas

  • Se basan en disco y se actualizan periódicamente en función de la definición de la consulta.
  • Una tabla materializada se crea o actualiza con poca frecuencia y debe sincronizarse con sus tablas base asociadas.

Vistas dinámicas

  • Solo virtual y ejecuta la definición de consulta cada vez que se accede a ellos.
  • Se puede crear una vista dinámica cada vez que el usuario solicita una vista específica.

P. ¿Qué es SQL incrustado y dinámico? SQL estático o incorporado

  • Sentencias SQL en una aplicación que no cambian durante el tiempo de ejecución y, por lo tanto, se pueden codificar en la aplicación.

SQL dinámico

  • Sentencias SQL que se construyen en tiempo de ejecución; por ejemplo, la aplicación puede permitir a los usuarios ingresar sus propias consultas.
  • SQL dinámico es una técnica de programación que le permite crear sentencias SQL dinámicamente en tiempo de ejecución. Puede crear aplicaciones más flexibles y de propósito general utilizando SQL dinámico porque el texto completo de una instrucción SQL puede ser desconocido en la compilación.
SQL estático (incrustado) SQL dinámico (interactivo)
En SQL estático, la forma en que se accederá a la base de datos está predeterminada en la declaración de SQL incorporado. En SQL dinámico, la forma en que se accederá a la base de datos se determina en tiempo de ejecución.
Es más rápido y eficiente. Es menos rápido y eficiente.
Las sentencias SQL se compilan en tiempo de compilación. Las sentencias SQL se compilan en tiempo de ejecución.
El análisis, la validación, la optimización y la generación del plan de aplicación se realizan en tiempo de compilación. El análisis, la validación, la optimización y la generación del plan de aplicación se realizan en tiempo de ejecución.
Generalmente se utiliza para situaciones en las que los datos se distribuyen uniformemente. Generalmente se utiliza para situaciones en las que los datos se distribuyen de manera no uniforme.
Las sentencias EXECUTE IMMEDIATE, EXECUTE y PREPARE no se utilizan. Se utilizan sentencias EXECUTE IMMEDIATE, EXECUTE y PREPARE.
Es menos flexible. Es más flexible.

P. ¿Cuál es la diferencia entre CHAR y VARCHAR?

  • CHAR y VARCHAR difieren en almacenamiento y recuperación.
  • La longitud de la columna CHAR es fija mientras que la longitud de VARCHAR es variable.
  • El número máximo de caracteres que el tipo de datos CHAR puede contener es de 255 caracteres, mientras que VARCHAR puede contener hasta 4000 caracteres.
  • CHAR es un 50% más rápido que VARCHAR.
  • CHAR usa la asignación de memoria estática mientras que VARCHAR usa la asignación de memoria dinámica.

También te puede interesar:

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *