programaciÓn con transact-sql - uni · 2021. 1. 20. · transact-sql (t-sql) extiende el estándar...

22
PROGRAMACIÓN CON TRANSACT-SQL CEPSUNI 2021 LIMA - PERU

Upload: others

Post on 10-Aug-2021

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

CEPSUNI – 2021

LIMA - PERU

Page 2: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 2 de 114

PROGRAMACIÓN CON TRANSACT SQL

Derechos Reservados © 2021 CEPS-UNI

Primera Edición

LIMA - PERÚ

Page 3: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 3 de 114

PRESENTACIÓN

TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación

procedimental, funciones de usuario, variables locales, estructuras de control, control

de errores, gestión de transacciones, etc.

T-SQL es un lenguaje muy potente que te permite definir casi cualquier tarea que

quieras ejecutar sobre la base de datos; incluye características propias de cualquier

lenguaje de programación, características que te permiten definir la lógica necesaria

para el tratamiento de datos.

En el desarrollo de aplicaciones en general, muchas veces te encuentras con la duda

de si la lógica de negocio lo programamos en la aplicación, por ejemplo, con Java, o

en la base de datos con procedimientos almacenados. Tal vez aplicar una solución

mixta, parte de la lógica en la aplicación y parte en la base de datos.

La posibilidad de que desarrolles las reglas de negocio en procedimientos

almacenados puede representar muchas ventajas, por ejemplo, si hay algún cambio

en la regla de negocio, puede que sea suficiente la actualización el procedimiento

almacenado, y no harías ningún cambio en la aplicación.

Al estudiar este curso te estás preparando como programador para que puedas

desempeñarte como programador de base de datos SQL Server.

Page 4: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 4 de 114

Índice

BASES DE DATOS ................................................................................................................................................ 9

OBTENER SCRIPTS ........................................................................................................................................... 9

BASE DE DATOS DE RECURSOS HUMANOS – RH .............................................................................................. 9

BASE DE DATOS ACADÉMICA – EDUCA .......................................................................................................... 10

BASE DE DATOS ACADÉMICA – EDUTEC ................................................................................................................ 10

BASE DE DATOS DE COMERCIAL – NORTHWIND ............................................................................................ 11

BASE DE DATOS EUREKABANK .......................................................................................................................... 12

CAPÍTULO 1 GESTIÓN DE INDICES..................................................................................................................... 13

CONCEPTO ................................................................................................................................................... 13

ACCESO A LOS DATOS ................................................................................................................................... 14

CRITERIOS PARA CREAR ÍNDICES ................................................................................................................... 15

Razones para crear índices ....................................................................................................................... 15

Razones para no crear índices .................................................................................................................. 15

Columnas a indexar ................................................................................................................................. 16

Columnas que no deben indexarse ........................................................................................................... 16

TIPOS DE ÍNDICES ......................................................................................................................................... 17

Indice clustered ........................................................................................................................................ 17

Indice nonclustered .................................................................................................................................. 17

CREACIÓN DE INDICES .................................................................................................................................. 18

Creación de índice CLUSTERED ................................................................................................................. 18

Creación de índice NONCLUSTERED.......................................................................................................... 18

Creación de índice UNIQUE ...................................................................................................................... 18

MANTENIMIENTO DE INDICES ...................................................................................................................... 19

Borrar un índice ....................................................................................................................................... 19

Regenerar un índice ................................................................................................................................. 19

Regenerar los índices de una tabla ........................................................................................................... 19

Fragmentación de índices ........................................................................................................................ 20

Reorganizar índices .................................................................................................................................. 20

Reorganizar todos los índices de una tabla .............................................................................................. 20

CAPÍTULO 2 FUNDAMENTOS GENERALES ........................................................................................................ 21

INTRODUCCIÓN ............................................................................................................................................ 21

T-SQL permite .......................................................................................................................................... 21

