Предисловие

Г л а в а 1. Введение в PostgreSQL
Программная обработка данных
Базы данных, состоящие из плоских файлов
Что такое база данных?
Типы баз данных
База данных с сетевой структурой
Иерархическая модель базы данных
Реляционная модель базы данных
Языки запросов
SQL
Системы управления базами данных
Что такое PostgreSQL?
Короткий экскурс в историю PostgreSQL
Архитектура PostgreSQL
Open Source лицензирование
Ресурсы

Г л а в а 2. Основы реляционных баз данных
Электронные таблицы
Немного терминологии
Недостатки электронных таблиц
В чем отличие таблицы от базы данных?
Размещение информации в базе данных
Сетевой доступ
Выборка данных
Добавление информации в базу данных
Несколько таблиц
Отношения между таблицами
Проектирование таблиц
Несколько эвристических правил
Схема базы данных "Клиенты и заказы"
Добавляем таблицы в базу данных
Завершение первичного проекта
Основные типы данных
Значение NULL
Образец базы данных
Резюме

Г л а в а 3. Начинаем работу с PostgreSQL
Устанавливать или обновлять?
Установка PostgreSQL из дистрибутива Linux
Состав дистрибутива PostgreSQL
Установка PostgreSQL из исходного кода
Запуск PostgreSQL
Создание базы данных
Создание таблиц
Удаление таблиц
Заполнение таблиц
Остановка PostgreSQL
Установка PostgreSQL в Windows
Cygwin - UNIX-среда для Windows
Службы IPC для Windows
PostgreSQL для Cygwin
Компиляция PostgreSQL в Windows
Конфигурирование PostgreSQL в Windows
Автоматический запуск PostgreSQL
Резюме

Г л а в а 4. Доступ к данным
Использование psql
Простые выражения с оператором SELECT
Замена названий столбцов
Изменение порядка строк
Исключение повторяющихся строк
Выполнение вычислений
Выбор строк
Более сложные условия
Поиск по шаблону
Ограничение количества выводимых строк
Сравнение других типов данных
Сравнение с NULL
Сравнение дат и времени
Связывание данных в таблицах
Связь двух таблиц
Использование псевдонимов для таблиц
Объединение трех таблиц
Резюме

Г л а в а 5. Графические программы для работы с PostgreSQL
psql
Запуск psql
Команды psql
История команд
Сценарии psql
Исследование базы данных
Краткий справочник по параметрам командной строки
Краткий справочник по внутренним командам
ODBC
pgAdmin
Kpsql
PgAccess
Формы и редактор запросов
Microsoft Access
Связанные таблицы
Ввод данных
Отчеты
Microsoft Excel
Ресурсы
Резюме

Г л а в а 6. Работа с данными
Добавление данных в базу
Стандартный оператор INSERT
Вставка данных в столбцы типа SERIAL
Ввод значений NULL
Команда copy
Загрузка данных напрямую из другого приложения
Обновление информации в базе данных
Предостережение
Удаление информации из базы данных
Резюме

Г л а в а 7. Расширенные возможности выборкиданных
Агрегатные функции
COUNT
Функция MIN()
Функция MAX()
Функция SUM()
Функция AVG()
Объединение UNION
Подзапросы
Типы подзапросов
Связанные подзапросы
Самообъединения
Внешние объединения
Резюме

Г л а в а 8. Определение данных иманипулирование ими
Типы данных
Логический тип
Строковый тип
Числовой тип
Типы даты и времени
Специальные типы PostgreSQL
Создание собственных типов
Преобразование типов
Другие операции с данными
Магические переменные
Столбец OID
Манипулирование таблицами
Создание таблицы
Изменение структуры таблиц
Удаление таблиц
Временные таблицы
Представления
Внешние ключи
Внешний ключ как ограничение для столбца
Внешний ключ как ограничение для таблицы
Параметры внешних ключей
Резюме

Г л а в а 9. Транзакции и блокировки
Что такое транзакция?
Свойства АСИД
Транзакции при однопользовательском доступе
Ограничения использования транзакций
Транзакции при многопользовательском доступе
Уровни изоляции ANSI
Уровни изоляции ANSI/ISO
Режимы явных и неявных транзакций (Auto Commit)
Блокировки
Взаимные блокировки
Явные блокировки
Резюме

