28th Nov 2023 Lectura de 23 minutos Las 29 mejores preguntas de la entrevista sobre SQL Server Tihomir Babic SQL Server preguntas para entrevista de SQL Índice SQL Server y T-SQL: Lo que hay que saber Preguntas generales de la entrevista de SQL Server 1. ¿Qué es SQL Server? 2. ¿Puede explicar las diferentes ediciones de SQL Server? 3. ¿Cuáles son los principales componentes de SQL Server? Preguntas de la entrevista SQL/T-SQL 4. ¿Qué es T-SQL? ¿Cuál es la diferencia entre SQL y T-SQL? 5. ¿Cuáles son los diferentes tipos de Joins en SQL Server? 6. ¿Cuál es el propósito de las cláusulas GROUP BY y HAVING en T-SQL? 7. ¿Qué es una Subconsulta en T-SQL? 8. ¿Cuáles son los diferentes tipos de subconsultas? 9. ¿Cuál es la diferencia entre UNION y UNION ALL? 10. Enumere las funciones más comunes de SQL Server. 11. 11. ¿Para qué sirven las funciones COALESCE() y NULLIF()? 12. ¿Qué es Funciones de ventana en SQL Server? 13. Encuentre las N filas superiores en SQL Server. 14. ¿Qué hacen ROLLUP, GROUPING SETS y CUBE en T-SQL? 15. ¿Qué es una CTE en SQL Server? 16. Explique qué es una CTE recursiva y cómo escribir una en SQL Server. Preguntas intermedias de la entrevista de SQL Server 17. ¿Cómo se crea una tabla en SQL Server? 18. 18. ¿Qué es una clave primaria? ¿Qué es una clave externa? 19. 19. ¿Cuál es la diferencia entre los comandos DELETE y TRUNCATE? 19. 19. ¿Cuál es la diferencia entre una tabla y una vista en SQL Server? 20. ¿Puede explicar los diferentes tipos de índices en SQL Server? 21. 21. ¿Cuál es la diferencia entre una función y un procedimiento almacenado? 22. 22. ¿Cuál es la diferencia entre una tabla temporal y una variable de tabla? 23. 23. ¿Qué es un Trigger? ¿Cuándo se utiliza? 24. 24. ¿Cuál es la diferencia entre Commit y Rollback? SQL avanzado Servidor Preguntas de la entrevista 25. ¿Puede explicar los diferentes tipos de replicación en SQL Server? 26. 26. Explique los diferentes tipos de bloqueos en SQL Server. 27. 27. ¿Cuál es la diferencia entre un Deadlock y un Livelock? 28. 28. ¿Cuál es la diferencia entre una vista materializada y una no materializada? 29. ¿Cuál es la diferencia entre transacciones implícitas y explícitas? ¿Entendiendo las preguntas de la entrevista de SQL Server? ¿Busca trabajo en SQL Server? Repase estas 29 preguntas imprescindibles para una entrevista sobre SQL Server y estará bien preparado. Y no se preocupe por buscar las respuestas: nosotros también se las proporcionamos. La primera versión de Microsoft SQL Server se lanzó en 1989 y tiene una rica historia. Ha recorrido un largo camino desde entonces, convirtiéndose en uno de los motores de bases de datos más utilizados en la industria de datos. En los últimos diez años, ha sido el tercer motor de base de datos más popular. Fuente: https://db-engines.com/en/ranking_trend Si tu (próximo) trabajo requiere trabajar con bases de datos relacionales, es muy probable que tengas que hacerlo en SQL Server. Por ejemplo, los modeladores de datos diseñan e implementan bases de datos con la ayuda de administradores de bases de datos. Para ello, los modeladores de datos utilizarán SQL Server para crear tablas y sus atributos, definir relaciones entre las tablas, definir restricciones, tipos de datos, etcétera. A continuación, la base de datos debe llenarse de datos, que es el trabajo de un ingeniero de datos. Utilizan SQL Server para consultar, integrar, transformar y cargar datos. Una vez que todo está en su sitio, el administrador de la base de datos garantiza el acceso a los datos y su seguridad: proporciona o revoca el acceso a los datos, mantiene y hace copias de seguridad de la base de datos, supervisa su rendimiento y la actualiza e incluso recupera cuando es necesario. También hay toda una serie de puestos de trabajo relacionados principalmente con el uso de los datos de la base de datos. Esto incluye analistas de datos, analistas financieros, analistas cuantitativos, desarrolladores de BI, estadísticos y científicos de datos. Se espera que sean capaces de obtener los datos de forma independiente, lo que requiere conocimientos de SQL. SQL Server y T-SQL: Lo que hay que saber Aunque los conocimientos de SQL Server necesarios varían de un puesto a otro, un aspecto que todos tienen en común es el conocimiento de T-SQL, el dialecto de SQL Server. Para estar preparado para la entrevista de trabajo, debes dominar T-SQL. La mejor forma de conseguirlo es a través de la experiencia laboral, resolviendo preguntas reales de la entrevista y aprovechando los cursos interactivos de SQL. Para esta última categoría, le sugerimos nuestro curso Curso completo de SQL en MS SQL Server. Consiste en siete cursos interactivos que cubren todo, desde los fundamentos de T-SQL hasta las extensiones GROUP BY, consultas recursivas y Common Table Expressions. Hay muchos cursos buenos disponibles; aquí están los cinco que sugerimos para los principiantes de SQL Server. Aparte de eso, también deberías repasar tus conocimientos técnicos de SQL Server, ya que la entrevista también incluirá preguntas no relacionadas con SQL. Aquí trataremos tantas preguntas de SQL Server como sea posible. Sin embargo, ningún trabajo de datos requiere únicamente conocimientos de SQL Server. Entonces, ¿cómo prepararse para las otras partes de la entrevista? El punto de partida debe ser siempre la descripción del puesto. Lee atentamente los requisitos. Podrían incluir otros lenguajes de programación (por ejemplo, Python), análisis estadístico, ETL, diseño de bases de datos, aprendizaje automático, etc. Contempla el plan de acción que te tendrá preparado en todos estos frentes. Y utiliza todas las fuentes disponibles, como artículos, vídeos de YouTube, cursos, conjuntos de datos de prácticas, plataformas con preguntas para entrevistas y todo tipo de tutoriales diferentes. Ahora, vamos a empezar con las preguntas de la entrevista de SQL Server. Preguntas generales de la entrevista de SQL Server A los entrevistadores a menudo les gusta hacerte algunas preguntas generales sobre SQL Server como calentamiento. Empecemos con algunas fáciles.. 1. ¿Qué es SQL Server? Respuesta: SQL Server es el sistema de gestión de bases de datos relacionales (RDBMS) de Microsoft. Garantiza el almacenamiento, la integridad, la seguridad y el acceso a los datos. En otras palabras, permite crear, almacenar, actualizar, eliminar y recuperar datos. 2. ¿Puede explicar las diferentes ediciones de SQL Server? Respuesta: Existen cinco ediciones de SQL Server. La más básica es SQL Server Express, una base de datos gratuita para aprender y crear pequeñas aplicaciones de escritorio y servidor. La utilizan principalmente particulares y pequeñas organizaciones que sólo necesitan funcionalidades básicas de RDBMS. SQL ServerDeveloper tiene licencia para un usuario. Se utiliza como sistema de desarrollo y prueba, no como servidor de producción. Tiene todas las funcionalidades de la edición Enterprise, sólo que en un entorno que no es de producción. La utilizan desarrolladores y probadores. SQL Server Web está diseñado para hosts web y puntos de acceso virtuales web (VAP). Les permite compartir (a bajo coste) sus servicios y aplicaciones que se ejecutan en SQL Server. SQL ServerStandard ofrece funciones básicas de gestión de datos e inteligencia empresarial para pequeñas organizaciones con recursos informáticos mínimos. Ofrece casi todo lo que hace SQL Enterprise, pero con algunas limitaciones. SQL Enterprise es la edición a la que recurren las grandes organizaciones. Ofrece virtualización ilimitada, acceso a la nube a través de Azure y el mejor rendimiento, análisis de datos y seguridad. También es la edición más cara de SQL Server. 3. ¿Cuáles son los principales componentes de SQL Server? Respuesta: SQL Server consta de varios componentes. El motor de la base de datos se encarga del almacenamiento, la seguridad y la transformación de los datos. La aplicación SQL Server inicia, detiene y pausa el trabajo de otros componentes. Su ejecutable es sqlservr.exe. SQL Server Agent es un programador de tareas que se activa con cualquier evento. Su ejecutable es sqlagent.exe. SQL Server Browser toma las peticiones entrantes para SQL Server y proporciona la información sobre las instancias de SQL Server instaladas en el ordenador. Su ejecutable es ssqlbrowser.exe. SQL Server Full-Text Search permite realizar búsquedas de texto completo en los datos basados en caracteres almacenados en las tablas de la base de datos. Su ejecutable es fdlauncher.exe. SQL Server VSS Writer permite realizar copias de seguridad y restauraciones de bases de datos mediante la creación de instantáneas cuando el servidor SQL no se está ejecutando. Su ejecutable es sqlwriter.exe. SQL Server Analysis Services (SSAS) es un componente de minería y análisis de datos, así como de generación de informes y visualización de datos a través de la conectividad con herramientas como PowerBI y Excel. También permite el uso de Python y R para análisis avanzados. Su ejecutable es smsmdsrv.exe. SQL Server Reporting Services (SSRS) es un componente de generación de informes que permite crear, desplegar y gestionar informes gráficos, móviles e impresos. Su ejecutable es ReportingServicesService.exe. SQL Server Integration Services (SSIS) es una herramienta ETL para almacenar, extraer, transformar, cargar e integrar datos. Su ejecutable es MsDtsSrvr.exe. Preguntas de la entrevista SQL/T-SQL Estas son las preguntas de la entrevista de SQL Server que están directamente relacionadas con T-SQL y sus comandos. La mayoría de ellas no requieren demostraciones de codificación, pero aún así se necesitan sólidos conocimientos de T-SQL para proporcionar una respuesta. Si estás interesado en un poco de práctica de codificación previa a la entrevista, aquí hay algunas preguntas de entrevista de codificación SQL. 4. ¿Qué es T-SQL? ¿Cuál es la diferencia entre SQL y T-SQL? Respuesta: T-SQL es un dialecto SQL utilizado para comunicarse con la base de datos SQL Server. SQL es un lenguaje de código abierto desarrollado por IBM, mientras que T-SQL es creado y propiedad de Microsoft. SQL es un lenguaje no procedimental, lo que significa que ejecuta una consulta SQL cada vez. En cambio, T-SQL es un lenguaje procedimental. Esto significa que las consultas se ejecutan como un bloque en un orden lógicamente estructurado. Además, T-SQL tiene algunas sentencias, palabras clave y funciones que no existen en SQL estándar. Para más detalles sobre estos, echa un vistazo al artículo que destaca las 14 diferencias entre SQL y T-SQL. 5. ¿Cuáles son los diferentes tipos de Joins en SQL Server? Respuesta: Existen cinco tipos diferentes de uniones en SQL Server: JOINs: (INNER) JOIN LEFT (OUTER) JOIN RIGHT (OUTER) JOIN FULL (OUTER) JOIN CROSS JOIN JOIN es una unión interna que devuelve las filas coincidentes de ambas tablas unidas. LEFT JOIN es una unión externa que devuelve todas las filas de la primera tabla (izquierda) y sólo las filas coincidentes de la segunda tabla (derecha). RIGHT JOIN hace lo mismo, pero desde la derecha; devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. FULL JOIN es una unión externa que combina LEFT JOIN y RIGHT JOIN: devuelve todas las filas de la tabla izquierda y todas las filas de la tabla derecha. CROSS JOIN devuelve un producto cartesiano, es decir, devuelve todas las combinaciones de todas las filas de las tablas unidas. Nuestra hoja de trucos SQL JOIN explica muy bien cada una de estas uniones utilizando ejemplos. Si quieres profundizar, aquí tienes 10 preguntas de entrevista sobre SQL JOIN. 6. ¿Cuál es el propósito de las cláusulas GROUP BY y HAVING en T-SQL? Respuesta: GROUP BY organiza filas con los mismos valores en una o más columnas en grupos. A menudo (pero no siempre) se utiliza con funciones agregadas. Puedes encontrar más detalles en este artículo de GROUP BY, y hay 5 ejemplos de GROUP BY en otro artículo. HAVING se utiliza para filtrar grupos basándose en una condición especificada. Dado que filtra grupos, las funciones de agregado están permitidas en esta cláusula. Aquí tienes un artículo que explica HAVING con más detalle. 7. ¿Qué es una Subconsulta en T-SQL? Respuesta: Una subconsulta o consulta interna es una consulta colocada dentro de otra consulta (llamada consulta externa). En T-SQL, las subconsultas se pueden utilizar en las sentencias SELECT, INSERT, UPDATE, y DELETE. Se colocan en las cláusulas FROM, WHERE, o HAVING de la sentencia T-SQL permitida. 8. ¿Cuáles son los diferentes tipos de subconsultas? Respuesta: Existen varios tipos de subconsultas. Una subconsulta escalar es una subconsulta que devuelve precisamente un valor (una fila y una columna) como resultado. Se utiliza en las cláusulas FROM, WHERE y HAVING. Una subconsulta de varias filas es una subconsulta que devuelve varias filas y una o varias columnas. Se utilizan en las mismas cláusulas que las subconsultas escalares pero con los operadores IN, NOT IN, ANY, ALL, EXISTS, o NOT EXISTS. Las subconsultas correlacionadas utilizan un valor de la consulta externa. Se evalúa una vez por cada fila de la consulta externa. Las subconsultas no correlacionadas funcionan independientemente de la consulta externa; no dependen de los resultados de la consulta externa. Puedes leer más sobre los diferentes tipos de subconsultas. 9. ¿Cuál es la diferencia entre UNION y UNION ALL? Respuesta: Tanto UNION como UNION ALL fusionan los resultados de dos o más consultas en un conjunto de resultados. La diferencia es que UNION no incluye duplicados, mientras que UNION ALL sí. Puedes obtener más información sobre su sintaxis y uso en este artículo sobre UNION vs. UNION ALL. 10. Enumere las funciones más comunes de SQL Server. Respuesta: Estas son las categorías de funciones y funciones más utilizadas en SQL Server. Funciones de cadena: CONCAT() - Fusiona dos o más cadenas. LEFT(), RIGHT() & SUBSTRING() - Devuelve el número especificado de caracteres desde el extremo izquierdo o derecho de una cadena o una posición indicada en la cadena. LEN() - Devuelve el número de caracteres de la cadena. LTRIM(), RTRIM() & TRIM() - Elimina espacios u otros caracteres de la izquierda, derecha o de una posición especificada en la cadena. REPLACE() - Sustituye todas las apariciones de una subcadena especificada por otra cadena. LOWER() y UPPER() - Convierte todos los caracteres en minúsculas o mayúsculas, respectivamente. Funciones numéricas: ABS() - Devuelve el valor absoluto. ROUND() - Redondea un número al decimal especificado. Funciones de fecha y hora: DATEDIFF() - Devuelve la diferencia entre dos fechas especificadas. CURRENT_TIMESTAMP() - Devuelve la fecha y hora actuales. DATEADD() - Añade una fecha o intervalo de tiempo a una fecha y devuelve una nueva fecha. DAY(), MONTH(), YEAR() - Devuelve el día, mes o año de una fecha. Funciones de agregación: COUNT() - Cuenta el número de filas devueltas por una consulta. SUM() - Devuelve la suma de valores. AVG() - Devuelve el valor medio. MIN() - Devuelve el valor mínimo. MAX() - Devuelve el valor máximo. Otras funciones: CAST() & CONVERT() - Convierte un valor de un tipo de datos a un tipo de datos especificado. COALESCE() - Devuelve el primer noNULL ISNULL() - Devuelve el valor especificado si la expresión es NULL o la expresión es de otro tipo. NULLIF() - Devuelve NULL si dos expresiones son iguales. 11. 11. ¿Para qué sirven las funciones COALESCE() y NULLIF()? Respuesta: COALESCE() devuelve el primer valor noNULL. NULLIF() devuelve NULL si dos expresiones son iguales. A continuación se explica cómo utilizar COALESCE() en SQL. 12. ¿Qué es Funciones de ventana en SQL Server? Respuesta: Estas funciones realizan cálculos en el conjunto de filas relacionadas con la fila actual. Son similares a las funciones de agregado, pero a diferencia de éstas, las funciones de ventana no condensan el resultado en una fila. Esto permite la visualización simultánea de los valores agregados y de las filas individuales. Las funciones de ventana de SQL Server se utilizan para clasificar, agregar y analizar. Puede repasar los conceptos más importantes de las funciones de ventana con nuestra hoja de trucos de SQL Funciones de ventana . Puede practicar lo que aprenda allí en estos 11 ejercicios de funciones de ventana de SQL. Y si quieres prepararte para la entrevista de trabajo, pon a prueba tus conocimientos con estas 10 preguntas de entrevista sobre funciones ventana de SQL. 13. Encuentre las N filas superiores en SQL Server. Respuesta: Si queremos devolver las 5 primeras filas de la album tabla, podríamos hacerlo de la siguiente manera: SELECT TOP 5 * FROM albums; 14. ¿Qué hacen ROLLUP, GROUPING SETS y CUBE en T-SQL? Respuesta: Todas son extensiones de GROUP BY. ROLLUP le permite crear múltiples conjuntos de agrupación y añadir subtotales y totales generales. Con GROUPING SETS, puede definir múltiples conjuntos de agrupación, que es como combinar varias cláusulas GROUP BY en una consulta. CUBE permite crear grupos para posibles combinaciones de columnas y añadir subtotales. 15. ¿Qué es una CTE en SQL Server? Respuesta: Una CTE o Expresión de Tabla Común es el resultado temporal con nombre de una sentencia SELECT. Son similares a las subconsultas, pero a diferencia de ellas, las CTEs pueden ser usadas múltiples veces dentro de la misma consulta. También son similares a las tablas temporales. Sin embargo, el resultado de la CTE no se almacena en la memoria de la base de datos; la CTE tiene que ejecutarse cada vez que su resultado es utilizado por una consulta. Se puede hacer referencia a los resultados de la CTE en las sentencias SELECT, INSERT, UPDATE, DELETE y MERGE. Busque más detalles en el artículo que explica las CTEs en SQL Server. Para ampliar tus conocimientos, aquí tienes siete ejemplos de CTE de los que puedes aprender. 16. Explique qué es una CTE recursiva y cómo escribir una en SQL Server. Respuesta: Una CTE recursiva hace referencia a sí misma. Como una CTE normal, una CTE recursiva en SQL Server se escribe usando la cláusula WITH. La primera parte de una CTE recursiva es un miembro ancla, que produce el resultado base de la CTE. Este resultado se fusiona con el resultado de otra consulta, que se denomina miembro recursivo porque hace referencia al miembro ancla. Esta fusión se realiza mediante UNION ALL. Utilizar UNION no funcionaría (al contrario que en otras bases de datos). La tercera parte de una CTE recursiva es la condición de terminación, que especifica las condiciones que detendrán la recursión; de lo contrario, podría continuar indefinidamente. Este artículo sobre CTEs rec ursivas te enseñará cómo convertir la respuesta anterior en código. Preguntas intermedias de la entrevista de SQL Server Ahora echaremos un vistazo a las preguntas para usuarios intermedios de SQL Server. 17. ¿Cómo se crea una tabla en SQL Server? Respuesta: Las tablas en SQL Server se crean utilizando el comando CREATE TABLE. En él, se especifica el nombre de la tabla, los nombres de las columnas y el tipo de datos que aceptará cada columna. La sintaxis es la siguiente: CREATE TABLE table_name ( column_1 datatype, column_2 datatype, column_3 datatype, … ); 18. 18. ¿Qué es una clave primaria? ¿Qué es una clave externa? Respuesta: La clave primaria es una columna (o una combinación de columnas) que garantiza la identificación única de las filas de una tabla. Una clave externa es una columna o una combinación de columnas de una tabla que hace referencia a la clave primaria de otra tabla. 19. 19. ¿Cuál es la diferencia entre los comandos DELETE y TRUNCATE? Respuesta: Aunque puedan parecer similares, pertenecen a diferentes categorías de comandos SQL. DELETE es un comando de Lenguaje de Manipulación de Datos (DML) utilizado para eliminar todas o algunas de las filas (utilizando la cláusula WHERE ) de la tabla. TRUNCATE es un comando del Lenguaje de Definición de Datos (DDL). Elimina todas las filas de la tabla; no se puede utilizar para eliminar sólo algunas filas. Otra diferencia es que TRUNCATE no registra los cambios de cada fila en el registro, por lo que es más rápido que DELETE. DELETE borra fila por fila, registrando cada borrado en el registro. 19. 19. ¿Cuál es la diferencia entre una tabla y una vista en SQL Server? Respuesta: Una tabla es un objeto de base de datos que es el almacenamiento primario de datos en bases de datos relacionales. Consta de filas y columnas y se almacena en memoria. Una vista es una consulta almacenada que da como resultado una tabla virtual que contiene filas y columnas de datos. Una vista no contiene datos en sí misma y sólo los emite cuando se ejecuta. Esto mejora la facilidad de uso y la seguridad de los datos. También ahorra memoria, ya que el resultado de la vista no se almacena en memoria. 20. ¿Puede explicar los diferentes tipos de índices en SQL Server? Respuesta: SQL Server admite los siguientes índices: Hash No agrupados optimizados para memoria Agrupados No agrupados Único Columnstore Índice con columnas incluidas Índice sobre columnas computadas Filtrado Espacial XML Texto completo Las dos categorías principales de índices son los agrupados y los no agrupados. Los índices agrupados forman parte de la estructura de la tabla y determinan el orden físico de almacenamiento y ordenación en función del valor de la clave del índice. Sólo puede haber un índice agrupado por tabla. Al buscar los datos, la consulta recorre la tabla fila por fila hasta encontrar el índice especificado. Los índicesno agrupados contienen valores clave, y cada valor clave tiene un puntero a la fila de datos que contiene el valor clave. Esto significa que la consulta va directamente a la fila de datos con un índice especificado, sin necesidad de recorrer todos los datos anteriores. Estos índices se estructuran y almacenan por separado de las tablas indexadas. 21. 21. ¿Cuál es la diferencia entre una función y un procedimiento almacenado? Respuesta: Las funciones son rutinas que devuelven valores calculados y no pueden realizar cambios en los objetos de la base de datos. Deben tener al menos un parámetro y devolver algún resultado. En SQL Server, se distingue entre funciones incorporadas y funciones definidas por el usuario. Las funciones incorporadas vienen con SQL Server; se dividen en las siguientes categorías: Lasfunciones agregadas realizan un cálculo en un grupo de filas (es decir, utilizando GROUP BY y valores de columna compartidos) y devuelven un único valor para todo el grupo. Lasfunciones analíticas realizan cálculos sobre el conjunto de filas relacionadas con la fila actual. Se trata de funciones de ventana agregadas. Las funciones demanipulación de bits hacen más eficiente el trabajo con información binaria. Las funciones declasificación (es decir, las funciones de ventana de clasificación) clasifican las filas y/o los datos en un orden determinado. Las funciones deconjunto de filas contienen conjuntos de filas con todos los valores de las columnas. Se puede hacer referencia a ellas en lugar de a tablas en sentencias T-SQL. Las funcionesescalares toman un parámetro y devuelven un valor. Las funciones definidas por el usuario tienen todas las características de las funciones incorporadas, sólo que son creadas por los usuarios. Puedes crearlas, almacenarlas y llamarlas cuando quieras. Los procedimientos almacenados son sentencias SQL precompiladas que realizan repetidamente un conjunto de acciones. A diferencia de las funciones, los procedimientos almacenados no necesitan un parámetro, no tienen que devolver un resultado y pueden modificar objetos de la base de datos. INSERTLos comandos UPDATE y DELETE están permitidos en los procedimientos almacenados, pero no en las funciones. Las funciones funcionan con SELECT, WHERE, y HAVING; los procedimientos almacenados no. Los procedimientos almacenados pueden utilizar transacciones y llamar a funciones. Sin embargo, las funciones no pueden usar transacciones, ni pueden llamar a procedimientos almacenados. 22. 22. ¿Cuál es la diferencia entre una tabla temporal y una variable de tabla? Respuesta: Las tablas temporales son el almacenamiento temporal del resultado de una consulta. Sólo están disponibles para la sesión en la que se crean. Una variable de tabla es una variable local que, al igual que la tabla temporal, almacena datos temporalmente. Las variables de tabla se utilizan en funciones, procedimientos almacenados y lotes. Como las tablas temporales son tablas reales, son más adecuadas para grandes cantidades de datos que las variables de tabla. Esto significa que puede utilizar los comandos SELECT INTO, ALTER TABLE y TRUNCATE con tablas temporales. Puedes crear índices o hacer cualquier cosa que harías con una tabla "normal". Las tablas temporales también se pueden utilizar en transacciones y procedimientos almacenados, pero no se pueden utilizar en las funciones. 23. 23. ¿Qué es un Trigger? ¿Cuándo se utiliza? Respuesta: Un trigger es un tipo de procedimiento almacenado que se ejecuta automáticamente (es decir, se activa) cuando se produce un evento especificado. Los desencadenantes DML se activan cuando un usuario intenta modificar los datos de la tabla utilizando INSERT, UPDATE o DELETE. Los desencadenantes DDL se ejecutan cuando los usuarios utilizan CREATE, ALTER o DROP. También existen desencadenantes de inicio de sesión que se activan cuando un usuario establece una conexión con SQL Server. Un ejemplo de uso de un desencadenador DML es en una tabla que almacena datos sobre los empleados, incluido su salario. Podría crear un disparador para cada vez que alguien cambie información sobre un empleado; el disparador almacenará la información cambiada en una tabla separada. De esta forma, podría tener una visión histórica de los cambios de información de cada empleado. 24. 24. ¿Cuál es la diferencia entre Commit y Rollback? Respuesta: COMMIT TRANSACTION guarda permanentemente todas las modificaciones de datos que realiza una transacción. ROLLUP TRANSACTION permite deshacer todos los cambios producidos desde el último commit de cambios de transacción. SQL avanzado Servidor Preguntas de la entrevista Vamos a profundizar en el conocimiento de SQL Server y cubrir varias preguntas avanzadas de la entrevista. Puedes encontrar más preguntas avanzadas y ejemplos de codificación en este artículo. 25. ¿Puede explicar los diferentes tipos de replicación en SQL Server? Respuesta: La replicación transaccional es una replicación casi en tiempo real de la copia principal de la base de datos (publicador) a la base de datos a la que se replica (suscriptor). En la replicación merge, todos los cambios realizados sin conexión se realizan siempre que las dos bases de datos están conectadas. Es similar a la replicación transaccional, pero los cambios se realizan tanto en el editor como en el suscriptor. La replicación instantánea toma una instantánea de la copia de la base de datos principal en un momento determinado y replica sus datos en otra base de datos. La replicación peer-to-peer es una variación de la replicación transaccional que permite la replicación a través de cualquier número de servidores. La replicación transaccional bidireccional replica datos entre dos servidores, con ambos servidores publicando y suscribiéndose a los datos del otro servidor. La replicación de suscripciones actualizables se produce cuando, una vez realizado el cambio en la base de datos del suscriptor, estos datos se pasan primero a una copia de la base de datos principal. Sólo después se replica a otros suscriptores. 26. 26. Explique los diferentes tipos de bloqueos en SQL Server. Respuesta: En la gestión de bases de datos, los bloqueos son un medio para que SQL Server garantice la concurrencia de transacciones en un entorno en el que varios usuarios acceden a la misma base de datos al mismo tiempo. Cuando SQL Server procesa una consulta, decide qué recursos de datos se utilizarán y cómo. Al completar una consulta, también decide el tipo de bloqueo que se aplicará para proteger el recurso de datos. Estos son los tipos de modos de bloqueo de SQL Server: El modo de bloqueocompartido (S) se utiliza para sentencias de sólo lectura, por ejemplo, SELECT. Hace que los datos estén disponibles sólo para lectura. Esto significa que mientras se ejecuta la consulta, no permite que se modifiquen los datos. El modo de bloqueoUpdate ( U) se utiliza en datos que van a ser actualizados. A diferencia del modo de bloqueo S, sólo una transacción puede mantener un bloqueo U; esto asegura que se eviten los bloqueos. Una vez que la transacción está lista para actualizar los datos, el modo de bloqueo cambia a bloqueo X. El modo de bloqueoexclusivo ( X) se utiliza para garantizar que sólo una transacción pueda actualizar los mismos datos a la vez. Se utiliza con comandos como INSERT, UPDATE, y DELETE. El modo de bloqueo deintención ( I) garantiza que se establezca una jerarquía de bloqueos. Informa a otras transacciones sobre la intención de imponer un bloqueo S o X, impidiendo así que otra transacción los imponga. Existen tres tipos de bloqueos de intención: compartido con intención (IS), exclusivo con intención (IX) y compartido con intención exclusiva (SIX). El modo de bloqueo de esquema (Sch ) se utiliza para operaciones dependientes del esquema. El bloqueo de modificación de esquema (Sch-M) para sentencias DDL (CREATE, ALTER, DROP) impide el acceso a los datos mientras se modifica la estructura del objeto. El bloqueo de estabilidad del esquema (Sch-S) se utiliza cuando se ejecutan transacciones dependientes del esquema. Permitirá todos los demás bloqueos excepto Sch-M. El modo de bloqueo deactualización masiva (BU) se impone cuando los datos se copian de forma masiva y se especifica la sugerencia TABLOCK. El modo de bloqueopor rango de claves se utiliza en los niveles de aislamiento de transacciones serializables. Esto evita las lecturas fantasma, es decir, cuando la misma consulta devuelve resultados diferentes cada vez que se ejecuta. 27. 27. ¿Cuál es la diferencia entre un Deadlock y un Livelock? Respuesta: Un deadlock es cuando dos o más procesos se bloquean mutuamente para adquirir un bloqueo. En otras palabras, es cuando cada proceso tiene un bloqueo en un dato e intenta adquirir un bloqueo en otro dato que está bloqueado por otro proceso. SQL Server finalizará uno de los procesos. De lo contrario, el bloqueo continuaría para siempre. Un bloqueo activo se produce cuando los bloqueos compartidos se solapan, impidiendo que otro proceso adquiera un bloqueo exclusivo. 28. 28. ¿Cuál es la diferencia entre una vista materializada y una no materializada? Respuesta: Las vistas materializadas son vistas lógicas de datos cuyo resultado se guarda en una tabla, por lo que la consulta sólo debe ejecutarse una vez. Aumentan el rendimiento, ya que el resultado puede indexarse (¡es una tabla!). Por otro lado, el resultado puede no ser reciente si la salida de la vista materializada no se ha actualizado. Las vistas no materializadas también son vistas lógicas de datos, pero su salida no se guarda en ninguna parte. El inconveniente es que hay que ejecutar la vista cada vez que se desea utilizar su resultado. En una nota más positiva, se garantiza que obtendrá los datos más recientes. 29. ¿Cuál es la diferencia entre transacciones implícitas y explícitas? Respuesta: Las transacciones explícitas se inician con BEGIN TRANSACTION; el cambio en los datos se confirma con COMMIT TRANSACTION. Para las transacciones implícitas, SQL Server toma la iniciativa de iniciarlas implícitamente (sin el comando BEGIN TRANSACTION ). Sin embargo, el usuario debe confirmarlas o revertirlas explícitamente. Si se activa el modo implícito, estas son las palabras clave que iniciarán la transacción implícita: BEGIN TRANSACTION CREATE UPDATE DELETE DROP FETCH INSERT OPEN GRANT REVOKE SELECT ALTER TRUNCATE ¿Entendiendo las preguntas de la entrevista de SQL Server? Esperamos que sí. Las 29 preguntas de entrevista que presentamos (y respondimos) incluyen preguntas de entrevista generales, T-SQL, intermedias y avanzadas de SQL Server. La categoría de preguntas T-SQL es la que contiene más preguntas, lo que refleja su importancia. Como dijimos al principio, escribir consultas T-SQL es un requisito compartido por todos los puestos de trabajo que trabajan con bases de datos relacionales en cualquiera de sus formas. Por lo tanto, cuando te prepares para una entrevista, no debes descartar otras preguntas por considerarlas innecesarias. En cuanto a la gestión del tiempo, deberías centrarte en dominar T-SQL. La páginaCurso completo de SQL de MS SQL Server es una plataforma perfecta para ello. Ahora te toca a ti practicar y superar esa entrevista de trabajo. Tags: SQL Server preguntas para entrevista de SQL