T-SQL no permite ..................................................................................................................................... 21

REGLAS DE FORMATO DE LOS IDENTIFICADORES .......................................................................................... 22

Page 5: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 5 de 114

LAS EXPRESIONES ......................................................................................................................................... 23

Tipos de operadores ................................................................................................................................. 23

Resultados de la expresión ....................................................................................................................... 23

OTROS ELEMENTOS DEL LENGUAJE............................................................................................................... 24

Comentarios ............................................................................................................................................ 24

BEGIN...END ............................................................................................................................................. 24

CAPÍTULO 3 FUNDAMENTOS DE PROGRAMACIÓN .......................................................................................... 25

BLOQUE ANÓNIMO ...................................................................................................................................... 25

FUNCIONES .................................................................................................................................................. 26

Función Escalar ........................................................................................................................................ 26

Función de tabla en línea ......................................................................................................................... 27

Función de tabla de múltiples instrucciones ............................................................................................. 28

PROCEDIMIENTOS ........................................................................................................................................ 30

ELEMENTOS DE PROGRAMACIÓN ................................................................................................................. 32

Variables.................................................................................................................................................. 32

Sentencia de asignación ........................................................................................................................... 32

EJERCICIOS PROPUESTOS .............................................................................................................................. 33

CAPÍTULO 4 ESTRUCTURAS DE CONTROL ......................................................................................................... 34

BLOQUE........................................................................................................................................................ 34

ESTRUCTURAS CONDICIONALES ................................................................................................................... 34

Estructura: IF ........................................................................................................................................... 34

Estructura: CASE ...................................................................................................................................... 35

ESTRUCTURAS DE BUCLE .............................................................................................................................. 37

Estructura WHILE ..................................................................................................................................... 37

Sentencia BREAK ...................................................................................................................................... 37

Sentencia CONTINUE ............................................................................................................................... 37

Sentencia GOTO ....................................................................................................................................... 37

CAPÍTULO 5 GESTIÓN DE DATOS ...................................................................................................................... 39

INSERTANDO DATOS..................................................................................................................................... 39

Sentencia INSERT ..................................................................................................................................... 39

Insertar una sola fila de datos .................................................................................................................. 39

Insertar varias filas de datos .................................................................................................................... 40

Insertar datos en una tabla con una columna identidad ........................................................................... 40

Usar TOP para limitar los datos insertados de la tabla origen .................................................................. 41

Ejercicio 1 ................................................................................................................................................ 42

Ejercicio 2 ................................................................................................................................................ 42

ACTUALIZANDO DATOS ................................................................................................................................ 43

Sentencia UPDATE ................................................................................................................................... 43

Usar una instrucción UPDATE simple........................................................................................................ 43

Actualizar varias columnas ...................................................................................................................... 43

Usar la cláusula WHERE ........................................................................................................................... 44

Page 6: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 6 de 114

Usar la cláusula TOP ................................................................................................................................ 45

Usar la cláusula WITH common_table_expression ................................................................................... 47

Especificar una subconsulta en la cláusula SET ......................................................................................... 48

Ejercicio 3 ................................................................................................................................................ 49

ELIMINANDO FILAS ....................................................................................................................................... 50

Sentencia DELETE ..................................................................................................................................... 50

DELETE sin la cláusula WHERE ................................................................................................................. 50

Usar la cláusula WHERE para eliminar un conjunto de filas ...................................................................... 50

Usar la cláusula WHERE con una condición compleja ............................................................................... 51

Utilizar la cláusula TOP para limitar el número de filas eliminadas ........................................................... 53

Ejercicio 4 ................................................................................................................................................ 55

COMBINANDO DATOS .................................................................................................................................. 56

SENTENCIA MERGE .......................................................................................................................................... 56

Usar MERGE para realizar operaciones INSERT y UPDATE ........................................................................ 56

Usar MERGE para realizar operaciones UPDATE y DELETE ....................................................................... 58

