Главная страница

Как установить Postgresql на Linux и Windows с. 16


Скачать 1.38 Mb.
Название Как установить Postgresql на Linux и Windows с. 16
Дата10.07.2022
Размер1.38 Mb.
Формат файлаpdf
Имя файлаpotgresql.pdf
ТипДокументы
#628132
страница2 из 8
1   2   3   4   5   6   7   8
Windows
Установка
Скачайте установщик СУБД с нашего сайта:
repo.postgrespro.ru/pgpro-10/win.
Выберите 32- или 64-разрядную версию в зависимости от того, какая у вас версия Windows. Запустите скачан- ный файл и выберите язык установки.
Установщик построен в традиционном стиле «мастера»:
вы можете просто нажимать на кнопку «Далее», если вас устраивают предложенные варианты. Остановимся подробнее на основных шагах.
17

Компоненты устанавливаемой программы:
Оставьте оба флажка, если не уверены, какие выбрать.
18

Выбор папки установки:
По умолчанию PostgreSQL устанавливается в каталог
C:\Program Files\PostgresPro\10 (или C:\Program
Files (x86)\PostgresPro\10 для 32-разрядной версии на 64-разрядной системе).
19

Отдельно можно выбрать расположение каталога для баз данных. Именно здесь будет находиться хранимая в СУБД информация, так что убедитесь, что на диске достаточно места, если вы планируете хранить много данных.
20

Параметры сервера:
Если вы планируете хранить данные на русском языке,
выберите локаль «Russian, Russia» (или оставьте вариант
«Настройка ОС», если в Windows используется русская локаль).
Введите (и подтвердите повторным вводом) пароль пользователя СУБД postgres. Также отметьте флажок
«Настроить переменные среды», чтобы подключаться к серверу PostgreSQL под текущим пользователем ОС.
Остальные поля можно оставить со значениями по умол- чанию.
21

Если вы планируете установить PostgreSQL только для ознакомительных целей, можно отметить вариант «Ис- пользовать параметры по умолчанию», чтобы СУБД не занимала много оперативной памяти.
Управление службой и основные файлы
При установке Postgres Pro в вашей системе регистри- руется служба «postgrespro-X64-10» (или «postgrespro-
X86-10» для 32-разрядной версии). Она запускается ав- томатически при старте компьютера под учетной запи- сью Network Service (Сетевая служба). При необходимо-
22
сти вы можете изменить параметры службы с помощью стандартных средств Windows.
Чтобы временно остановить службу сервера баз дан- ных, выполните программу «Stop Server» из папки в ме- ню «Пуск», которую вы указали при установке:
Для запуска службы там же есть программа «Start Server».
Если при запуске службы произошла ошибка, для по- иска причины следует заглянуть в журнал сообщений сервера. Он находится в подкаталоге log того катало- га, который был выбран при установке для баз данных
(обычно это будет C:\Program Files\PostgresPro\10\
data\log). Журнал настроен таким образом, чтобы за- пись периодически переключалась в новый файл. Найти актуальный файл можно по дате последнего изменения или по имени, которое содержит дату и время переклю- чения.
23

Есть несколько важных конфигурационных файлов, ко- торые определяют настройки сервера. Они располага- ются в каталоге баз данных. Вам не нужно их изменять,
чтобы начать знакомство с PostgreSQL, но в реальной работе они непременно потребуются:
• postgresql.conf — основной конфигурационный файл, содержащий значения параметров сервера;
• pg_hba.conf — файл, определяющий настройки до- ступа. В целях безопасности по умолчанию доступ должен быть подтвержден паролем и допускается только с локального компьютера.
Загляните в эти файлы — они прекрасно документиро- ваны.
Теперь мы готовы подключиться к базе данных и по- пробовать некоторые команды и запросы. Переходите к разделу «Пробуем SQL» на с. 29.
Debian и Ubuntu
Установка
Если вы используете Linux, то для установки необходи- мо подключить пакетный репозиторий нашей компании.
Для ОС Debian (в настоящее время поддерживаются версии 7 «Wheezy», 8 «Jessie» и 9 «Stretch») выполните в терминале следующие команды:
24