Г л а в а 10. Хранимые процедуры и триггеры
Операторы
Приоритет и ассоциативность операторов
Арифметические операторы
Сравнения и операции над строками
Другие операторы
Функции
Процедурные языки
Основы за PL/pgSQL
Перегрузка функций
Листинг функций
Удаление функций
Применение кавычек
Структура хранимой процедуры
Аргументы функций
Комментарии
Объявления
Присваивания
Управляющие структуры
Возвращение из функций
Динамические запросы
Функции SQL
Триггеры
Создание триггеров
Зачем нужны хранимые процедуры
и триггеры?
Резюме

Г л а в а 11. Администрирование PostgreSQL
Установка по умолчанию
bin
include и lib
doc
man
share
data
Инициализация базы данных
Управление сервером
Запуск и остановка сервера
Пользователи
Представления
Сопровождение
Создание и удаление баз данных
Резервное копирование и восстановление данных
Обновление версий СУБД
Безопасность базы данных
Параметры конфигурации
Конфигурирование сервера в процессе сборки
Конфигурирование сервера в процессе работы
Производительность
VACUUM
Индексы
Резюме

Г л а в а 12. Проектирование базы данных
Формулирование задачи
Хороший проект базы данных
Этапы проектирования базы данных
Логическое проектирование
Определение отношений и кардинальности
Переход к физической модели
Выбор типов данных
Завершение определения таблиц
Реализация бизнес-правил
Проверка схемы
Нормальные формы
Первая нормальная форма
Вторая нормальная форма
Третья нормальная форма
Распространенные приемы проектирования
Отношение "многие-ко-многим"
Иерархия
Рекурсивные отношения
Ресурсы
Резюме

Г л а в а 13. Доступ к PostgreSQL изC спомощьюlibpq
Использование библиотеки libpq
Соединение с базой данных
Makefile
Дополнительная информация
Выполнение операторов SQL с помощью libpq
Транзакции
Извлечение данных из запросов
Вывод результатов запроса
Курсоры
Двоичные значения
Асинхронность
Резюме

Г л а в а 14. Доступ к PostgreSQL из C припомощивстроенногоSQL
Первая программа с использованием встроенного SQL
Аргументы ecpg
Журнал выполнения SQL
Соединения с базой данных
Обработка ошибок
Обработчики ошибок
Переменные основного языка
Извлечение данных с помощью ecpg
Транзакции
Обработка данных
Курсоры
Отладка кода ecpg
Резюме

Г л а в а 15. Доступ к PostgreSQL из PHP
Установка поддержки PostgreSQL в PHP
Использование PHP API для PostgreSQL
Соединения с базой данных
Построение запросов
Работа с результирующими множествами
Обработка ошибок
Таблицы кодировки
PEAR
Резюме

Г л а в а 16. Доступ к PostgreSQL из Perl
Модуль pgsql_perl5 или Pg
Установка pgsql_perl5
Применение pgsql_perl5
Perl DBI
Установка DBI и PostgreSQL DBD
Использование DBI
Что еще можно сделать с помощью DBI?
Использование DBIx::Easy
DBI и XML
Резюме

Г л а в а 17. Доступ к PostgreSQL из Java
Общее представление о JDBC
Драйверы JDBC
Тип 1
Тип 2
Тип 3
Тип 4
Сборка драйвера JDBC PostgreSQL
DriverManager и Driver
java.sql.DriverManager
java.sql.Driver
Соединения
Создание объектов Statement
Обработка транзакций
Метаданные базы данных
Результирующие наборы данных JDBC
Тип результирующего множества и параллелизм доступа к нему
Обход результирующих множеств
Доступ к данным результирующих множеств
Соответствие типов данных
Обновляемые результирующие множества
Другие важные методы
Операторы JDBC
Объект Statement
Объекты PreparedStatements
Исключительные ситуации и предупреждения SQL
Приложение JDBC с графическим интерфейсом пользователя
Схема классов
Взаимодействие с системой
Исходные файлы
Компиляция и запуск приложения
Резюме

Г л а в а 18. Дополнительная информация и ресурсы
Нереляционное хранилище
OLTP, OLAP и другие термины базы данных
Ресурсы
Веб-ресурсы
Общий инструментарий
Книги
Резюме

П р и л о ж е н и е A. Ограничения базы данных PostgreSQL
П р и л о ж е н и е B. Типы данных PostgreSQL
П р и л о ж е н и е C. Синтаксис SQL в PostgreSQL
П р и л о ж е н и е D. Справочная информация по psql
П р и л о ж е н и е E. Схема и таблицы базы данных
П р и л о ж е н и е F. Поддержка больших объектов в PostgreSQL

Алфавитный указатель