Part II. El lenguaje SQL

Esta parte describe el uso del lenguaje SQL en PostgreSQL. Comenzamos describiendo la sintaxis general de SQL, luego cómo crear tablas, cómo poblar la base de datos y cómo realizar consultas. La parte intermedia enumera los tipos de datos y las funciones disponibles para su uso en los comandos SQL. Por último, abordamos varios aspectos de importancia para ajustar una base de datos.

La información está organizada de manera que un usuario principiante pueda seguirla de principio a fin y obtener una comprensión completa de los temas sin tener que hacer referencia hacia adelante demasiadas veces. Los capítulos están pensados para ser autónomos, de modo que los usuarios avanzados puedan leerlos individualmente según lo deseen. La información se presenta en forma narrativa con unidades temáticas. Se anima a los lectores que busquen una descripción completa de un comando en particular a revisar la Part VI.

Los lectores deben saber cómo conectarse a una base de datos de PostgreSQL y enviar comandos SQL. Se anima a los lectores que no estén familiarizados con estos temas a leer primero el Part I. Los comandos SQL se introducen típicamente utilizando el terminal interactivo de PostgreSQL psql, pero también se pueden utilizar otros programas que tengan una funcionalidad similar.

Table of Contents

4. Sintaxis de SQL
4.1. Estructura léxica
4.2. Expresiones de valor
4.3. Llamada a funciones
5. Data Definition
5.1. Table Basics
5.2. Default Values
5.3. Identity Columns
5.4. Generated Columns
5.5. Constraints
5.6. System Columns
5.7. Modifying Tables
5.8. Privileges
5.9. Row Security Policies
5.10. Schemas
5.11. Inheritance
5.12. Table Partitioning
5.13. Foreign Data
5.14. Other Database Objects
5.15. Dependency Tracking
6. Manipulación de datos
6.1. Inserción de datos
6.2. Actualización de datos
6.3. Eliminación de datos
6.4. Retorno de datos de filas modificadas
7. Consultas
7.1. Visión general
7.2. Expresiones de tabla
7.3. Select Lists
7.4. Combining Queries (UNION, INTERSECT, EXCEPT)
7.5. Sorting Rows (ORDER BY)
7.6. LIMIT and OFFSET
7.7. VALUES Lists
7.8. WITH Queries (Common Table Expressions)
8. Tipos de datos
8.1. Tipos numéricos
8.2. Monetary Types
8.3. Character Types
8.4. Binary Data Types
8.5. Tipos de fecha y hora
8.6. Tipo booleano
8.7. Tipos enumerados
8.8. Tipos geométricos
8.9. Tipos de direcciones de red
8.10. Tipos de cadenas de bits
8.11. Tipos de búsqueda de texto
8.12. Tipo UUID
8.13. Tipo XML
8.14. Tipos JSON
8.15. Arrays
8.16. Tipos compuestos
8.17. Tipos de rangos (Range Types)
8.18. Tipos de dominios
8.19. Tipos de identificadores de objetos (OIDs)
8.20. Tipo pg_lsn
8.21. Pseudotipos
9. Functions and Operators
9.1. Logical Operators
9.2. Comparison Functions and Operators
9.3. Mathematical Functions and Operators
9.4. String Functions and Operators
9.5. Binary String Functions and Operators
9.6. Bit String Functions and Operators
9.7. Pattern Matching
9.8. Data Type Formatting Functions
9.9. Date/Time Functions and Operators
9.10. Enum Support Functions
9.11. Geometric Functions and Operators
9.12. Network Address Functions and Operators
9.13. Text Search Functions and Operators
9.14. UUID Functions
9.15. XML Functions
9.16. JSON Functions and Operators
9.17. Sequence Manipulation Functions
9.18. Conditional Expressions
9.19. Array Functions and Operators
9.20. Range/Multirange Functions and Operators
9.21. Aggregate Functions
9.22. Window Functions
9.23. Merge Support Functions
9.24. Subquery Expressions
9.25. Row and Array Comparisons
9.26. Set Returning Functions
9.27. System Information Functions and Operators
9.28. System Administration Functions
9.29. Trigger Functions
9.30. Event Trigger Functions
9.31. Statistics Information Functions
10. Conversión de tipos
10.1. Descripción general
10.2. Operadores
10.3. Funciones
10.4. Almacenamiento de valores
10.5. UNION, CASE y constructores relacionados
10.6. Columnas de salida de SELECT
11. Índices
11.1. Introducción
11.2. Tipos de índices
11.3. Índices multicolumna
11.4. Índices y ORDER BY
11.5. Combinación de múltiples índices
11.6. Índices únicos
11.7. Índices sobre expresiones
11.8. Índices parciales
11.9. Escaneos de solo índice e índices de cobertura (covering indexes)
11.10. Clases de operadores y familias de operadores
11.11. Índices y ordenaciones (collations)
11.12. Examen del uso de los índices
12. Búsqueda en texto completo (Full Text Search)
12.1. Introducción
12.2. Tablas e índices
12.3. Control de la búsqueda de texto
12.4. Características adicionales
12.5. Analizadores (Parsers)
12.6. Diccionarios
12.7. Ejemplo de configuración
12.8. Pruebas y depuración de la búsqueda de texto
12.9. Tipos de índices preferidos para búsqueda de texto
12.10. Soporte en psql
12.11. Limitaciones
13. Control de concurrencia
13.1. Introducción
13.2. Aislamiento de transacciones
13.3. Bloqueo explícito
13.4. Comprobación de la consistencia de los datos a nivel de aplicación
13.5. Gestión de fallos de serialización
13.6. Advertencias (Caveats)
13.7. Bloqueos e índices
14. Consejos de rendimiento
14.1. Uso de EXPLAIN
14.2. Estadísticas utilizadas por el planificador
14.3. Control del planificador con cláusulas JOIN explícitas
14.4. Poblar una base de datos
14.5. Opciones no duraderas (Non-Durable)
15. Consultas en paralelo
15.1. Cómo funcionan las consultas en paralelo
15.2. ¿Cuándo se pueden usar las consultas en paralelo?
15.3. Planes en paralelo
15.4. Seguridad en paralelo