Часть 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. Отслеживание зависимостей
6. Модификация данных
6.1. Добавление данных
6.2. Изменение данных
6.3. Удаление данных
6.4. Возврат данных из изменённых строк
7. Запросы
7.1. Обзор
7.2. Табличные выражения
7.3. Списки выборки
7.4. Сочетание запросов
7.5. Сортировка строк
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. XML-функции
9.15. Функции и операторы JSON
9.16. Функции для работы с последовательностями
9.17. Условные выражения
9.18. Функции и операторы для работы с массивами
9.19. Диапазонные функции и операторы
9.20. Агрегатные функции
9.21. Оконные функции
9.22. Выражения подзапросов
9.23. Сравнение табличных строк и массивов
9.24. Функции, возвращающие множества
9.25. Системные информационные функции и операторы
9.26. Функции для системного администрирования
9.27. Триггерные функции
9.28. Функции событийных триггеров
9.29. Системные информационные функции
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. Блокировки и индексы
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 для автономных транзакций