Cómo usar este libro
Estructura del libro
Convenciones tipográficas
Introducción
Breve historia del lenguaje SQL
Para qué puedo usar SQL
Herramientas para trabajar con SQL
Tipos de RDBMS
Bases de datos NoSQL
Capítulo 1. Bases de datos y el modelo relacional
Modelos de bases de datos
Bases de datos relacionales
Tablas y sus relaciones
Filas y columnas
Identificación de tablas, filas y columnas
Meta-información sobre estructura de la base de datos
Integridad de los datos
Tratamiento de valores nulos
Lenguajes de comunicación con la base de datos
Tratamiento de conjuntos de datos
Normalización de bases de datos
Primera forma normal
Segunda y tercera forma normal
Resumen
Capítulo 2. Software RDBMS y herramientas de trabajo
Microsoft Access
MariaDB (MySQL)
Oracle
SQL Server
SQL Fiddle
Resumen
Capítulo 3. Preparación de la base de datos de ejemplo
Descarga del material asociado al libro
Microsoft Access
MariaDB
Oracle
SQL Server
SQL Fiddle
Estructura de la base de datos
Resumen
Capítulo 4. Consultas simples
Estructura de una sentencia DML
La cláusula SELECT
Sintaxis general
Obtener todo el contenido de una tabla
Selección de columnas
Columnas con alias
Alias para las tablas
Exclusión de filas duplicadas
Resumen
Capítulo 5. Filtrado y búsqueda de datos
Sintaxis de la cláusula WHERE
Relaciones simples
Relaciones compuestas
Agrupar expresiones con paréntesis
Predicados de la cláusula WHERE
Búsqueda de patrones de caracteres
Rangos y listas de valores
Búsqueda de valores nulos
Predicados con subconsultas
Adición de columnas calculadas
Cálculos numéricos
Operaciones con caracteres
Operaciones con fechas
Análisis y sustitución de valores
Resumen
Capítulo 6. Consultas en múltiples tablas y vistas
Introducción
Operaciones de conjuntos
Unión de conjuntos
Intersección de conjuntos
Diferencia de conjuntos
Producto cartesiano
Combinación de tablas (JOIN)
Combinaciones por equivalencia
Combinaciones no exclusivas
Otros tipos de combinaciones entre tablas
Resumen de tipos de uniones
Reutilización de consultas complejas
Definición de una vista
Uso de una vista
Otras operaciones con vistas
Resumen
Capítulo 7. Ordenar y agrupar los resultados
Ordenar las filas
La cláusula ORDER BY
Orden ascendente y descendente
Ordenar por varias columnas
Referencias a columnas derivadas
Agrupación de resultados
La cláusula GROUP BY
Funciones de agregación
Funciones de agregado y columnas derivadas
Uso de las funciones de agregado sin GROUP BY
Filtrado de las filas agrupadas
Resumen
Capítulo 8. Uso de funciones predefinidas en consultas SQL
Categorías de funciones
Funciones integradas
Particularidades de Oracle
Particularidades de MySQL - MariaDB
Particularidades de SQL Server
Particularidades de Access
Funciones de cadena
Longitud de la cadena
Eliminación de caracteres sobrantes
Conversiones de caracteres
Posición de una cadena en otra
Funciones de fechas
Funciones numéricas
Redondeo y valor absoluto
Raíces y potencias
Otras funciones matemáticas
Otras funciones de SQL
Resumen
Capítulo 9. Inserción de nuevos datos
La sentencia INSERT
Inserción de valores por posición
Inserción de valores por nombre de columna
Obtener la estructura de una tabla
Valores por defecto y valores nulos
Inserciones y subconsultas
Generación automática de códigos
Producción de contenido
Confirmación y rechazo de cambios
Resumen
Capítulo 10. Actualización de datos
Introducción
Modificación de datos
Cambiar una columna de una fila
Cambiar varias columnas de una fila
Modificación de datos en varias filas
Uso de expresiones en la asignación
Valores nulos y por defecto
Eliminación de filas
Fusión de datos (MERGE)
Actualización de datos y transacciones
Resumen
Capítulo 11. Crear, modificar y eliminar tablas de una base de datos
Cómo definir una nueva tabla
Tipos de datos
Introducción de restricciones
Valores por defecto
Crear una tabla a partir de otra
Eliminación de tablas
Modificar la estructura de una tabla
Añadir y eliminar columnas
Modificar una columna
Añadir y eliminar restricciones
Tablas temporales
Columnas virtuales
Resumen
Capítulo 12. Control de acceso a los datos
Otorgar privilegios sobre una base de datos
Conceder permisos generales
Concesión de privilegios específicos
Permisos sobre columnas individuales
Delegación de los privilegios
Revocación de privilegios
Transacciones, concurrencia y propiedades ACID
Atomicidad
Consistencia
Aislamiento
Resumen
Capítulo 13. Vistas e índices
Definición y uso de vistas
Proyección (Filtrado de columnas)
Selección (Filtrado de filas)
Vistas con columnas derivadas
Actualización de datos a través de una vista
Modificar y eliminar vistas
Creación de índices
Resumen
Capítulo 14. Procedimientos, funciones y desencadenadores
Procedimientos almacenados
Definir un procedimiento almacenado
Un procedimiento de ejemplo
Ejecución de un procedimiento almacenado
Corrección de errores
Uso de parámetros
Funciones
Una función de ejemplo
Uso de funciones
Desencadenadores
Definición de un desencadenador
Un desencadenador de ejemplo
Uso de un desencadenador
Resumen
Capítulo 15. Introducción a T-SQL
Variables y expresiones
Asignación y recuperación de valores
Operadores
Variables globales
Control del flujo de ejecución
Ejecución condicional
Ejecución repetitiva
Desvío del flujo de ejecución
Cursores
Declaración de un cursor
Operaciones sobre un cursor
Apertura y cierre del cursor
Número de filas resultantes y tipos de cursor
Recorrer las filas de un cursor
Tablas en memoria
Funciones que devuelven tablas
Resumen
Capítulo 16. Introducción a PL/SQL
Variables y expresiones
Asignación y recuperación de valores
Salida de resultados en SQL Plus y Oracle SQL Developer
Operadores
Tipos de filas y columnas
Constantes
Control del flujo de ejecución
Ejecución condicional
Ejecución repetitiva
Desvío del flujo de ejecución
Cursores
Declaración de un cursor
Apertura y cierre del cursor
Atributos de un cursor
Recorrer las filas de un cursor
Tablas en memoria
Definición de una tabla en memoria
Acceso a las filas y columnas de la tabla
Trabajando con tablas en memoria
Resumen
Capítulo 17. Introducción a SQL/PSM
Procedimientos almacenados
Recepción de parámetros
Funciones
Declaración de variables
Desencadenadores
Acceso a filas en el desencadenador
Estructuras de control
Resumen
Capítulo 18. Introducción a las bases de datos orientadas a objetos
Conceptos teóricos
Características ORDBMS de Oracle
Modelo lógico de la solución
Obtención del modelo de datos
Explotación de la base de datos
Implementación
Definición de tipos
Implementación de métodos
Creación de tablas
Cómo instalar y desinstalar el proyecto
Instalación
Desinstalación
Cómo utilizar la base de datos
Inserción de datos
Consultas
Resumen
Capítulo 19. Big data, NoSQL y NewSQL
Limitaciones del modelo relacional
Esquema vs flexibilidad
Rendimiento y escalabilidad
Facilidad/Dificultad de uso
Big Data y Fast Data
Enfoques y productos NoSQL
Soluciones NewSQL
Resumen
Capítulo 20. Ejercicios propuestos
Definición del esquema
Tabla de trayectos
Tabla de naves
Tabla de viajes
Cambios sobre el esquema inicial
Inserción inicial de datos
Consultas sobre la base de datos
Consultas simples
Selección de filas y cálculos
Uso de agregaciones y subconsultas
Actualización de datos
Definición de vistas
Índice alfabético
SQL es el lenguaje estándar para el tratamiento de datos en ordenadores. Tanto si somos usuarios de una aplicación de ofimática (Access por ejemplo) como si nuestro objetivo es administrar servidores de datos o desarrollar aplicaciones, es imprescindible que conozcamos SQL. El contenido cada uno de los veinte capítulos en que se estructura este libro sigue un enfoque didáctico, con explicaciones claras y concisas, ofreciendo al lector abundantes ejemplos y ejercicios propuestos que ayudan a reafirmar el proceso de aprendizaje. Además del lenguaje estándar SQL, también se introducen derivados de este como T-SQL, PL/SQL y SQL/PSM, muy difundidos y que le permitirán aprovechar al máximo las posibilidades de SQL Server, Oracle y MySQL/MariaDB, respectivamente. Asimismo, podrá conocer las diferencias entre SQL y NoSQL, todo ello desde una perspectiva práctica. Al finalizar la lectura de este libro estará en disposición de completar cualquier operación sobre una base de datos, conociendo la sintaxis estándar de SQL y en muchos casos los aspectos específicos de cada producto.