$ sudo apt-get install lsb-release
$ sudo sh -c 'echo "deb \
http://repo.postgrespro.ru/pgpro-10/debian \
$(lsb_release -cs) main" > \
/etc/apt/sources.list.d/postgrespro.list'
Для ОС Ubuntu (в настоящее время поддерживаются версии 14.04 «Trusty», 16.04 «Xenial», 16.10 «Yakkety»,
17.04 «Zesty» и 17.10 «Artful») команды немного отлича- ются:
$ sudo sh -c 'echo "deb \
http://repo.postgrespro.ru/pgpro-10/ubuntu \
$(lsb_release -cs) main" > \
/etc/apt/sources.list.d/postgrespro.list'
Дальше все одинаково для обеих систем:
$ wget --quiet -O - http://repo.postgrespro.ru/pgpro-
10/keys/GPG-KEY-POSTGRESPRO | sudo apt-key add -
$ sudo apt-get update
Перед установкой проверьте настройки локализации:
$ locale
Если вы планируете хранить данные на русском языке,
значение переменных LC_CTYPE и LC_COLLATE должно быть равно «ru_RU.UTF8» (значение «en_US.UTF8» тоже подходит, но менее предпочтительно). При необходимо- сти установите эти переменные:
$ export LC_CTYPE=ru_RU.UTF8
25

$ export LC_COLLATE=ru_RU.UTF8
Также убедитесь, что в операционной системе установ- лена соответствующая локаль:
$ locale -a | grep ru_RU
ru_RU.utf8
Если это не так, сгенерируйте ее:
$ sudo locale-gen ru_RU.utf8
Теперь можно приступить к установке. Дистрибутив поз- воляет полностью управлять установкой, но для начала работы удобно использовать пакет, который выполнит всю установку и настройку в автоматическом режиме:
$ sudo apt-get install postgrespro-std-10
Как только эта команда выполнится, СУБД PostgreSQL
будет установлена, запущена и готова к работе. Чтобы проверить это, выполните команду:
$ sudo -u postgres psql -c 'select now()'
Если все проделано успешно, в ответ вы должны полу- чить текущее время.
26

Управление службой и основные файлы
При установке PostgreSQL на вашей системе автомати- чески был создан специальный пользователь postgres,
от имени которого работают процессы, обслуживающие сервер, и которому принадлежат все файлы, относящи- еся к СУБД. PostgreSQL будет автоматически запускаться при перезагрузке операционной системы. С настройка- ми по умолчанию это не проблема: если вы не рабо- таете с сервером базы данных, он потребляет совсем немного ресурсов вашей системы. Если вы все-таки за- хотите отключить автозапуск, выполните:
$ sudo pg-setup service disable
Чтобы временно остановить службу сервера баз дан- ных, выполните команду:
$ sudo service postgrespro-std-10 stop
Запустить службу сервера можно командой:
$ sudo service postgrespro-std-10 start
Полный список команд можно получить, выполнив:
$ sudo service postgrespro-std-10
Если при запуске службы произошла ошибка, для по- иска причины следует просмотреть журнал сообщений сервера. Как правило, вы получите последние журналь- ные сообщения по команде:
27

$ sudo journalctl -xeu postgrespro-std-10
Но в некоторых старых версиях операционных систем вам может потребоваться заглянуть в файл
/var/lib/pgpro/std-10/pgstartup.log.
Вся информация, которая попадает в базу данных, рас- полагается в файловой системе в специальном каталоге
/var/lib/pgpro/std-10/data/. Убедитесь, что у вас до- статочно свободного места, если собираетесь хранить много данных.
Есть несколько важных конфигурационных файлов, ко- торые определяют настройки сервера. Для начала рабо- ты вам не придется их изменять, но с ними лучше сразу познакомиться, потому что в дальнейшем эти файлы вам непременно понадобятся:
• /var/lib/pgpro/std-10/data/postgresql.conf —
основной конфигурационный файл, содержащий зна- чения параметров сервера;
• /var/lib/pgpro/std-10/data/pg_hba.conf — файл,
определяющий настройки доступа. В целях безопас- ности по умолчанию доступ разрешен только с ло- кального компьютера и только для пользователя ОС
postgres.
Самое время подключиться к базе данных и попробо- вать SQL в деле.
28

Пробуем SQL
Подключение с помощью psql
Чтобы подключиться к серверу СУБД и выполнить какие- либо команды, требуется программа-клиент. В главе
«PostgreSQL для приложения» мы будем говорить о том,
как посылать запросы из программ на разных языках программирования, а сейчас речь пойдет о терминаль- ном клиенте psql, работа с которым происходит интер- активно в режиме командной строки.
К сожалению, в наше время многие недолюбливают ко- мандную строку. Почему имеет смысл научиться с ней работать?
Во-первых, psql — стандартный клиент, входящий в лю- бую сборку PostgreSQL, и поэтому он всегда под рукой.
Безусловно, хорошо иметь настроенную под себя сре- ду, но нет никакого резона оказаться беспомощным в незнакомом окружении.
Во-вторых, psql действительно удобен для повседнев- ных задач по администрированию баз данных, для на- писания небольших запросов и автоматизации процес- сов, например, для периодической установки изменений
29
программного кода на сервер СУБД. Он имеет собствен- ные команды, позволяющие сориентироваться в объек- тах, хранящихся в базе данных, и удобно представить информацию из таблиц.
Но если вы привыкли работать с графическими поль- зовательскими интерфейсами, попробуйте pgAdmin —
мы еще упомянем эту программу ниже — или другие аналогичные продукты: wiki.postgresql.org/wiki/
Community_Guide_to_PostgreSQL_GUI_Tools
Чтобы запустить psql, в операционной системе Linux выполните команду:
$ sudo -u postgres psql
В Windows запустите программу «SQL Shell (psql)» из папки меню «Пуск», которую вы указали при установке:
30

