Часть II. Язык SQL

В этой части книги описывается использование языка SQL в Postgres Pro. Мы начнём с описания общего синтаксиса SQL, затем расскажем, как создавать таблицы, наполнять базу данных и выполнять запросы к ней. В продолжении обратим внимание на существующие типы данных и функции, применяемые с командами SQL. И наконец, рассмотрим важные аспекты настройки базы данных.

Материал упорядочен так, чтобы новичок мог прочитать его от начала до конца и полностью понять все темы, не забегая вперёд. При этом главы сделаны самодостаточными, так что опытные пользователи могут читать их по отдельности. Информация представлена в повествовательном стиле и разделена по темам. Если же вас интересует формальное и полное описание определённой команды, рекомендуем обратиться к Части VI.

Читатели должны уже знать, как подключаться к базе данных Postgres Pro и выполнять команды SQL. Если вы ещё не знаете этого, рекомендуется сначала прочитать Часть I. Команды SQL обычно вводятся в psql — интерактивном терминальном приложении Postgres Pro, но можно воспользоваться и другими программами с подобными функциями.

Содержание

4. Синтаксис SQL
4.1. Лексическая структура
4.2. Выражения значения
4.3. Вызов функций
5. Определение данных
5.1. Основы таблиц
5.2. Значения по умолчанию
5.3. Столбцы идентификации
5.4. Генерируемые столбцы
5.5. Ограничения
5.6. Системные столбцы
5.7. Изменение таблиц
5.8. Права
5.9. Политики защиты строк
5.10. Схемы
5.11. Наследование
5.12. Секционирование таблиц
5.13. Сторонние данные
5.14. Другие объекты баз данных
5.15. Отслеживание зависимостей
6. Модификация данных
6.1. Добавление данных
6.2. Изменение данных
6.3. Удаление данных
6.4. Возврат данных из изменённых строк
7. Запросы
7.1. Обзор
7.2. Табличные выражения
7.3. Списки выборки
7.4. Сочетание запросов (UNION, INTERSECT, EXCEPT)
7.5. Сортировка строк (ORDER BY)
7.6. LIMIT и OFFSET
7.7. Списки VALUES
7.8. Запросы WITH (Общие табличные выражения)
8. Типы данных
8.1. Числовые типы
8.2. Денежные типы
8.3. Символьные типы
8.4. Двоичные типы данных
8.5. Типы даты/времени
8.6. Логический тип
8.7. Типы перечислений
8.8. Геометрические типы
8.9. Типы, описывающие сетевые адреса
8.10. Битовые строки
8.11. Типы, предназначенные для текстового поиска
8.12. Тип UUID
8.13. Тип XML
8.14. Типы JSON
8.15. Массивы
8.16. Составные типы
8.17. Диапазонные типы
8.18. Типы доменов
8.19. Идентификаторы объектов
8.20. Тип pg_lsn
8.21. Псевдотипы
9. Функции и операторы
9.1. Логические операторы
9.2. Функции и операторы сравнения
9.3. Математические функции и операторы
9.4. Строковые функции и операторы
9.5. Функции и операторы двоичных строк
9.6. Функции и операторы для работы с битовыми строками
9.7. Поиск по шаблону
9.8. Функции форматирования данных
9.9. Операторы и функции даты/времени
9.10. Функции для перечислений
9.11. Геометрические функции и операторы
9.12. Функции и операторы для работы с сетевыми адресами
9.13. Функции и операторы текстового поиска
9.14. Функции генерирования UUID
9.15. XML-функции
9.16. Функции и операторы JSON
9.17. Функции для работы с последовательностями
9.18. Условные выражения
9.19. Функции и операторы для работы с массивами
9.20. Диапазонные/мультидиапазонные функции и операторы
9.21. Агрегатные функции
9.22. Оконные функции
9.23. Функции поддержки MERGE
9.24. Выражения подзапросов
9.25. Сравнение табличных строк и массивов
9.26. Функции, возвращающие множества
9.27. Системные информационные функции и операторы
9.28. Функции для системного администрирования
9.29. Триггерные функции
9.30. Функции событийных триггеров
9.31. Системные информационные функции
10. Преобразование типов
10.1. Обзор
10.2. Операторы
10.3. Функции
10.4. Хранимое значение
10.5. UNION, CASE и связанные конструкции
10.6. Выходные столбцы SELECT
11. Индексы
11.1. Введение
11.2. Типы индексов
11.3. Составные индексы
11.4. Индексы и предложения ORDER BY
11.5. Объединение нескольких индексов
11.6. Уникальные индексы
11.7. Индексы по выражениям
11.8. Частичные индексы
11.9. Сканирование только индекса и покрывающие индексы
11.10. Семейства и классы операторов
11.11. Индексы и правила сортировки
11.12. Контроль использования индексов
11.13. Использование алгоритма k-NN для оптимизации запросов
12. Полнотекстовый поиск
12.1. Введение
12.2. Таблицы и индексы
12.3. Управление текстовым поиском
12.4. Дополнительные возможности
12.5. Анализаторы
12.6. Словари
12.7. Пример конфигурации
12.8. Тестирование и отладка текстового поиска
12.9. Типы индексов, предпочитаемые для текстового поиска
12.10. Поддержка psql
12.11. Ограничения
13. Управление конкурентным доступом
13.1. Введение
13.2. Изоляция транзакций
13.3. Явные блокировки
13.4. Проверки целостности данных на уровне приложения
13.5. Обработка сбоев сериализации
13.6. Ограничения
13.7. Блокировки и индексы
14. Оптимизация производительности
14.1. Использование EXPLAIN
14.2. Статистика, используемая планировщиком
14.3. Управление планировщиком с помощью явных предложений JOIN
14.4. Наполнение базы данных
14.5. Оптимизация, угрожающая стабильности
14.6. Автоподготовленные операторы
15. Параллельный запрос
15.1. Как работают параллельно выполняемые запросы
15.2. Когда может применяться распараллеливание запросов?
15.3. Параллельные планы
15.4. Безопасность распараллеливания
16. Автономные транзакции
16.1. Поведение
16.2. Видимость
16.3. Расширение языка SQL для автономных транзакций
16.4. Расширение языка PL/pgSQL для автономных транзакций
16.5. Расширения языка PL/Python для автономных транзакций