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
&n A. Diagrama de entidad-relación 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 eliminacion C. Solucion alfabético