В ответ на запрос введите пароль пользователя post- gres, который вы указали при установке PostgreSQL.
Пользователи Windows могут столкнуться с неправиль- ным отображением русских букв в терминале. В этом случае убедитесь, что свойствах окна терминала уста- новлен TrueType-шрифт (обычно «Lucida Console» или
«Consolas»).
В итоге и в одной, и в другой операционной системе вы увидите одинаковое приглашение postgres=#. «Post- gres» здесь — имя базы данных, к которой вы сейчас подключены. Один сервер PostgreSQL может одновре- менно обслуживать несколько баз данных, но одновре- менно вы работаете только с одной из них.
Дальше мы будем приводить некоторые команды. Вво- дите только то, что выделено жирным шрифтом; пригла- шение и ответ системы на команду приведены исключи- тельно для удобства.
База данных
Давайте создадим новую базу данных с именем test.
Выполните:
postgres=# CREATE DATABASE test;
CREATE DATABASE
Не забудьте про точку с запятой в конце команды —
31
пока PostgreSQL не увидит этот символ, он будет счи- тать, что вы продолжаете ввод (так что команду можно разбить на несколько строк).
Теперь переключимся на созданную базу:
postgres=# \c test
You are now connected to database "test" as user
"postgres".
test=#
Как вы видите, приглашение сменилось на test=#.
Команда, которую мы только что ввели, не похожа на
SQL — она начинается с обратной косой черты. Так вы- глядят специальные команды, которые понимает только psql (поэтому, если у вас открыт pgAdmin или другое графическое средство, пропускайте все, что начинается на косую черту, или попытайтесь найти аналог).
Команд psql довольно много, и с некоторыми из них мы познакомимся чуть позже, а полный список с крат- ким описанием можно получить прямо сейчас:
test=# \?
Поскольку справочная информация довольна объемна,
она будет показана с помощью настроенной в операци- онной системе команды-пейджера; обычно это more или less.
32

