Pregutas y Respuestas más Frecuentes de Entrevista sobre SQL

Iniciado por Mr. Bones, Agosto 04, 2023, 11:08:35 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 04, 2023, 11:08:35 AM Ultima modificación: Agosto 04, 2023, 04:21:53 PM por AXCESS
2 de Agosto del 2023

Hola Underc0ders, hoy vamos a ver algunas preguntas que nos pueden hacer en las entrevistas sobre SQL

Las paso en Español y en Ingles para el que necesite practicar.



PREGUNTAS Y RESPUESTAS MÁS FRECUENTES DE ENTREVISTA SOBRE SQL



¿Cuál es la diferencia entre un "Stored Procedure" (Procedimiento almacenado) y una "Function" (Función)?

Un procedimiento puede tener parámetros de entrada y salida, pero una función solo puede tener parámetros de entrada.
Dentro de un procedimiento, podemos usar sentencias DML (INSERT/UPDATE/DELETE), pero dentro de una función no podemos usar sentencias DML.
No podemos utilizar un procedimiento almacenado en una declaración SELECT, pero sí podemos usar una función en una declaración SELECT.
Podemos usar un bloque Try-Catch en un procedimiento almacenado, pero no podemos usarlo en una función.
Podemos administrar transacciones en un procedimiento, pero no en una función.
No podemos unir procedimientos almacenados, pero sí podemos unir funciones.
Los procedimientos almacenados no se pueden utilizar en ninguna parte de las declaraciones SQL en las secciones WHERE/HAVING/SELECT, pero sí podemos usar una función en cualquier lugar.
Un procedimiento puede devolver 0 o n valores (máximo 1024), pero una función solo puede devolver 1 valor que es obligatorio.
No se puede llamar a un procedimiento desde una función, pero sí podemos llamar a una función desde un procedimiento.

¿Cuál es la diferencia entre un "Clustered Index" (Índice agrupado) y un "Non-Clustered Index" (Índice no agrupado)?

Un índice agrupado almacena físicamente los datos de la tabla en orden de los valores clave, y los datos se reorganizan cada vez que se inserta un nuevo valor o se actualiza un valor en la columna en la que está definido. Por otro lado, un índice no agrupado crea una lista separada de valores clave (o crea una tabla de punteros) que apunta a la ubicación de los datos en las páginas de datos.
Un índice agrupado no requiere un almacenamiento separado del almacenamiento de la tabla. Obliga a que las filas se almacenen ordenadas según la clave del índice, mientras que un índice no agrupado requiere un almacenamiento separado del almacenamiento de la tabla para almacenar la información del índice.
Una tabla con un índice agrupado se llama tabla agrupada. Sus filas se almacenan en una estructura de árbol B mientras que una tabla sin índices agrupados se llama tabla no agrupada y sus filas se almacenan en una estructura heap sin ordenar.
El índice predeterminado se crea como parte de la columna de clave primaria como un índice agrupado.
En un índice agrupado, el nodo hoja contiene los datos reales, mientras que en un índice no agrupado, el nodo hoja contiene el puntero a las filas de datos de la tabla.
Un índice agrupado siempre tiene un Id de índice de 1, mientras que los índices no agrupados tienen Ids de índice > 1.
Una tabla puede tener solo 1 índice agrupado, mientras que antes de SQL Server 2008 solo se podían crear 249 índices no agrupados. Con SQL Server 2008 y versiones posteriores, se pueden crear 999 índices no agrupados.
Una restricción de clave primaria crea un índice agrupado de forma predeterminada, mientras que una restricción de clave única crea un índice no agrupado de forma predeterminada.

¿Cuál es la diferencia entre los comandos "DELETE" y "TRUNCATE"?

