II. Язык SQL

Данная часть описывает использование языка SQL в PostgreSQL. Она начинается с описания общего синтаксиса SQL, потом будет рассказано как создать структуры для хранения данных, как заполнить базу данных и как создавать к ней запросы. В середине перечисляются доступные типы данных и функции, которые могут быть использованы в командах SQL. Оставшийся материал раскрывает некоторые аспекты, которые являются важными для тонкой настройки СУБД на предмет оптимальной производительности.

Информация в этой части книги упорядочена так, чтобы новичок мог следовать ей от начала до конца и получить полное понимание по рассматриваемым темам без многократного заглядывания вперёд. Главы задумывались как самодостаточные объёмы информации, так что продвинутые пользователи могу читать главы отдельно по своему выбору. Информация в этой части предоставляется в повествовательной форме, согласно темам. Читатели, которые ищут полное описание какой-либо отдельной команды, должны посмотреть Part VI.

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

Table of Contents
4. Синтаксис SQL
4.1. Лексическая структура
4.2. Выражения, возвращающие одиночное значение
5. Определение данных
5.1. Основы таблиц
5.2. Значения по умолчанию
5.3. Ограничения целостности
5.4. Системные колонки
5.5. Изменение таблиц
5.6. Привилегии
5.7. Схемы
5.8. Наследование
5.9. Разбиение
5.10. Другие объекты базы данных
5.11. Отслеживание зависимости
6. Манипуляция данными
6.1. Вставка данных
6.2. Обновление данных
6.3. Удаление данных
7. Запросы
7.1. Обзор
7.2. Табличные выражения
7.3. Списки выбора
7.4. Комбинирование запросов
7.5. Сортировка строк
7.6. LIMIT and 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. Arrays
8.15. Composite Types
8.16. Типы идентификаторов объектов
8.17. Псевдо-типы
9. Функции и операторы
9.1. Логические операторы
9.2. Операторы сравнения
9.3. Математические функции и операторы
9.4. Строковые функции и операторы
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. XML Functions
9.15. Sequence Manipulation Functions
9.16. Conditional Expressions
9.17. Array Functions and Operators
9.18. Aggregate Functions
9.19. Window Functions
9.20. Subquery Expressions
9.21. Row and Array Comparisons
9.22. Set Returning Functions
9.23. System Information Functions
9.24. System Administration Functions
9.25. Trigger Functions
10. Type Conversion
10.1. Overview
10.2. Operators
10.3. Functions
10.4. Value Storage
10.5. UNION, CASE, and Related Constructs
11. Indexes
11.1. Introduction
11.2. Index Types
11.3. Multicolumn Indexes
11.4. Indexes and ORDER BY
11.5. Combining Multiple Indexes
11.6. Unique Indexes
11.7. Indexes on Expressions
11.8. Partial Indexes
11.9. Operator Classes and Operator Families
11.10. Examining Index Usage
12. Full Text Search
12.1. Introduction
12.2. Tables and Indexes
12.3. Controlling Text Search
12.4. Additional Features
12.5. Parsers
12.6. Dictionaries
12.7. Configuration Example
12.8. Testing and Debugging Text Search
12.9. GiST and GIN Index Types
12.10. psql Support
12.11. Limitations
12.12. Migration from Pre-8.3 Text Search
13. Concurrency Control
13.1. Introduction
13.2. Transaction Isolation
13.3. Explicit Locking
13.4. Data Consistency Checks at the Application Level
13.5. Locking and Indexes
14. Performance Tips
14.1. Using EXPLAIN
14.2. Statistics Used by the Planner
14.3. Controlling the Planner with Explicit JOIN Clauses
14.4. Populating a Database