TRANSACCIONES .......................................................................................................................................... 60

Definición................................................................................................................................................. 60

Propiedades de una Transacción .............................................................................................................. 61

Tipos de Transacciones ............................................................................................................................ 61

CAPÍTULO 6 CONTROL DE ERRORES ................................................................................................................. 64

CONTROL DE ERRORES.................................................................................................................................. 64

Variable: @@ROWCOUNT ....................................................................................................................... 64

Función: ROWCOUNT_BIG ( ) ................................................................................................................... 64

Variable: @@ERROR ................................................................................................................................ 64

Función: RAISERROR ( ) ............................................................................................................................ 65

MANEJO DE EXCEPCIONES ............................................................................................................................ 66

Estructura TRY/CATCH ............................................................................................................................. 66

Sentencia: THROW ................................................................................................................................... 70

REQUERIMIENTOS A RESOLVER .................................................................................................................... 71

Requerimiento 1 ...................................................................................................................................... 71

Requerimiento 2 ...................................................................................................................................... 71

Requerimiento 3 ...................................................................................................................................... 72

CAPÍTULO 7 TRABAJANDO CON CURSORES ...................................................................................................... 73

TRABAJANDO CON CURSORES ...................................................................................................................... 73

Declaración .............................................................................................................................................. 73

Abrir un cursor ......................................................................................................................................... 74

Recuperar filas de un cursor ..................................................................................................................... 74

Cerrar un cursor ....................................................................................................................................... 75

Liberar recursos de un cursor ................................................................................................................... 75

CONTROL DE UN CURSOR ............................................................................................................................. 76

Variable: @@FETCH_STATUS................................................................................................................... 76

Variable: @@CURSOR_ROWS .................................................................................................................. 78

Page 7: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 7 de 114

Función: CURSOR_STATUS ( ) ................................................................................................................... 80

BUCLE DE EXTRACCIÓN ................................................................................................................................. 84

Plantilla ................................................................................................................................................... 84

EJERCICIOS ................................................................................................................................................... 85

Ejercicio 12 .............................................................................................................................................. 85

Ejercicio 13 .............................................................................................................................................. 85

USO DE TABLAS TEMPORALES ....................................................................................................................... 86

Variables de tipo tabla ............................................................................................................................. 86

Tablas temporales locales ........................................................................................................................ 88

Tablas temporales globales...................................................................................................................... 90

EJERCICIOS ................................................................................................................................................... 92

Ejercicio 14 .............................................................................................................................................. 92

Ejercicio 15 .............................................................................................................................................. 92

CAPÍTULO 8 GESTION DE TRIGGERS ................................................................................................................. 93

INTRODUCCIÓN ............................................................................................................................................ 93

TIPOS DE DESENCADENANTES DDL ............................................................................................................... 94

Desencadenante Transact-SQL DDL ......................................................................................................... 94

Desencadenante CLR DLL ......................................................................................................................... 94

ÁMBITO DE LOS DESENCADENANTES DDL ..................................................................................................... 95

MANTENIMIENTO DE DESENCADENANTES DDL ............................................................................................ 99

Creación de desencadenantes DDL ........................................................................................................... 99

Modificar desencadenantes DDL .............................................................................................................. 99

DESHABILITAR Y ELIMINAR DESENCADENANTES DDL .................................................................................. 100

EJEMPLOS................................................................................................................................................... 101

Ejemplo 32: Log de cambios en el sistema .............................................................................................. 101

CAPÍTULO 9 PRACTICAS CALIFICADAS ............................................................................................................ 107

PRACTICA CALIFICADA 1 ............................................................................................................................. 107

Problema 1 ............................................................................................................................................ 107

Problema 2 ............................................................................................................................................ 107

Problema 3 ............................................................................................................................................ 107

Problema 4 ............................................................................................................................................ 107

PRACTICA CALIFICADA 2 ............................................................................................................................. 108

