Объектно-реляционная СУБД PostgreSQL. Учебное пособие
.pdfГ.Н. ГУТМАН
ОБЪЕКТНО-РЕЛЯЦИОННАЯ СУБД PostgreSQL
Учебное пособие
Самара Самарский государственный технический университет
2016
1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
К а ф е д р а «Прикладная математика и информатика»
Г.Н. ГУТМАН
ОБЪЕКТНО-РЕЛЯЦИОННАЯ СУБД PostgreSQL
Учебное пособие
Самара Самарский государственный технический университет
2016
2
Печатается по решению редакционно-издательского совета СамГТУ
УДК 004.65(075.8) ББК 32.97я73 Г 97
Гутман Г.Н.
Г 97 Объектно-реляционная СУБД PostgreSQL: учебное пособие /
Г.Н. Гутман – Самара: Самар. гос. техн. ун-т, 2016. – 124 с.: ил.
Изложены основы работы в современной объектно-реляционной СУБД PostgreSQL. Основное внимание уделяется новым типам данных, возможностям языка запросов SQL и встроенному языку программирования PL/pgSQL. Затронуты также некоторые вопросы администрирования СУБД.
Пособие предназначено для студентов, обучающихся по направлению подготовки 01.03.02 «Прикладная математика и информатика» (квалификация бакалавр).
Р е ц е н з е н т : канд. физ.-мат. наук А.А. Заусаев
УДК 004.65(075.8) ББК 32.97я73 Г 97
©Г.Н. Гутман, 2016
©Самарский государственный технический университет, 2016
3
Введение
Впособии рассматривается современная объектно-реляционная СУБД PostgreSQL. За более чем 20-летнюю историю своего развития PostgreSQL из академической разработки превратилась в полноценную СУБД с открытым исходным кодом, составляющую реальную альтернативу коммерческим базам данных, прежде всего, СУБД Oracle. Лицензия PostgreSQL разрешает ее неограниченное использование, модификацию кода, а также включение в состав других продуктов, в том числе закрытых и коммерческих.
Внастоящее время целый ряд государственных и крупных коммерческих организаций, в частности, такие известные фирмы, как Skype, Instagram, Sony и ряд других, успешно эксплуатируют СУБД PostgreSQL. В связи с политикой импортозамещения в России в качестве наиболее возможного конкурента коммерческих СУБД (в частности, СУБД Oracle) названа СУБД PostgreSQL.
Группа разработчиков СУБД PostgreSQL, в которую входят и представители России, регулярно выпускает обновления, в которых, кроме исправлений и улучшений уже имеющихся возможностей, добавляется новая функциональность СУБД. Однако столь быстрое развитие продукта имеет и обратную сторону – пользователи СУБД PostgreSQL новых версий вынуждены ограничиваться изучением официальной документации (большей частью на английском языке), так как издание новой (или перевод уже изданной) книги – процесс достаточно длительный.
Цель данного учебного пособия – осветить основные возможности последней стабильной версии СУБД PostgreSQL (на момент написания пособия
–версии 9.4) и на практических примерах продемонстрировать преимущества использования этой СУБД.
Основное внимание в учебном пособии уделяется новым типам данных, возможностям языка запросов SQL и встроенного языка программирования PL/pgSQL для создания функций, триггеров, индексов и других объектов базы данных, что является важной частью разработки базы данных. Меньшее внимание уделяется администрированию и настройке PostgreSQL.
Данное пособие состоит из пяти разделов и приложения.
4
Впервом разделе даются основы работы в приложении pgAdmin III, предназначенного для разработки баз данных, администрирования и работы с PostgreSQL.
Во втором разделе даются основы языка запросов SQL. Основное внимание уделяется новым типам данных и возможностям языка, реализованным в СУБД PostgreSQL.
Втретьем разделе рассматривается встроенный язык программирования PL/pgSQL, который используется для написания хранимых процедур и функций, расширяющих функциональность стандартного языка запросов.
Вчетвёртом разделе рассматриваются вопросы, связанные с курсорами, триггерами, индексами и другими специальными возможностями СУБД.
Впятом разделе читатель познакомится с инструментами разработчика и администратора базы данных.
1.Начало работы
1.1. SQL Shell и pgAdmin III
Вместе с СУБД PostgreSQL фирмой EnterpriseBD поставляются консольное приложение SQL Shell (утилита psql) для взаимодействия с БД в формате командной строки и Windows-приложение pgAdmin III, реализующие графический интерфейс пользователя.
Работа в консольном приложении Windows делает невозможным использование символов кириллицы в названиях объектов БД и значениях полей таблиц, так как кодовая страница консоли (866) отличается от основной страницы Windows (1251). Если разработчик даёт русские названия объектам БД и значениям текстовых полей, то необходимо использовать Windows-приложение (в частности, упомянутый выше pgAdmin III).
PgAdmin III является удобным средством для администрирования сервера PostgreSQL и создания баз данных, так как имеет все необходимые для этого инструменты и интуитивно понятный графический интерфейс. При установке
5
из дистрибутива фирмы EnterpriseBD PgAdmin III устанавливается по умолчанию вместе с СУБД PostgreSQL.
Главное окно pgAdmin III представлено на рис. 1.
Рис. 1. Главное окно приложения PgAdmin III
В верхней части окна приложения расположено главное меню, под ним – панель инструментов, на которую вынесены наиболее часто используемые
операции с базой данных (рис. 2). |
|
|
|
|
|
|
|||||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Рис. 2. Панель инструментов приложения PgAdmin III
6
Расшифруем пиктограммы, вынесенные на панель (для удобства понимания им присвоены условные номера от 1 до 12):
1)Добавить подключение к серверу;
2)Обновить выделенный объект;
3)Показать/редактировать свойства выделенного объекта;
4)Создать объект того же типа, что и выделенный объект;
5)Удалить выделенный объект;
6)Выполнить пользовательские sql-запросы;
7)Просмотр данных в выбранном объекте;
8)Применить фильтр и просмотреть данные в выбранном объекте;
9)Обслуживать текущую базу или таблицу;
10)Выполнить последний использованный плагин;
11)Показать подсказку для текущего объекта;
12)Показать справку по sql-командам.
Заметим, что несколько пиктограмм на рис. 2 неактивны, так как указанные операции неприменимы к выделенному объекту.
Рабочая область pgAdmin состоит из трёх частей:
1)браузер объектов (отображает подключения, объекты сервера и баз данных и позволяет получить к ним доступ);
2)окно свойств (отображает свойства выбранного объекта);
3)панель SQL (отображает SQL оператор, которым был создан выбранный объект).
Для установления нового подключения к серверу баз данных выбираем пиктограмму 1 (Добавить подключение к серверу). В окне «Новая регистрация сервера» необходимо указать Имя соединения (например, lhost), Хост (при установке PostgreSQL на локальную машину – localhost), Имя пользователя (фактически имя роли, которая должна быть определена раньше!) и Пароль для доступа к серверу. Если планируется работа нескольких пользователей, то можно задать Цвет фона, на котором будет выводиться названия подключения
7
и объектов доступа к БД для конкретного пользователя. Остальные параметры рекомендуется оставить по умолчанию: Порт (5432), Обслуживание DB (postgres), Группа (Серверы).
1.2. Создание пользователей (ролей)
При работе с СУБД PostgreSQL для каждого пользователя необходимо создать роль. Право на создание ролей обычно устанавливается только для суперпользователя (администратора БД). При установке СУБД PostgreSQL автоматически создаётся суперпользователь с именем postgres. Чтобы добавить нового пользователя в систему, нужно сначала подключиться к СУБД (рис. 3) от имени суперпользователя (пароль для него задаётся при установке СУБД PostgreSQL на компьютер), а затем создать роль с определёнными привилегиями.
Рис. 3. Окно ввода пароля при подключении пользователя postgres к серверу
Для создания роли проще всего воспользоваться возможностями приложения PgAdmin III. Выделим пункт меню Роли входа и щёлкнем мышкой по пиктограмме 4 (Создать объект того же типа, что и выделенный объект). В появившемся диалоговом окне на имеющихся в окне вкладках задаём основные параметры роли (табл. 1).
8
|
|
Таблица 1 |
|
Параметры роли |
|
Вкладка |
Параметр |
Примечание |
Свойства |
Имя роли |
Обязательно для заполнения |
|
Комментарий |
|
Определение |
Пароль |
Можно не указывать |
|
Подтверждение |
Повторный ввод пароля |
|
Роль активна до |
Можно установить период |
|
|
действия пароля – до заданной |
|
|
даты и времени |
|
Макс. число |
Максимальное число подключений |
|
подключений |
данного пользователя к СУБД, по |
|
|
умолчанию равно -1 (число |
|
|
подключений не ограничено) |
Привилегии |
Вход разрешен |
Для ролей входа установлено по |
роли |
|
умолчанию |
|
Наследует права из |
Установлено по умолчанию. |
|
родительских ролей |
Наследование позволяет создать |
|
|
иерархию ролей |
|
Суперпользователь |
Администратор баз данных |
|
Может создавать базы |
По умолчанию не может выполнять |
|
данных |
указанные действия |
|
Может создавать роли |
По умолчанию не может выполнять |
|
|
указанные действия |
|
Может создавать потокоПо умолчанию не может выполнять |
|
|
вую репликацию и |
указанные действия |
|
резервные копии |
|
Роль |
Не участник/Участник |
Участником какой группы является |
пользователей |
|
данная роль |
SQL |
|
Показывает текст SQL-запроса, при |
выполнении которого создаётся роль
При большом количестве пользователей их удобно объединять в группы. Все участники группы имеют одни и те же права, прописанные в групповой роли. Чтобы создать групповую роль, нужно выделить пункт меню Групповые роли в Браузере объектов, вызвать диалоговое окно и выполнить те же действия, что и для роли входа. Единственное отличие – в тесте SQL-запроса
9
отсутствует ключевое слово LOGIN, так как эта роль не является ролью входа (т.е., не является пользователем).
Чтобы отнести какую либо роль к группе, нужно на вкладке Роль пользователей в списке Участник указать нужную групповую роль (или несколько групповых ролей). Это можно сделать как для создаваемой новой роли, так и для ранее созданной. В последнем случае нужно правой кнопкой мыши вызвать контекстное меню для этой роли, выбрать в нём пункт Свойства и в появившемся диалоговом окне внести необходимые изменения.
1.3. Создание базы данных
После подключения к серверу пользователь может создать базу данных (конечно, если его роль разрешает создание БД). Для этого необходимо выделить пункт меню Базы данных и щёлкнуть по пиктограмме 4 (Создать объект того же типа, что и выделенный объект) или выбрать пункт Новая база данных… из контекстного меню. В появившемся диалоговом окне на имеющихся в окне вкладках задаём основные параметры новой базы данных (табл. 2).
|
|
Таблица 2 |
|
Параметры базы данных |
|
Вкладка |
Параметр |
Примечание |
Свойства |
Имя |
Обязательно для заполнения |
|
Владелец |
Указывается одна из существующих |
|
Комментарий |
ролей |
|
|
|
Определение |
Кодировка |
По умолчанию задана кодировка UTF8 |
|
Шаблон |
Поле можно оставить пустым, тогда |
|
|
новая БД будет создана на основе |
|
|
стандартного шаблона, или выбрать одну |
|
|
из существующих БД |
|
Табличное |
pg_default |
|
пространство |
|
10