El comando DELETE se utiliza para eliminar filas de una tabla basándose en una condición WHERE, mientras que TRUNCATE elimina todas las filas de una tabla.
Por lo tanto, podemos usar una cláusula WHERE con DELETE para filtrar y eliminar registros específicos, pero no podemos usar una cláusula WHERE con TRUNCATE.
DELETE se ejecuta utilizando un bloqueo de fila, es decir, cada fila en la tabla se bloquea para su eliminación, mientras que TRUNCATE se ejecuta utilizando un bloqueo de tabla, es decir, toda la tabla se bloquea para la eliminación de todos los registros.
DELETE es un comando DML (Lenguaje de Manipulación de Datos), mientras que TRUNCATE es un comando DDL (Lenguaje de Definición de Datos).
DELETE conserva la identidad del valor de la columna, mientras que en TRUNCATE, la columna de identidad se restablece a su valor inicial (seed) si la tabla contiene alguna columna de identidad.
Para usar DELETE se necesita permiso DELETE en la tabla, mientras que para usar TRUNCATE en una tabla se necesita al menos permiso ALTER en la tabla.
DELETE utiliza más espacio de transacción que la instrucción TRUNCATE, mientras que TRUNCATE utiliza menos espacio de transacción que DELETE.
DELETE se puede utilizar con vistas indexadas, mientras que TRUNCATE no se puede utilizar con vistas indexadas.
La declaración DELETE elimina filas una por una y registra una entrada en el registro de transacciones por cada fila eliminada, mientras que TRUNCATE TABLE elimina los datos desasignando las páginas de datos utilizadas para almacenar los datos de la tabla y registra solo las desasignaciones de páginas en el registro de transacciones.
DELETE activa un disparador (trigger) porque la operación se registra individualmente, mientras que TRUNCATE TABLE no puede activar un disparador porque la operación no registra eliminaciones individuales de filas.

¿Cuál es la diferencia entre la cláusula "WHERE" y la cláusula "HAVING"?

La cláusula WHERE se puede usar con las declaraciones SELECT, UPDATE y DELETE, pero la cláusula HAVING solo se puede usar con una declaración SELECT.
No podemos usar una función de agregado en la cláusula WHERE a menos que esté en una subconsulta contenida en una cláusula HAVING, mientras que sí podemos usar una función de agregado en la cláusula HAVING. Podemos usar el nombre de una columna en la cláusula HAVING, pero la columna debe estar contenida en la cláusula GROUP BY.
La cláusula WHERE se utiliza antes de la cláusula GROUP BY, mientras que una cláusula HAVING se utiliza para imponer una condición en la función GROUP y se utiliza después de la cláusula GROUP BY en la consulta.
Una cláusula WHERE se aplica a cada fila, mientras que una cláusula HAVING se aplica a filas resumidas (resumidas con GROUP BY).
En la cláusula WHERE, se recuperan los datos que coinciden con la condición desde la memoria, mientras que en HAVING, primero se recuperan todos los datos completos y luego se separan según la condición.

¿Cuál es la diferencia entre una "Primary Key" (Clave primaria) y una "Unique Key" (Clave única)?

Solo podemos tener una clave primaria en una tabla, mientras que podemos tener más de una clave única en una tabla.
La clave primaria no puede tener un valor NULL, mientras que una clave única puede tener solo un valor NULL.
De forma predeterminada, una clave primaria es un índice agrupado, mientras que de forma predeterminada, una clave única es un índice único no agrupado.
Una clave primaria admite un valor de incremento automático (Auto Increment), mientras que una clave única no admite un valor de incremento automático.

¿Cuál es la diferencia entre una "Local Temporary Table" (Tabla temporal local) y una "Global Temporary Table" (Tabla temporal global)?

Una tabla temporal local se crea al darle un prefijo de "#", mientras que una tabla temporal global se crea al darle un prefijo de "##".
Una tabla temporal local no se puede compartir entre múltiples usuarios, mientras que una tabla temporal global puede compartirse entre múltiples usuarios.
Una tabla temporal local solo está disponible para la conexión de base de datos actual para el usuario actual y se borra cuando se cierra la conexión, mientras que una tabla temporal global está disponible para cualquier conexión una vez creada y se borra cuando se cierra la última conexión.

¿Qué son las claves super, primaria, candidata y foránea?

Una clave super es un conjunto de atributos de un esquema de relación en el que todos los atributos del esquema dependen funcionalmente. No pueden haber dos filas con el mismo valor de atributos de clave super.
Una clave candidata es una clave super minimal, es decir, no puede haber un subconjunto propio de los atributos de la clave candidata que sea una clave super.
Una clave primaria es una de las claves candidatas. Se selecciona una de las claves candidatas como la más importante y se convierte en la clave primaria. No puede haber más de una clave primaria en una tabla.
Una clave foránea es un campo (o una colección de campos) en una tabla que identifica de manera única una fila de otra tabla.

¿Cuál es la diferencia entre la clave primaria y las restricciones únicas?

La clave primaria no puede tener valores NULL, mientras que las restricciones únicas pueden tener valores NULL.
Solo puede haber una clave primaria en una tabla, pero puede haber múltiples restricciones únicas.

¿Qué es la normalización de bases de datos?

La normalización de bases de datos es un proceso para analizar los esquemas de relación dados en función de sus dependencias funcionales y claves primarias para lograr las siguientes propiedades deseables:
Minimizar la redundancia.
Minimizar las anomalías de inserción, eliminación y actualización.
Los esquemas de relaciones que no cumplen con estas propiedades se descomponen en esquemas de relaciones más pequeños que puedan cumplir con las propiedades deseables.