Таблицы
В реляционных СУБД данные представляются в виде
таблиц.
Заголовок таблицы определяет столбцы; соб- ственно данные располагаются в строках. Данные не упорядочены (в частности, нельзя полагаться на то, что строки хранятся в порядке их добавления в таблицу).
Для каждого столбца устанавливается тип данных; зна- чения соответствующих полей строк должны удовлетво- рять этим типам. PostgreSQL располагает большим чис- лом встроенных типов данных (postgrespro.ru/doc/
datatype.html) и возможностями для создания новых,
но мы ограничимся несколькими из основных:
• integer — целые числа;
• text — текстовые строки;
• boolean — логический тип, принимающий значения true (истина) или false (ложь).
Помимо обычных значений, определяемых типом дан- ных, поле может иметь неопределенное значение NULL —
его можно рассматривать как «значение неизвестно»
или «значение не задано».
Давайте создадим таблицу дисциплин, читаемых в вузе:
test=# CREATE TABLE courses(
test(#
c_no text PRIMARY KEY,
test(#
title text,
test(#
hours integer
test(# );
CREATE TABLE
33

Обратите внимание, как меняется приглашение psql:
это подсказка, что ввод команды продолжается на но- вой строке. (В дальнейшем для удобства мы не будем дублировать приглашение на каждой строке.)
В этой команде мы определили, что таблица с именем courses будет состоять из трех столбцов: c_no — тек- стовый номер курса, title — название курса, и hours —
целое число лекционных часов.
Кроме столбцов и типов данных мы можем опреде- лить ограничения целостности, которые будут автома- тически проверяться — СУБД не допустит появление в базе некорректных данных. В нашем примере мы добавили ограничение PRIMARY KEY для столбца c_no,
которое говорит о том, что значения в этом столбце должны быть уникальными, а неопределенные значе- ния не допускаются. Такой столбец можно использо- вать для того, чтобы отличить одну строку в таблице от других. Полный список ограничений целостности:
postgrespro.ru/doc/ddl-constraints.html.
Точный синтаксис команды CREATE TABLE можно посмот- реть в документации, либо попросить справку прямо в psql:
test=# \help CREATE TABLE
Такая справка есть по каждой команде SQL, а полный список команд легко получить с помощью \help без параметров.
34

Наполнение таблиц
Добавим в созданную таблицу несколько строк:
test=# INSERT INTO courses(c_no, title, hours)
VALUES ('CS301', 'Базы данных', 30),
('CS305', 'Сети ЭВМ', 60);
INSERT 0 2
Если вам требуется массовая загрузка данных из внеш- него источника, команда INSERT — не лучший выбор;
посмотрите на специально предназначенную для этого команду COPY: postgrespro.ru/doc/sql-copy.html.
Для дальнейших примеров нам потребуется еще две таблицы: студенты и экзамены. Для каждого студента мы будем хранить его имя и год поступления; иденти- фицироваться он будет числовым номером студенческо- го билета.
test=# CREATE TABLE students(
s_id integer PRIMARY KEY,
name text,
start_year integer
);
CREATE TABLE
test=# INSERT INTO students(s_id, name, start_year)
VALUES (1451, 'Анна', 2014),
(1432, 'Виктор', 2014),
(1556, 'Нина', 2015);
INSERT 0 3 35

Экзамен содержит оценку, полученную студентом по некоторой дисциплине. Таким образом, студенты и дис- циплины связаны друг с другом отношением «многие ко многим»: один студент может сдавать экзамены по многим дисциплинам, а экзамен по одной дисциплине могут сдавать много студентов.
Запись в таблице экзаменов идентифицируется сово- купностью имени студента и номера курса. Такое огра- ничение целостности, относящее сразу к нескольким столбцам, определяется с помощью фразы CONSTRAINT:
test=# CREATE TABLE exams(
s_id integer REFERENCES students(s_id),
c_no text REFERENCES courses(c_no),
score integer,
CONSTRAINT pk PRIMARY KEY(s_id, c_no)
);
CREATE TABLE
Кроме того, с помощью фразы REFERENCES мы опре- делили два ограничения ссылочной целостности, на- зываемые внешними ключами. Такие ключи показыва- ют, что значения в одной таблице ссылаются на строки в другой таблице. Теперь при любых действиях СУБД
будет проверять, что все идентификаторы s_id, ука- занные в таблице экзаменов, соответствуют реальным студентам (то есть записям в таблице студентов), а но- мера c_no — реальным курсам. Таким образом, будет исключена возможность оценить несуществующего сту- дента или поставить оценку по несуществующей дис- циплине — независимо от действий пользователя или возможных ошибок в приложении.
36

Поставим нашим студентам несколько оценок:
test=# INSERT INTO exams(s_id, c_no, score)
VALUES (1451, 'CS301', 5),
(1556, 'CS301', 5),
(1451, 'CS305', 5),
(1432, 'CS305', 4);
INSERT 0 4
Выборка данных
Простые запросы
Чтение данных из таблиц выполняется оператором SELECT.
Например, выведем два столбца из таблицы courses:
test=# SELECT title AS course_title, hours
FROM courses;
course_title | hours
--------------+-------
Базы данных |
30
Сети ЭВМ
|
60
(2 rows)
Конструкция AS позволяет переименовать столбец, если это необходимо. Чтобы вывести все столбцы, достаточно указать символ звездочки:
test=# SELECT * FROM courses;
c_no |
title
| hours
-------+-------------+-------
CS301 | Базы данных |
30
CS305 | Сети ЭВМ
|
60
(2 rows)
37

В результирующей выборке мы можем получить несколь- ко одинаковых строк. Даже если все строки были раз- личны в исходной таблице, дубликаты могут появиться,
если выводятся не все столбцы:
test=# SELECT start_year FROM students;
start_year
------------
2014 2014 2015
(3 rows)
Чтобы выбрать все различные года поступления, после
SELECT надо добавить слово DISTINCT:
test=# SELECT DISTINCT start_year FROM students;
start_year
------------
2014 2015
(2 rows)
Подробнее смотрите в документации: postgrespro.ru/
doc/sql-select.html#SQL-DISTINCT
Вообще после слова SELECT можно указывать и любые выражения. А без фразы FROM результирующая таблица будет содержать одну строку. Например:
test=# SELECT 2+2 AS result;
result
--------
4
(1 row)
38

Обычно при выборке данных требуется получить не все строки, а только удовлетворяющие какому-либо усло- вию. Такое условие фильтрации записывается во фразе
WHERE:
test=#
1   2   3   4   5   6   7   8


написать администратору сайта