Problema 5 ............................................................................................................................................ 108

Problema 6 ............................................................................................................................................ 108

Problema 7 ............................................................................................................................................ 108

Problema 8 ............................................................................................................................................ 108

PRACTICA CALIFICADA 3 ............................................................................................................................. 109

Base de datos ........................................................................................................................................ 109

Problema 9 ............................................................................................................................................ 109

Problema 10 .......................................................................................................................................... 109

Problema 11 .......................................................................................................................................... 109

Problema 12 .......................................................................................................................................... 109

Page 8: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 8 de 114

PRACTICA CALIFICADA 4 ............................................................................................................................. 110

Problema 13 .......................................................................................................................................... 110

Problema 14 .......................................................................................................................................... 111

Problema 15 .......................................................................................................................................... 112

CURSOS RELACIONADOS ................................................................................................................................ 113

Page 9: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 9 de 114

BASES DE DATOS

OBTENER SCRIPTS

Para obtener los scripts de las bases de datos utilizadas en la presente separata utiliza

la siguiente URL:

https://github.com/gcoronelc/databases

BASE DE DATOS DE RECURSOS HUMANOS – RH

Base de datos básica de recursos humanos.

Page 10: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 10 de 114

BASE DE DATOS ACADÉMICA – EDUCA

Base de datos bastante simple de gestión académica.

Base de datos Académica – EDUTEC

Base de datos de gestión de cursos cortos.

Page 11: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 11 de 114

BASE DE DATOS DE COMERCIAL – NORTHWIND

Base de datos comercial clásica de SQL Server.

Page 12: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 12 de 114

Base de datos EUREKABANK

Modelo de base de datos de gestión de cuentas de ahorro de una institución

financiera.

Cliente

chr_cliecodigo: char(5) NOT NULL

vch_cliepaterno: varchar(25) NOT NULL

vch_cliematerno: varchar(25) NOT NULL

vch_clienombre: varchar(30) NOT NULL

chr_cliedni: char(8) NOT NULL

vch_clieciudad: varchar(30) NOT NULL

vch_cliedireccion: varchar(50) NOT NULL

vch_clietelefono: varchar(20) NULL

vch_clieemail: varchar(50) NULL

Contador

vch_conttabla: varchar(30) NOT NULL

int_contitem: integer NOT NULL

int_contlongitud: integer NOT NULL

Moneda

chr_monecodigo: char(2) NOT NULL

vch_monedescripcion: varchar(20) NOT NULL

CargoMantenimiento

chr_monecodigo: char(2) NOT NULL (FK)

dec_cargMontoMaximo: money NOT NULL

dec_cargImporte: money NOT NULL

CostoMovimiento

chr_monecodigo: char(2) NOT NULL (FK)

dec_costimporte: money NOT NULL

InteresMensual

chr_monecodigo: char(2) NOT NULL (FK)

dec_inteimporte: money NOT NULL

Parametro

chr_paracodigo: char(3) NOT NULL

vch_paradescripcion: varchar(50) NOT NULL

vch_paravalor: varchar(70) NOT NULL

vch_paraestado: varchar(15) NOT NULL

Empleado

chr_emplcodigo: char(4) NOT NULL

vch_emplpaterno: varchar(25) NOT NULL

vch_emplmaterno: varchar(25) NOT NULL

vch_emplnombre: varchar(30) NOT NULL

vch_emplciudad: varchar(30) NOT NULL

vch_empldireccion: varchar(50) NOT NULL

vch_emplusuario: varchar(15) NOT NULL

vch_emplclave: varchar(15) NOT NULL

Cuenta

chr_cuencodigo: char(8) NOT NULL

chr_monecodigo: char(2) NOT NULL (FK)

chr_sucucodigo: char(3) NOT NULL (FK)

chr_emplcreacuenta: char(4) NOT NULL (FK)