¿Qué es SQL?

SQL (Structured Query Language) es un lenguaje de programación diseñado para insertar y modificar datos en un sistema de gestión de bases de datos relacionales (RDBMS).

¿Cuáles son las diferencias entre DDL, DML y DCL en SQL?

DDL (Data Definition Language) corresponde a las consultas que definen la estructura de una base de datos, como CREATE, ALTER, DROP y RENAME.
DML (Data Manipulation Language) corresponde a las consultas que manipulan los datos en la base de datos, como SELECT, INSERT y UPDATE.
DCL (Data Control Language) corresponde a las consultas que controlan los permisos de acceso y la seguridad de la base de datos, como GRANT y REVOKE.

¿Cuál es la diferencia entre la cláusula HAVING y la cláusula WHERE?

HAVING se utiliza para especificar una condición para un grupo o una función de agregado utilizada en una instrucción SELECT. WHERE se utiliza para seleccionar antes de agrupar.
La cláusula HAVING puede contener funciones de agregado, mientras que la cláusula WHERE no puede contener funciones de agregado. Se pueden usar columnas en la cláusula HAVING, pero esas columnas deben estar contenidas en la cláusula GROUP BY.
La cláusula WHERE se aplica a cada fila, mientras que la cláusula HAVING se aplica a filas resumidas (resumidas con GROUP BY).

¿Qué es una "Join" (Unión)?

Un Join en SQL se utiliza para combinar datos de dos o más tablas basándose en un campo común entre ellas. Por ejemplo, podemos unir dos tablas para mostrar los nombres de los estudiantes inscritos en diferentes cursos.

¿Qué es una "Identity" (Identidad)?

La "Identity" (Identidad) o "AutoNumber" es una columna que genera automáticamente valores numéricos. Se puede establecer un valor de inicio e incremento, pero la mayoría de los DBA (Administradores de bases de datos) los dejan en 1. Una columna GUID también genera números, pero el valor de esta no se puede controlar. Las columnas Identity/GUID no necesitan ser indexadas.

¿Qué es una vista en SQL? ¿Cómo se crea una?

Una vista es una tabla virtual basada en el conjunto de resultados de una instrucción SQL. Podemos crear una vista utilizando la sintaxis CREATE VIEW.
Ejemplo:

sql
Copy code
CREATE VIEW nombre_vista AS
SELECT nombre_columnas
FROM nombre_tabla
WHERE condicion;

¿Cuáles son los usos de las vistas?

Las vistas pueden representar un subconjunto de los datos contenidos en una tabla, lo que permite limitar el grado de exposición de las tablas subyacentes al mundo exterior: un usuario dado puede tener permiso para consultar la vista, pero se le deniega el acceso al resto de la tabla base.
Las vistas pueden combinar y simplificar múltiples tablas en una sola tabla virtual.
Las vistas pueden actuar como tablas agregadas, donde el motor de la base de datos agrega datos (suma, promedio, etc.) y presenta los resultados calculados como parte de los datos.
Las vistas pueden ocultar la complejidad de los datos; por ejemplo, una vista podría aparecer como Sales2000 o Sales2001, particionando de manera transparente la tabla subyacente real.

¿Qué es un "Trigger" (Disparador)?

Un Trigger es un código que se asocia con operaciones de inserción, actualización o eliminación. El código se ejecuta automáticamente cada vez que se ejecuta la consulta asociada en una tabla. Los triggers pueden ser útiles para mantener la integridad en la base de datos.

¿Qué es un "Stored Procedure" (Procedimiento almacenado)?

Un Stored Procedure es como una función que contiene un conjunto de operaciones compiladas juntas. Contiene un conjunto de operaciones que se utilizan comúnmente en una aplicación para realizar algunas tareas comunes de la base de datos.

¿Cuál es la diferencia entre un Trigger y un Stored Procedure?

A diferencia de los Stored Procedures, los Triggers no se pueden llamar directamente. Solo pueden asociarse con consultas.

¿Qué es una "transacción"? ¿Cuáles son las propiedades ACID?

Una Transacción de base de datos es un conjunto de operaciones de base de datos que deben tratarse como un todo, lo que significa que todas las operaciones se ejecutan o ninguna se ejecuta.
Las propiedades ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) son un conjunto de propiedades que garantizan que las transacciones de base de datos se procesen de manera confiable.








Mr. Bones
Mr. Bones

Nos ha gustado!!

Tienes de gato chico...

eres de los nuestros

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta