Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Объектно-реляционная СУБД PostgreSQL. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
787 Кб
Скачать

Г.Н. ГУТМАН

ОБЪЕКТНО-РЕЛЯЦИОННАЯ СУБД 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]