
Aprende SQL. Segunda edición
Autor/a : Alan Beaulieu
SQL es un lenguaje de programación destinado a generar, manipular y recuperar información de una base de datos relacional. No depende de sí mismo, sino que lo invocan otros programas escritos en lenguajes de uso general, como por ejemplo C++, Java, Python y Perl.
Índice
Introducción ¿Por qué aprender SQL? ¿Por qué utilizar este libro para hacer esto? La estructura de este libro Convenciones Código fuente Capítulo 1. Un poco de historia Introducción a las bases de datos - Sistemas de bases de datos no relacionales - El modelo relacional - Un poco de terminología ¿Qué es SQL? - Clases de sentencias SQL - Un lenguaje no procedimental - Ejemplos SQL ¿Qué es MySQL? ¿Qué nos vamos a encontrar? Capítulo 2. Crear e introducir información en una base de datos Crear una base de datos MySQL Utilizar la herramienta de líneas de comandos mysql Tipos de datos de MySQL - Datos de tipo carácter - Juegos de caracteres - Datos de tipo texto - Datos de tipo numérico - Datos de tipo fecha y hora Crear tablas - Paso 1: Diseño - Paso 2: Refinamiento - Paso 3: Construir sentencias SQL de manipulación del esquema Introducir información y modificar tablas - Incluir datos - Generar datos clave numéricos - La sentencia insert - Actualizar datos - Eliminar datos Cuando las sentencias correctas pueden acabar siendo perjudiciales - Clave primaria no única - Clave ajena inexistente - Vulneraciones de los valores de las columnas - Conversiones de fecha no válidas El esquema del banco Capítulo 3. Primeras consultas Mecánica de las consultas Cláusulas de consulta La cláusula select - Alias de columnas - Eliminar duplicados La cláusula from - Tablas - Tablas generadas en subconsultas - Vistas - Enlaces o vínculos entre tablas - Definir los alias de tablas La cláusula where Las cláusulas group by y having La cláusula order by - Ordenación ascendente frente a ordenación descendente - Ordenar mediante expresiones - Ordenar mediante los marcadores numéricos de posición Ejercicios - Ejercicio 3.1 - Ejercicio 3.2 - Ejercicio 3.3 - Ejercicio 3.4 Capítulo 4. Filtrado Evaluación de las condiciones - Utilizar paréntesis - Utilizar el operador not Construir una condición Tipos de condiciones - Condiciones de igualdad - Condiciones de desigualdad - Modificar la información utilizando condiciones de igualdad - Condiciones de rangos - El operador between - Rangos de cadenas - Condiciones de pertenencia - Uso de subconsultas - Uso de not in - Condiciones de coincidencia - Uso de caracteres comodín - Uso de expresiones regulares Null: Esa palabra de cuatro letras Ejercicios prácticos - Ejercicio 4.1 - Ejercicio 4.2 - Ejercicio 4.3 - Ejercicio 4.4 Capítulo 5. Consultar varias tablas ¿Qué es un join? - Producto cartesiano - Inner joins - La sintaxis de join según el estándar ANSI Join entre tres o más tablas - Utilizar subconsultas como tablas - Utilizar la misma tabla dos veces Hacer un join a la propia tabla Joins equivalentes y no equivalentes Condiciones de join y condiciones de filtrado Ejercicios prácticos - Ejercicio 5.1 - Ejercicio 5.2 - Ejercicio 5.3 Capítulo 6. Trabajar con conjuntos Teoría básica de conjuntos Poner en práctica la teoría de conjuntos Operadores de conjuntos - El operador union - El operador intersect - El operador except Normas de las operaciones de conjuntos - Ordenar los resultados de las consultas compuestas - Prioridad de las operaciones de conjuntos Ejercicios prácticos - Ejercicio 6.1 - Ejercicio 6.2 - Ejercicio 6.3 Capítulo 7. Generar, convertir y manipular información Trabajar con datos de tipo cadena - Generación de cadenas de caracteres - Incluir las comillas simples - Incluir caracteres especiales - Manipulación de cadenas - Funciones de cadena que devuelven números - Funciones de cadenas que devuelven cadenas Trabajar con datos numéricos - Aplicar funciones aritméticas - Controlar la precisión de los números - Manejar datos con signo Trabajar con datos de tipo fecha/hora - Gestión de las zonas horarias - Generar datos de tipo fecha/hora - Representaciones en cadena de datos de tipo fecha/hora - Conversiones de cadenas a fechas - Funciones para generar fechas - Manipulación de los datos de tipo fecha/hora - Funciones de tipo fecha/hora que devuelven fechas - Funciones de tipo fecha/hora que devuelven cadenas - Funciones de tipo fecha/hora que devuelven números Funciones de conversión Ejercicios prácticos - Ejercicio 7.1 - Ejercicio 7.2 - Ejercicio 7.3 Capítulo 8. Agrupar y agregar Conceptos de agrupación Funciones de agregación - Grupos implícitos frente a grupos explícitos - Contar valores distintos - Utilizar expresiones - Cómo se gestionan los nulos (nulls) Generar grupos - Agrupar columnas únicas - Agrupar columnas múltiples - Agrupar mediante expresiones - Generar agregaciones extendidas Agrupar condiciones de filtrado Ejercicios prácticos - Ejercicio 8.1 - Ejercicio 8.2 - Ejercicio 8.3 - Ejercicio 8.4 (crédito extra) Capítulo 9. Subconsultas ¿Qué es una subconsulta? Tipos de subconsultas Subconsultas no correlacionadas - Subconsultas de columnas únicas y múltiples filas - El operador in - El operador all - El operador any - Subconsultas de múltiples columnas Subconsultas correlacionadas - El operador exists - Manipulación de datos utilizando subconsultas correlacionadas Cuándo utilizar las subconsultas - Subconsultas como fuentes de información - Fabricar información - Subconsultas orientadas a tareas - Subconsultas en las condiciones de filtrado - Subconsultas como generadores de expresiones Repaso a las subconsultas Ejercicios prácticos - Ejercicio 9.1 - Ejercicio 9.2 - Ejercicio 9.3 - Ejercicio 9.4 Capítulo 10. De vuelta a los joins Outer join - Left join frente a outer join - Outer join de tres tablas - Outer join con la misma tabla Conexión cruzada o cross join Natural join Ejercicios prácticos - Ejercicio 10.1 - Ejercicio 10.2 - Ejercicio 10.3 - Ejercicio 10.4 ("para subir nota") Capítulo 11. Lógica condicional ¿Qué es la lógica condicional? La expresión case - Expresiones condicionales de búsqueda - Expresiones condicionales simples Ejemplos de expresiones condicionales - Transformación de conjuntos de resultados - Agregación selectiva - Comprobar la existencia de relaciones - Errores al dividir por cero - Actualizaciones condicionales - Manejar valores nulos Ejercicios prácticos - Ejercicio 11.1 - Ejercicio 11.2 Capítulo 12. Transacciones Bases de datos multiusuario - Bloqueo - Nivel de detalle del bloqueo ¿Qué es una transacción? - Iniciar una transacción - Finalizar una transacción - Puntos de guardado de las transacciones Ejercicios prácticos - Ejercicio 12.1 Capítulo 13. Índices y restricciones Índices - Crear índices - Índices únicos (unique) - Índices de varias columnas - Tipos de índices - Índices de árbol B - Índices de mapas de bits - Índices de texto - ¿Cómo se utilizan los índices? - Los inconvenientes de los índices Restricciones - Creación de restricciones - Restricciones e índices - Restricciones en cascada Ejercicios prácticos - Ejercicio 13.1 - Ejercicio 13.2 Capítulo 14. Vistas ¿Qué son las vistas? ¿Por qué utilizar vistas? - La seguridad de los datos - La agregación de datos - Ocultar la complejidad - Conectar datos divididos Vistas actualizables - Actualizar vistas sencillas - Actualizar vistas complejas Ejercicios prácticos - Ejercicio 14.1 - Ejercicio 14.2 Capítulo 15. Metadatos Los datos de los datos Information_Schema Trabajar con metadatos - Scripts de generación del esquema - Verificación del desarrollo - Generación de SQL dinámico Ejercicios prácticos - Ejercicio 15.1 - Ejercicio 15.2 Apéndice A. Diagrama de entidad-relación (ER) de la base de datos de ejemplo Apéndice B. Extensiones de MySQL para el lenguaje SQL Extensiones sobre select - La cláusula limit - Combinar la cláusula limit con la cláusula order by - El segundo parámetro opcional de la cláusula limit - Clasificación de las consultas - La cláusula into outfile Combinación de sentencias de inserción y de actualización (insert/update) Actualizaciones y eliminaciones en clasificaciones Actualizaciones y eliminaciones de múltiples tablas Apéndice C. Soluciones a los ejercicios Índice alfabético