Capítulo 1: Modelo conceptual
A. Recordatorios sobre el almacenaje de datos . . . . . . . 7
1. Las distintas categorías de datos . . . . . . . . . . . . . . . 7
a. Los datos básicos . . . . . . . . . . . . . . . . . . . . 8
b. Los datos de movimiento . . . . . . . . . . . . . . . . . 8
c. Los datos de trabajo . . . . . . . . . . . . . . . . . . . 8
d. Los datos de archivo. . . . . . . . . . . . . . . . . . . 8
2. La organización de los datos . . . . . . . . . . . . . . . . . 9
a. Directa . . . . . . . . . . . . . . . . . . . . . . . . 9
b. Secuencial . . . . . . . . . . . . . . . . . . . . . . . 9
c. Secuencial indexada . . . . . . . . . . . . . . . . . . . 9
d. Base de datos jerárquica . . . . . . . . . . . . . . . . . 10
e. Base de datos relacional . . . . . . . . . . . . . . . . . 10
3. La normalización del esquema relacional . . . . . . . . . . . . 11
B. El modelo relacional . . . . . . . . . . . . . . . . . 13
1. Conceptos y definiciones . . . . . . . . . . . . . . . . . . 14
2. Reglas principales . . . . . . . . . . . . . . . . . . . . . 16
C. El álgebra relacional. . . . . . . . . . . . . . . . . 18
1. Operadores . . . . . . . . . . . . . . . . . . . . . . . . 19
2. Etapas de la resolución de un problema . . . . . . . . . . . . 27
Capítulo 2: Implementacíon
de bases de datos
A. Administración de una base de datos . . . . . . . . . 39
1. Administración del espacio de almacenamiento . . . . . . . . . 40
2. Administración de los objetos DATABASE . . . . . . . . . . . 42
a. Creación de la base de datos . . . . . . . . . . . . . . . 43
b. Modificación de tamaño . . . . . . . . . . . . . . . . . 46
c. Eliminación de la base de datos . . . . . . . . . . . . . . 50
d. Renombrar una base de datos. . . . . . . . . . . . . . . 50
e. Configuración de una base de datos . . . . . . . . . . . . 51
B. Gestión de las tablas y los índices . . . . . . . . . . . 58
1. Identificador . . . . . . . . . . . . . . . . . . . . . . . . 58
2. Los tipos de datos . . . . . . . . . . . . . . . . . . . . . 59
a. Tipos de datos de sistema . . . . . . . . . . . . . . . . 59
b. Tipos de datos definidos por el usuario . . . . . . . . . . . 65
3. Gestión de las tablas . . . . . . . . . . . . . . . . . . . . 70
a. Creación de tabla . . . . . . . . . . . . . . . . . . . . 70
b. Modificación de una tabla . . . . . . . . . . . . . . . . 73
c. Eliminación de una tabla . . . . . . . . . . . . . . . . . 75
d. Nombre completo de una tabla . . . . . . . . . . . . . . 75
C. Implementación de la integridad de los datos . . . . . . 76
1. Los valores por defecto . . . . . . . . . . . . . . . . . . . 76
2. Reglas . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3. La propiedad Identity . . . . . . . . . . . . . . . . . . . . 77
Capítulo 2
4. Las restricciones de integridad . . . . . . . . . . . . . . . . 80
a. NOT NULL. . . . . . . . . . . . . . . . . . . . . . . 81
b. PRIMARY KEY . . . . . . . . . . . . . . . . . . . . . 81
c. UNIQUE . . . . . . . . . . . . . . . . . . . . . . . . 83
d. REFERENCIAS . . . . . . . . . . . . . . . . . . . . . 85
e. DEFAULT . . . . . . . . . . . . . . . . . . . . . . . 87
f. CHECK . . . . . . . . . . . . . . . . . . . . . . . . 89
5. Gestión de los índices. . . . . . . . . . . . . . . . . . . . 90
a. Creación de un índice . . . . . . . . . . . . . . . . . . 95
b. Eliminación de un índice . . . . . . . . . . . . . . . . . 99
c. Reconstruir un índice . . . . . . . . . . . . . . . . . . 99
d. Actualización de las estadísticas . . . . . . . . . . . . . . 101
e. Información sobre los índices . . . . . . . . . . . . . . . 104
6. Seguimiento y verificación de las bases y de los objetos . . . . . 105
38 SQL Server 2008
Capítulo 3: Los órdenes SQL
A. Generalidades . . . . . . . . . . . . . . . . . . . 109
1. Expresiones . . . . . . . . . . . . . . . . . . . . . . . . 110
2. Operadores . . . . . . . . . . . . . . . . . . . . . . . . 112
3. Funciones. . . . . . . . . . . . . . . . . . . . . . . . . 116
B. SQL-DML . . . . . . . . . . . . . . . . . . . . . 132
1. Creación de filas . . . . . . . . . . . . . . . . . . . . . . 132
2. Modificación de filas . . . . . . . . . . . . . . . . . . . . 137
3. Eliminación de filas. . . . . . . . . . . . . . . . . . . . . 139
4. Extracción de filas . . . . . . . . . . . . . . . . . . . . . 141
5. Operaciones de álgebra relacional . . . . . . . . . . . . . . . 142
a. Selección de columnas . . . . . . . . . . . . . . . . . . 142
b. Restricción . . . . . . . . . . . . . . . . . . . . . . . 145
c. Cálculos elementales . . . . . . . . . . . . . . . . . . 146
d. Proyección . . . . . . . . . . . . . . . . . . . . . . . 148
e. Cálculos de agregados . . . . . . . . . . . . . . . . . . 149
f. Producto cartesiano . . . . . . . . . . . . . . . . . . . 151
g. Combinación . . . . . . . . . . . . . . . . . . . . . . 152
h. Combinaciones externas . . . . . . . . . . . . . . . . . 154
i. Order By. . . . . . . . . . . . . . . . . . . . . . . . 156
j. Unión . . . . . . . . . . . . . . . . . . . . . . . . . 157
k. Except . . . . . . . . . . . . . . . . . . . . . . . . 158
l. Intersect . . . . . . . . . . . . . . . . . . . . . . . . 159
m. Extraer solamente las primeras filas . . . . . . . . . . . . 160
6. Consulta de creación de tabla . . . . . . . . . . . . . . . . 162
7. Forzar el optimizador de consulta . . . . . . . . . . . . . . . 163
8. Tablas CTE . . . . . . . . . . . . . . . . . . . . . . . . 164
Capítulo 3
9. Generación de filas estadísticas. . . . . . . . . . . . . . . . 166
[Link] anidadas . . . . . . . . . . . . . . . . . . . 172
[Link] y UNPIVOT . . . . . . . . . . . . . . . . . . . . . 174
[Link]. . . . . . . . . . . . . . . . . . . . . . . . . . 179
C. Gestión de las vistas . . . . . . . . . . . . . . . . 181
108 SQL Server 2008
Capítulo 4: Transact SQL:
el lenguaje procedimental
A. El SQL procedimental . . . . . . . . . . . . . . . . 189
1. Gestión de variables de usuario. . . . . . . . . . . . . . . . 189
2. Variables de sistema . . . . . . . . . . . . . . . . . . . . 190
3. Las transacciones . . . . . . . . . . . . . . . . . . . . . 194
4. Gestión de los lotes y de los scripts . . . . . . . . . . . . . . 200
5. Control de flujo . . . . . . . . . . . . . . . . . . . . . . 201
a. RETURN . . . . . . . . . . . . . . . . . . . . . . . 201
b. PRINT . . . . . . . . . . . . . . . . . . . . . . . . 202
c. CASE . . . . . . . . . . . . . . . . . . . . . . . . . 203
d. BEGIN... END . . . . . . . . . . . . . . . . . . . . . 204
e. IF . . . . . . . . . . . . . . . . . . . . . . . . . . 204
f. WHILE . . . . . . . . . . . . . . . . . . . . . . . . 205
g. OUTPUT. . . . . . . . . . . . . . . . . . . . . . . . 206
6. Gestión de los cursores . . . . . . . . . . . . . . . . . . . 208
a. DECLARE CURSOR . . . . . . . . . . . . . . . . . . . 208
b. OPEN . . . . . . . . . . . . . . . . . . . . . . . . . 210
c. FETCH . . . . . . . . . . . . . . . . . . . . . . . . 211
d. CLOSE . . . . . . . . . . . . . . . . . . . . . . . . 211
e. DEALLOCATE . . . . . . . . . . . . . . . . . . . . . 212
7. Gestión de excepciones . . . . . . . . . . . . . . . . . . . 213
a. Mensajes de error . . . . . . . . . . . . . . . . . . . . 213
b. Desencadenar un error . . . . . . . . . . . . . . . . . . 215
c. Definir un mensaje de error . . . . . . . . . . . . . . . . 217
d. Gestión de los errores . . . . . . . . . . . . . . . . . . 222
Capítulo 4
B. Gestión de los procedimientos almacenados . . . . . . . 225
C. Las funciones definidas por el usuario . . . . . . . . . 229
1. Creación de funciones. . . . . . . . . . . . . . . . . . . . 230
2. Modificación de una función . . . . . . . . . . . . . . . . . 234
3. Eliminación de una función . . . . . . . . . . . . . . . . . 235
4. CROSS APPLY y OUTER APPLY . . . . . . . . . . . . . . . 236
D. El contexto de ejecución . . . . . . . . . . . . . . . 236
E. Desencadenadores (triggers) . . . . . . . . . . . . . 239
188 SQL Server 2008
Capítulo 5 : Gestión de datos
distribuidos
A. SQL Server Integration Services . . . . . . . . . . . . 250
1. Principios de funcionamiento . . . . . . . . . . . . . . . . . 251
2. Herramientas gráficas . . . . . . . . . . . . . . . . . . . . 252
a. Business Intelligence Development Studio . . . . . . . . . . 253
b. SQL Server Management Studio . . . . . . . . . . . . . . 253
3. Asistente de importación y exportación. . . . . . . . . . . . . 254
4. SSIS Designer . . . . . . . . . . . . . . . . . . . . . . . 264
5. Otras utilidades . . . . . . . . . . . . . . . . . . . . . . 269
a. Ejecutar Paquete . . . . . . . . . . . . . . . . . . . . 269
b. Utilidades de línea de comandos . . . . . . . . . . . . . 271
B. Modificar una base de datos . . . . . . . . . . . . . 272
1. Separar una base de datos . . . . . . . . . . . . . . . . . 272
a. Desde SQL Server Management Studio . . . . . . . . . . . 273
b. Desde Transact SQL . . . . . . . . . . . . . . . . . . . 274
2. Adjuntar una base de datos . . . . . . . . . . . . . . . . . 276
a. Desde SQL Server Management Studio . . . . . . . . . . . 276
b. Desde Transact SQL . . . . . . . . . . . . . . . . . . . 277
3. Mover una base de datos o archivos . . . . . . . . . . . . . 279
C. El programa BCP . . . . . . . . . . . . . . . . . . 279
Capítulo 5
D. Los servidores remotos. . . . . . . . . . . . . . . . 285
1. Gestión de servidores remotos . . . . . . . . . . . . . . . . 286
a. Agregar un servidor vinculado . . . . . . . . . . . . . . . 287
b. Eliminar un servidor vinculado. . . . . . . . . . . . . . . 288
2. Gestión de usuarios remotos . . . . . . . . . . . . . . . . . 289
3. Uso de recursos remotos . . . . . . . . . . . . . . . . . . 290
4. Los sinónimos . . . . . . . . . . . . . . . . . . 290
E. La administración de las transacciones distribuidas. . . . 292
1. MS DTC . . . . . . . . . . . . . . . . . . . . . . . . . 293
2. Implementación en Transact-SQL . . . . . . . . . . . . . . . 293
248 SQL Server 2008
Capítulo 6: Los tipos avanzados
A. Trabajar con el formato XML . . . . . . . . . . . . . 297
1. El tipo XML . . . . . . . . . . . . . . . . . . . . . . . . 299
2. Trabajar con una columna de tipo XML . . . . . . . . . . . . 305
a. Operaciones de DML . . . . . . . . . . . . . . . . . . 305
b. Métodos específicos . . . . . . . . . . . . . . . . . . . 307
3. Indexar una columna de tipo XML . . . . . . . . . . . . . . 311
a. Índice principal . . . . . . . . . . . . . . . . . . . . . 311
b. Índice secundario . . . . . . . . . . . . . . . . . . . . 312
4. XQuery y XPath . . . . . . . . . . . . . . . . . . . . . . 313
5. FOR XML . . . . . . . . . . . . . . . . . . . . . . . . . 320
6. OpenXML . . . . . . . . . . . . . . . . . . . . . . . . . 323
7. OPENROWSET . . . . . . . . . . . . . . . . . . . . . . 325
B. Servicios Web XML . . . . . . . . . . . . . . . . . 326
1. Principios de funcionamiento . . . . . . . . . . . . . . . . . 326
2. Punto de entrada HTTP . . . . . . . . . . . . . . . . . . . 328
a. CREATE ENDPOINT . . . . . . . . . . . . . . . . . . . 329
b. ALTER ENDPOINT . . . . . . . . . . . . . . . . . . . 331
c. DROP ENDPOINT . . . . . . . . . . . . . . . . . . . . 331
C. Parámetros con valor de tabla . . . . . . . . . . . . 332
D. Las estructuras jerárquicas . . . . . . . . . . . . . . 334
1. HierarchyId . . . . . . . . . . . . . . . . . . . . . . . . 334
2. Los índices . . . . . . . . . . . . . . . . . . . . . . . . 335
3. Los métodos . . . . . . . . . . . . . . . . . . . . . . . 336
Capítulo 6
E. Los datos no estructurados . . . . . . . . . . . . . . 339
F. Los datos espaciales . . . . . . . . . . . . . . . . 345
296 SQL Server 2008
Capítulo 7: CLR
A. SQL Server y el CLR . . . . . . . . . . . . . . . . 349
1. ¿Transact SQL o CLR? . . . . . . . . . . . . . . . . . . . 349
a. Las funciones escalares . . . . . . . . . . . . . . . . . 351
b. Las funciones que devuelven una tabla . . . . . . . . . . . 351
2. Trabajar con el código CLR . . . . . . . . . . . . . . . . . 351
a. Acceder a recursos externos. . . . . . . . . . . . . . . . 352
b. Las instrucciones SQL . . . . . . . . . . . . . . . . . . 352
c. Los tipos de datos. . . . . . . . . . . . . . . . . . . . 352
d. El acceso a los datos . . . . . . . . . . . . . . . . . . 353
e. Localización del código. . . . . . . . . . . . . . . . . . 353
B. Definir código CLR administrado en SQL Server . . . . . 354
1. Activar la aceptación de código CLR. . . . . . . . . . . . . . 354
2. Trabajar con Visual Studio . . . . . . . . . . . . . . . . . . 355
3. Tipos de datos personalizados . . . . . . . . . . . . . . . . 357
4. Procedimiento almacenado . . . . . . . . . . . . . . . . . 360
5. Desencadenador de base de datos . . . . . . . . . . . . . . 363
6. Función de cálculo de agregados . . . . . . . . . . . . . . . 364