chr_cliecodigo: char(5) NOT NULL (FK)

dec_cuensaldo: money NOT NULL

dtt_cuenfechacreacion: datetime NOT NULL

vch_cuenestado: varchar(15) NOT NULL

int_cuencontmov: integer NOT NULL

chr_cuenclave: char(6) NOT NULL

Sucursal

chr_sucucodigo: char(3) NOT NULL

vch_sucunombre: varchar(50) NOT NULL

vch_sucuciudad: varchar(30) NOT NULL

vch_sucudireccion: varchar(50) NOT NULL

int_sucucontcuenta: integer NOT NULL

Movimiento

chr_cuencodigo: char(8) NOT NULL (FK)

int_movinumero: integer NOT NULL

chr_emplcodigo: char(4) NOT NULL (FK)

chr_tipocodigo: char(3) NOT NULL (FK)

dtt_movifecha: datetime NOT NULL

dec_moviimporte: money NOT NULL

chr_cuenreferencia: char(8) NULL TipoMovimiento

chr_tipocodigo: char(3) NOT NULL

vch_tipodescripcion: varchar(40) NOT NULL

vch_tipoaccion: varchar(10) NOT NULL

vch_tipoestado: varchar(15) NOT NULL

Asignado

chr_asigcodigo: char(6) NOT NULL

chr_sucucodigo: char(3) NOT NULL (FK)

chr_emplcodigo: char(4) NOT NULL (FK)

dtt_asigfechaalta: datetime NOT NULL

dtt_asigfechabaja: datetime NULL

Page 13: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 13 de 114

Capítulo 1

GESTIÓN DE INDICES

CONCEPTO

Un índice es una estructura que proporciona acceso rápido a las filas de una tabla en

base a los valores de una o más columnas (clave).

Un índice es un conjunto de valores claves y apuntadores lógicos que permite ejecutar

búsqueda de registros de modo similar a la manera como buscamos un tema en el

índice analítico de un libro. Por lo general, todas las consultas se ejecutan más rápido

cuando se utilizan índices.

Page 14: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 14 de 114

ACCESO A LOS DATOS

SQL Server accede a los datos de una de estas dos maneras:

▪ Examinando todas las páginas de datos de la tabla. Este proceso se conoce

como Table Scan. Cuando SQL Server realiza un Table Scan, esto es lo que

sucede:

✓ Lee desde el principio de la tabla.

✓ Examina página a página todas las filas de la tabla.

✓ Extrae las filas que corresponden al criterio de la consulta.

▪ Usando los índices. Este proceso se conoce como Index Seek. Cuando SQL

Server usa un índice, esto es lo que sucede:

✓ Atraviesa la estructura de árbol del índice para encontrar las filas que la

consulta requiere.

✓ Extrae solo las filas que se corresponden con el criterio de la consulta.

Cuando se envía una consulta, SQL Server determina primero si un índice existe.

Entonces, el Query Optimizer, el componente responsable de generar el plan de

ejecución óptimo para la consulta, determina si es más eficaz examinar la tabla o

utilizar el índice para acceder a los datos.

Page 15: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 15 de 114

CRITERIOS PARA CREAR ÍNDICES

Si estás considerando crear un índice, aquí tienes algunas recomendaciones.

Razones para crear índices

Los índices aceleran la recuperación de los datos. Por ejemplo, sin ningún índice,

tendrías que recorrer todas las páginas de un libro hasta encontrar la información que

estamos buscando.

▪ Refuerzan la unicidad de las filas.

▪ Incrementan la velocidad de recuperación de datos:

✓ Los joins se ejecutan más rápido si la columna llave foránea está

indexada.

✓ Las consultas ORDER BY y GROUP BY se ejecutan más rápido.

Razones para no crear índices

En general, cuando ejecutamos operaciones de lectura, los índices favorecen el

proceso; cuando las operaciones son de escritura, los índices hacen que el

