SQL SERVER Flashcards

1
Q

¿Qué es un Cursor?

A

Un cursor consiste en cargar un conjunto de datos en la memoria RAM, y luego recorrerlo o navegar a través de el mediante un puntero.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

En cuanto al rendimiento, ¿Son los Cursores eficientes?

A

Las soluciones basadas en cursores son menos eficientes que las que se basan en conjunto de datos, ya que SQL está preparado para trabajar con el conjunto de datos y con los cursores lo que estamos haciendo es recorrer los registros uno a uno de forma secuencial. Por este motivo los cursores se deben usar con precaución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cuáles son los ámbitos o alcance de declaración de un cursor?

A

El ámbito de aplicación o el alcance de un cursor puede global o local

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué significa que el alcance de un cursor sea Global?

A

Especifica que el cursor estará disponible de manera global para la conexión actual.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué significa que el alcance de un cursor sea Local?

A

Esto quiere decir que el cursor solo estará disponible para el procedimiento almacenado, disparador, o consulta que contiene dicho cursor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué significa la forma de recuperación forward_only?

A

Significa que sólo se puede avanzar o desplazar desde la primera hasta la última fila, es decir no se puede retroceder.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿En un Cursor, qué significa la forma de recuperación scroll?

A

Significa que nos podemos mover de distinta forma por el cursor, específicamente tenemos las siguientes opciones para recuperar los datos:

  1. First: Se obtiene el primer registro
  2. Last: Se obtiene el último registro
  3. Next: Se obtiene el siguiente registro
  4. Prior : Se obtiene el anterior registro
  5. Relative
  6. Abosolute
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cuáles son los tipos de cursores que se pueden declarar, y explique su significado?

A

Se pueden declarar cuatro tipos de cursores:

  1. Static: este cursor llena el conjunto de resultados durante la creación del cursor y el resultado de la consulta se almacena en caché durante la vida útil del cursor. Un cursor static puede moverse hacia adelante y hacia atrás
  2. Fast_forward: Es el tipo de curso predeterminado, es igual a un cursor static pero con la diferencia de que sólo se puede mover hacia adelante
  3. Dinamic: En un cursor dinámico las adiciones y eliminaciones son visibles para otros en la fuente de datos mientras el cursor esté abierto.
  4. Keyset: es similar a un cursor dinámico, excepto que no podemos ver registros que otros agreguen. Si otro usaurio elimina un registro, es inaccesible desde nuestro conjunto de registros.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Enumera y explique los tipos de bloqueos de un cursor?

A

Un cursor puede tener los siguientes tipos de bloqueos contra las filas

  1. Read_only: Especifica que el cursor no se puede actualizar
  2. scroll_locks: Proporciona integridad de datos en el cursor. Especifica que el cursor bloqueará las filas a medida que se leen en el cursor para garantizar que las actualizaciones o eliminaciones realizadas con el cursor tengan éxito
  3. Optimistic: Especifica que el cursor no bloquea las filas a medida que se leen. Por tanto las actualizaciones o eliminaciones realizadas con el cursor no tendrán éxito si la fila se ha modificado fuera del cursor.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué son los bloqueos?

A

Un bloqueo es un proceso por el cual un sistema gestor de bases de datos restringe el acceso a una fila en un entorno multiusuario. Cuando una fila o columna se bloquea exclusivamente, otros usuarios no pueden acceder a los datos bloqueados hasta que se libere el bloqueo. Se utiliza para la integridad de los datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Cuál es la sintaxis de declaración de un cursor?

A
Declare  CURSOR [LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNBAMIC | FAST_FORWARD]
[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]
[TYPE_WARNING]
for 
[FOR UPDATE [OF [,... N]]][;]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Enumere los pasos que hay que realizar para usar un cursor

A
    • Declaración del cursor: declare cursor1 CURSOR for selec * from custumer
    • Abrir el cursor: Open cursor1
    • Navegar por el cursor: fetch first from cursor1
    • Cerrar el cursor: close cursor1
    • Desalojar de la memoria: deallocate cursor1
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Cuál es la variable del sistema que nos indica si un puntero está apuntando a un registro de un cursor?

A

@@FETCH_STATUS=0

Con esta variable, si vale cero sabemos que el puntero está apuntando a un registro del cursor, se usa para las iteraciones de un while.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué es una variable de Tabla?

A

Es una variable de SQL que almacena datos en forma tabla temporal. Las variables de tabla residen en la base de datos tempDB de forma muy similar a las tablas temporales de SQL Server locales.

Las variables de tabla solo son accesibles dentro de la sesión que las creo, no obstante solo se puede tratar de acceder a la variable de tabla dentro del lote actual, no son visibles fiera del lote, lo que significa que el concepto de jerarquía de sesión puede ignorarse de alguna manera.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Respecto al rendimiento, ¿Cómo funcionan las variables de tabla respecto a las tablas temporales?

A

Una variable de tabla es optima cuando se van a tratar pequeñas cantidades de datos, de lo contrario es más útil usar tablas temporales

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Que se debe tener en cuenta de las variables de tabla respecto a las transacciones

A

. Si un desarrollador revierte una transacción que incluye cambios en las variables de la tabla, los cambios realizados en las variables de la tabla dentro de esta transacción en particular permanecerán intactos. Esto quiere decir, otras partes de esta transacción en cuestión se revertirán, pero cualquier cosa que haga referencia a la variable de la tabla no lo hará, a menos que esa parte de su script tenga un error.

17
Q

Ejemplo de declaración una variable de tabla

A

DECLARE @TotalProduct AS TABLE
(ProductID INT NOT NULL PRIMARY KEY,
Quantity INT NOT NULL)

 INSERT INTO @TotalProduct
         ( [ProductID], [Quantity] )
 SELECT
  A.[ProductID],
  [Quantity] = SUM(B.Quantity)
FROM dbo.Product AS A
INNER JOIN dbo.SalesDetails AS B ON A.ProducitID = B.ProductID
18
Q

¿Cómo se declara y usa una tabla temporal local?

A

CREATE table #tempLead (TIPO_DOCUMENTO_ varchar (100) not null)

INSERT INTO #tempLead (TIPO_DOCUMENTO_) values (@documentoTipo)

SELECT * FROM #tempLead

19
Q

¿Qué es una tabla temporal locales?

A

Una tabla temporal local sólo es visible para la sesición actual. No pueden ser vistas ni utilizadaspor procesos o consultas fuera de la sesión en la que esta se declara.

Las tablas tenporales locales se crean en la base de dtaos tempdb.

Las tablas temporales locales, se crear usando el “hastag” seguido del nombre la tabla, #.