rendimiento del sistema disminuya.

▪ Consumen espacio de disco.

▪ Producen sobrecarga en el sistema. Cuando se modifican datos de columnas

indexadas, el índice es actualizado automáticamente para reflejar los

cambios.

Page 16: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 16 de 114

Columnas a indexar

▪ Clave primaria.

▪ Clave foránea.

▪ Columnas en las que se busca por rango de valores.

▪ Columnas utilizadas como criterio de ordenamiento.

Columnas que no deben indexarse

▪ Columnas en las que no se ejecuta búsqueda.

▪ Columnas con pocos valores únicos o que retornan un gran porcentaje de

filas.

▪ Columnas de tipo bit, text o image.

Page 17: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 17 de 114

TIPOS DE ÍNDICES

Hay dos opciones para el almacenamiento físico de sus índices:

▪ índice agrupado (clustered)

▪ índice no agrupado (nonclustered)

Indice clustered

▪ Ordena físicamente la tabla. Las filas de la tabla se ordenan según el orden

de los valores claves del índice clustered.

▪ Solo se puede definir un índice clustered por cada tabla.

Indice nonclustered

▪ Es el tipo de índice por defecto.

▪ Se reconstruyen automáticamente cuando se crea, se elimina o se redefine el

índice clustered.

Observación:

▪ Se pueden definir hasta 249 índices por tabla.

▪ Siempre crear el índice clustered antes que los índices nonclustered.

Page 18: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 18 de 114

CREACIÓN DE INDICES

Sintaxis

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]

INDEX NombreDelIndice

ON NombreDeTabla(Columna1, Columna2, ...)

[ FILLFACTOR = <factor de relleno> ]

Para mayor información consultar:

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-index-transact-sql

Creación de índice CLUSTERED

Ejemplo 1

CREATE CLUSTERED INDEX EMPLEADO_IDXC

ON EMPLEADO(ID_PERSONA)

Creación de índice NONCLUSTERED

Ejemplo 2

CREATE INDEX EMPLEADO_IDXN

ON EMPLEADO(NOMBRE)

Creación de índice UNIQUE

El índice UNIQUE es aquel que no permite repetición de los valores que conforman el

índice.

Ejemplo 3

CREATE UNIQUE INDEX EMPLEADO_IDXU

ON EMPLEADO(EMAIL)

Page 19: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 19 de 114

MANTENIMIENTO DE INDICES

Borrar un índice

Sintaxis

DROP INDEX NombreDeTabla.NombreDeIndice

Regenerar un índice

ALTER INDEX <index name> ON <table name> REBUILD

Regenerar los índices de una tabla

ALTER INDEX ALL ON <table name> REBUILD

Page 20: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 20 de 114

Fragmentación de índices

SELECT

c.name "Table name",

b.name "Index",

avg_fragmentation_in_percent "Frag (%)",

page_count "Page count"

FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL ) AS a

JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id

JOIN sys.tables c ON b.object_id = c.object_id

ORDER BY 3 DESC;

GO

Reorganizar índices

Sintaxis

ALTER INDEX <index name> ON <table name> REORGANIZE

Reorganizar todos los índices de una tabla

Sintaxis

ALTER INDEX ALL ON <table name> REORGANIZE

Page 21: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 113 de 114

CURSOS RELACIONADOS

Para contactarte con algún representante del CEPS-UNI tienes la siguiente URL:

https://www.ceps.uni.edu.pe/contacto/

A continuación, tienes la lista de cursos relaciones que te pueden interesar:

Page 22: PROGRAMACIÓN CON TRANSACT-SQL - UNI · 2021. 1. 20. · TRANSACT-SQL (T-SQL) extiende el estándar de SQL para incluir programación procedimental, funciones de usuario, variables

PROGRAMACIÓN CON

TRANSACT-SQL

https://www.ceps.uni.edu.pe/ Página 114 de 114