Before anyone can access the database, you must start the database server. The database server program is called postgres
.
If you are using a pre-packaged version of PostgreSQL, it almost certainly includes provisions for running the server as a background task according to the conventions of your operating system. Using the package’s infrastructure to start the server will be much less work than figuring out how to do this yourself. Consult the package-level documentation for details.
The bare-bones way to start the server manually is just to invoke postgres
directly, specifying the location of the data directory with the -D
option, for example:
$ postgres -D /usr/local/pgsql/data
which will leave the server running in the foreground. This must be done while logged into the PostgreSQL user account. Without -D
, the server will try to use the data directory named by the environment variable PGDATA
. If that variable is not provided either, it will fail.
Normally it is better to start postgres
in the background. For this, use the usual Unix shell syntax:
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &
It is important to store the server’s stdout and stderr output somewhere, as shown above. It will help for auditing purposes and to diagnose problems. (See Section 25.3 for a more thorough discussion of log file handling.)
The postgres
program also takes a number of other command-line options. For more information, see the postgres reference page and Chapter 20 below.
This shell syntax can get tedious quickly. Therefore the wrapper program pg_ctl is provided to simplify some tasks. For example:
pg_ctl start -l logfile
will start the server in the background and put the output into the named log file. The -D
option has the same meaning here as for postgres
. pg_ctl
is also capable of stopping the server.
Normally, you will want to start the database server when the computer boots. Autostart scripts are operating-system-specific. There are a few example scripts distributed with PostgreSQL in the contrib/start-scripts
directory. Installing one will require root privileges.
Different systems have different conventions for starting up daemons at boot time. Many systems have a file /etc/rc.local
or /etc/rc.d/rc.local
. Others use init.d
or rc.d
directories. Whatever you do, the server must be run by the PostgreSQL user account and not by root or any other user. Therefore you probably should form your commands using su postgres -c '...'
. For example:
su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'
Here are a few more operating-system-specific suggestions. (In each case be sure to use the proper installation directory and user name where we show generic values.)
-
For FreeBSD, look at the file
contrib/start-scripts/freebsd
in the PostgreSQL source distribution. -
On OpenBSD, add the following lines to the file
/etc/rc.local
:if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data' echo -n ' postgresql' fi
-
On Linux systems either add
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
to
/etc/rc.d/rc.local
or/etc/rc.local
or look at the filecontrib/start-scripts/linux
in the PostgreSQL source distribution.When using systemd, you can use the following service unit file (e.g., at
/etc/systemd/system/postgresql.service
):[Unit] Description=PostgreSQL database server Documentation=man:postgres(1) After=network-online.target Wants=network-online.target [Service] Type=notify User=postgres ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=infinity [Install] WantedBy=multi-user.target
Using
Type=notify
requires that the server binary was built withconfigure --with-systemd
.Consider carefully the timeout setting. systemd has a default timeout of 90 seconds as of this writing and will kill a process that does not report readiness within that time. But a PostgreSQL server that might have to perform crash recovery at startup could take much longer to become ready. The suggested value of
infinity
disables the timeout logic. -
On NetBSD, use either the FreeBSD or Linux start scripts, depending on preference.
-
On Solaris, create a file called
/etc/init.d/postgresql
that contains the following line:su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data"
Then, create a symbolic link to it in
/etc/rc3.d
asS99postgresql
.
While the server is running, its PID is stored in the file postmaster.pid
in the data directory. This is used to prevent multiple server instances from running in the same data directory and can also be used for shutting down the server.
19.3.1. Server Start-up Failures
There are several common reasons the server might fail to start. Check the server’s log file, or start it by hand (without redirecting standard output or standard error) and see what error messages appear. Below we explain some of the most common error messages in more detail.
LOG: could not bind IPv4 address "127.0.0.1": Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create any TCP/IP sockets
This usually means just what it suggests: you tried to start another server on the same port where one is already running. However, if the kernel error message is not Address already in use
or some variant of that, there might be a different problem. For example, trying to start a server on a reserved port number might draw something like:
$ postgres -p 666
LOG: could not bind IPv4 address "127.0.0.1": Permission denied
HINT: Is another postmaster already running on port 666? If not, wait a few seconds and retry.
FATAL: could not create any TCP/IP sockets
A message like:
FATAL: could not create shared memory segment: Invalid argument DETAIL: Failed system call was shmget(key=5440001, size=4011376640, 03600).
probably means your kernel’s limit on the size of shared memory is smaller than the work area PostgreSQL is trying to create (4011376640 bytes in this example). This is only likely to happen if you have set shared_memory_type
to sysv
. In that case, you can try starting the server with a smaller-than-normal number of buffers (shared_buffers), or reconfigure your kernel to increase the allowed shared memory size. You might also see this message when trying to start multiple servers on the same machine, if their total space requested exceeds the kernel limit.
An error like:
FATAL: could not create semaphores: No space left on device DETAIL: Failed system call was semget(5440126, 17, 03600).
does not mean you’ve run out of disk space. It means your kernel’s limit on the number of System V semaphores is smaller than the number PostgreSQL wants to create. As above, you might be able to work around the problem by starting the server with a reduced number of allowed connections (max_connections), but you’ll eventually want to increase the kernel limit.
Details about configuring System V IPC facilities are given in Section 19.4.1.
19.3.2. Client Connection Problems
Although the error conditions possible on the client side are quite varied and application-dependent, a few of them might be directly related to how the server was started. Conditions other than those shown below should be documented with the respective client application.
psql: error: connection to server at "server.joe.com" (123.123.123.123), port 5432 failed: Connection refused Is the server running on that host and accepting TCP/IP connections?
This is the generic “I couldn’t find a server to talk to” failure. It looks like the above when TCP/IP communication is attempted. A common mistake is to forget to configure the server to allow TCP/IP connections.
Alternatively, you might get this when attempting Unix-domain socket communication to a local server:
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket?
If the server is indeed running, check that the client’s idea of the socket path (here /tmp
) agrees with the server’s unix_socket_directories setting.
A connection failure message always shows the server address or socket path name, which is useful in verifying that the client is trying to connect to the right place. If there is in fact no server listening there, the kernel error message will typically be either Connection refused
or No such file or directory
, as illustrated. (It is important to realize that Connection refused
in this context does not mean that the server got your connection request and rejected it. That case will produce a different message, as shown in Section 21.15.) Other error messages such as Connection timed out
might indicate more fundamental problems, like lack of network connectivity, or a firewall blocking the connection.
PostgreSQL — это бесплатная объектно-реляционная СУБД с мощным функционалом, который позволяет конкурировать с платными базами данных, такими как Microsoft SQL, Oracle. PostgreSQL поддерживает пользовательские данные, функции, операции, домены и индексы. В данной статье мы рассмотрим установку и краткий обзор по управлению базой данных PostgreSQL. Мы установим СУБД PostgreSQL в Windows 10, создадим новую базу, добавим в неё таблицы и настроим доступа для пользователей. Также мы рассмотрим основы управления PostgreSQL с помощью SQL shell и визуальной системы управления PgAdmin. Надеюсь эта статья станет хорошей отправной точкой для обучения работы с PostgreSQL и использованию ее в разработке и тестовых проектах.
Содержание:
- Установка PostgreSQL 11 в Windows 10
- Доступ к PostgreSQL по сети, правила файерволла
- Утилиты управления PostgreSQL через командную строку
- PgAdmin: Визуальный редактор для PostgresSQL
- Query Tool: использование SQL запросов в PostgreSQL
Установка PostgreSQL 11 в Windows 10
Для установки PostgreSQL перейдите на сайт https://www.postgresql.org и скачайте последнюю версию дистрибутива для Windows, на сегодняшний день это версия PostgreSQL 11 (в 11 версии PostgreSQL поддерживаются только 64-х битные редакции Windows). После загрузки запустите инсталлятор.
В процессе установки установите галочки на пунктах:
- PostgreSQL Server – сам сервер СУБД
- PgAdmin 4 – визуальный редактор SQL
- Stack Builder – дополнительные инструменты для разработки (возможно вам они понадобятся в будущем)
- Command Line Tools – инструменты командной строки
Установите пароль для пользователя postgres (он создается по умолчанию и имеет права суперпользователя).
По умолчание СУБД слушает на порту 5432, который нужно будет добавить в исключения в правилах фаерволла.
Нажимаете Далее, Далее, на этом установка PostgreSQL завершена.
Доступ к PostgreSQL по сети, правила файерволла
Чтобы разрешить сетевой доступ к вашему экземпляру PostgreSQL с других компьютеров, вам нужно создать правила в файерволе. Вы можете создать правило через командную строку или PowerShell.
Запустите командную строку от имени администратора. Введите команду:
netsh advfirewall firewall add rule name="Postgre Port" dir=in action=allow protocol=TCP localport=5432
- Где rule name – имя правила
- Localport – разрешенный порт
Либо вы можете создать правило, разрешающее TCP/IP доступ к экземпляру PostgreSQL на порту 5432 с помощью PowerShell:
New-NetFirewallRule -Name 'POSTGRESQL-In-TCP' -DisplayName 'PostgreSQL (TCP-In)' -Direction Inbound -Enabled True -Protocol TCP -LocalPort 5432
После применения команды в брандмауэре Windows появится новое разрешающее правило для порта Postgres.
Совет. Для изменения порта в установленной PostgreSQL отредактируйте файл postgresql.conf по пути C:Program FilesPostgreSQL11data.
Измените значение в пункте
port = 5432
. Перезапустите службу сервера postgresql-x64-11 после изменений. Можно перезапустить службу с помощью PowerShell:
Restart-Service -Name postgresql-x64-11
Более подробно о настройке параметров в конфигурационном файле postgresql.conf с помощью тюнеров смотрите в статье.
Утилиты управления PostgreSQL через командную строку
Рассмотрим управление и основные операции, которые можно выполнять с PostgreSQL через командную строку с помощью нескольких утилит. Основные инструменты управления PostgreSQL находятся в папке bin, потому все команды будем выполнять из данного каталога.
- Запустите командную строку.
Совет. Перед запуском СУБД, смените кодировку для нормального отображения в русской Windows 10. В командной строке выполните:
chcp 1251
- Перейдите в каталог bin выполнив команду:
CD C:Program FilesPostgreSQL11bin
Основные команды PostgreSQL:
PgAdmin: Визуальный редактор для PostgresSQL
Редактор PgAdmin служит для упрощения управления базой данных PostgresSQL в понятном визуальном режиме.
По умолчанию все созданные базы хранятся в каталоге base по пути C:Program FilesPostgreSQL11database.
Для каждой БД существует подкаталог внутри PGDATA/base, названный по OID базы данных в pg_database. Этот подкаталог по умолчанию является местом хранения файлов базы данных; в частности, там хранятся её системные каталоги. Каждая таблица и индекс хранятся в отдельном файле.
Для резервного копирования и восстановления лучше использовать инструмент Backup в панели инструментов Tools. Для автоматизации бэкапа PostgreSQL из командной строки используйте утилиту pg_dump.exe.
Query Tool: использование SQL запросов в PostgreSQL
Для написания SQL запросов в удобном графическом редакторе используется встроенный в pgAdmin инструмент Query Tool. Например, вы хотите создать новую таблицу в базе данных через инструмент Query Tool.
- Выберите базу данных, в панели Tools откройте Query Tool
- Создадим таблицу сотрудников:
CREATE TABLE employee
(
Id SERIAL PRIMARY KEY,
FirstName CHARACTER VARYING(30),
LastName CHARACTER VARYING(30),
Email CHARACTER VARYING(30),
Age INTEGER
);
Id — номер сотрудника, которому присвоен ключ SERIAL. Данная строка будет хранить числовое значение 1, 2, 3 и т.д., которое для каждой новой строки будет автоматически увеличиваться на единицу. В следующих строках записаны имя, фамилия сотрудника и его электронный адрес, которые имеют тип CHARACTER VARYING(30), то есть представляют строку длиной не более 30 символов. В строке — Age записан возраст, имеет тип INTEGER, т.к. хранит числа.
После того, как написали код SQL запроса в Query Tool, нажмите клавишу F5 и в базе будет создана новая таблица employee.
Для заполнения полей в свойствах таблицы выберите таблицу employee в разделе Schemas -> Tables. Откройте меню Object инструмент View/Edit Data.
Здесь вы можете заполнить данные в таблице.
После заполнения данных выполним инструментом Query простой запрос на выборку:
select Age from employee;
В прошлый раз я познакомил тебя
с
основами реляционных баз данных и SQL.
Теперь пришло время настроить рабочую среду. Ты будешь использовать
PostgreSQL в качестве своей СУБД, поэтому для начала ее нужно скачать и установить.
PostgreSQL поддерживает все основные операционные системы. Процесс установки прост, поэтому я постараюсь рассказать
о нем как можно быстрее.
Для Windows и Mac ты можешь загрузить установщик
с
веб-сайта EDB.
EDB больше не предоставляет пакеты для систем GNU/Linux. Вместо этого они рекомендуют вам использовать диспетчер
пакетов твоего дистрибутива.
Установщики включают в себя разные компоненты.
Вот самые важные из них:
- Сервер PostgreSQL (очевидно)
- pgAdmin, графический инструмент для управления базами данных
- Менеджер пакетов для загрузки и установки дополнительных инструментов и драйверов
Windows
Скачав установщик, запусти его как любой другой исполняемый файл. Процесс довольно прямолинеен,
но некоторые вещи все же заслуживают внимания.
Диалоговое окно «Выбрать компоненты» позволяет выборочно устанавливать компоненты.
Если у тебя нет веской причины что-то менять — оставляй все как есть.
По умолчанию PostgreSQL создает суперпользователя с именем postgres
(воспринимай его как учетную запись
администратора сервера базы данных).
Во время установки тебе нужно будет указать пароль для суперпользователя (root).
Позже ты сможешь создать других пользователей и назначать им отдельные доступы и роли.
Мы вернемся к этому позже, а сейчас тебе понадобится учетная запись суперпользователя, чтобы начать использовать СУБД.
Чтобы запустить сервер разработки на твоем компьютере или localhost
, необходимо
назначить ему порт.
Порт по умолчанию — 5432. Если ты устанавливаешь PostgreSQL впервые, то он скорее всего свободен.
Если окажется, что этот порт уже занят другим экземпляром PostgreSQL, ты можешь указать другое значение, например 5433.
После завершения установки ты сможешь запустить SQL Shell, поставляемый с Postgres.
Шаг за шагом ты выберешь сервер, какую базу данных использовать, порт, имя пользователя и пароль.
Используй данные, которые ты вводил на предыдущих шагах.
Поздравляю! Настройка для Windows завершена, и скоро мы начнем писать первые SQL запросы.
Ниже список вариантов установки для других операционных систем.
macOS
Для macOS у тебя есть разные варианты. Можно скачать установщик с сайта EDB и запустить его.
Кроме того, можно использовать Postgres.app
, простое приложение для macOS.
После запуска у тебя появится сервер PostgreSQL, готовый к использованию.
Завершить работу сервера можно просто закрыв приложение.
Кроме того, ты также можете использовать Homebrew
, менеджер пакетов для macOS.
GNU/Linux
Ты можешь найти PostgreSQL в репозиториях большинства дистрибутивов Linux. Установить его можно одним щелчком мыши
из выбранного графического диспетчера пакетов.
Альтернативно, можно использовать установку через терминал.
Ты можешь обратиться к документации твоего дистрибутива для получения дополнительных сведений.
Ubuntu
sudo apt-get install postgresql
Ubuntu PostgreSQL configuration guide
Fedora
sudo yum install postgresql-server postgresql-contrib
Fedora PostgreSQL configuration guide
openSUSE
sudo zypper install postgresql postgresql-server postgresql-contrib
openSUSE PostgreSQL configuration guide
Arch
sudo pacman -S postgresql
Arch PostgreSQL configuration guide
Запуск оболочки PostgreSQL
После установки PostgreSQL, нужно запустить оболочку(shell), с помощью которой ты получишь возможность управлять базой данных.
Открой терминал и введи:
psql
— это оболочка Postgres, аргумент -U
используется для указания пользователя.
Поскольку ты еще не создавал других
пользователей, ты войдешь в систему как суперпользователь postgres
.
После этого нужно будет ввести пароль
суперпользователя, который ты выбрал во время установки.
Как только пароль установлен, база данных PostgreSQL готова к работе!
Если сервер PostgreSQL по какой-то причине не запускается, можешь попробовать запустить его вручную.
sudo systemctl start postgres
Понимание модели клиент-сервер
Я уже упоминал PostgreSQL Server как важный компонент базы данных. Но что такое сервер в этом контексте и зачем он нам нужен?
Для начала тебе необходимо понимать модель клиент-сервер.
Почти все СУБД (PostgreSQL, MySQL и другие) следуют клиент-серверной модели. В ней база данных находится на сервере, и клиент
отправляет запросы на сервер, который их обрабатывает.
Под клиентом здесь подразумевается бекэнд нашего приложения, а запросы в — это SQL операции, такие как SELECT, INSERT, UPDATE и DELETE.
Для разработки любого бекэнда, тебе нужен локальный сервер для экспериментов и тестирования.
Этот локальный сервер аналогичен удаленному, но работает прямо на твоем компьютере.
С точки зрения клиента удаленный и локальный сервер идентичны. После разработки и тестирования ты можешь заставить свой
продукт взаимодействовать с удаленным сервером вместо локального, просто изменив пару параметров.
Некоторые базы данных не используют эту модель, например SQLite, которая хранит все в простом файле на диске. Это хорошо
работает для небольших приложений, но для большинства реальных приложений тебе понадобится архитектура клиент-сервер.
Мета-команды PostgreSQL
Теперь, когда ты все настроил и готов приступить к работе с базой данных, осталось разобрать несколько мета-команд.
Это не SQL запросы, а команды специфичные для PostgreSQL.
В других системах управления базами данных есть их аналоги, но их синтаксис немного отличается.
Всем мета-командам предшествует обратная косая черта , за которой следует фактическая команда.
Список всех баз данных
Чтобы получить список всех баз данных на сервере, ты можешь использовать команду l
.
Ввод этой мета-команды в оболочке Postgres выведет:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
Это список всех имеющихся баз данных и служебная информация, такая как владелец базы данных, кодировка и права доступа.
На данный момент мы пока ничего не создали, а базы данных которые ты видишь на экране — создаются по умолчанию при установке Postgres.
- postgres — это просто пустая база данных.
- «template0» и «template1» — это служебные базы данных, которые служат шаблоном для создания новых баз.
Тебе пока не стоит беспокоиться о них. Если хочешь изучить все детали, то проверь официальную документацию.
Подключаемся к базе данных PostgreSQL
Некоторые команды SQL требуют, чтобы ты сначала вошел в базу данных (например, для создания новой таблицы).
Ты можешь выбрать, в какую базу данных входить, при запуске SQL Shell.
Когда ты находишься внутри оболочки (shell), то можешь использовать команду c
(или connect
), за которой следует имя
базы данных. Если бы у тебя была другая база данных под названием hello_world
, то подключиться к ней можно было бы так:
Полностью в терминале у тебя получится что-то такое:
postgres=# c hello_world
You are now connected to database "hello_world" as user "postgres".
hello_world=#
Обрати внимание, что приглашение оболочки изменилось с postgres
на hello_world
. Это значит, что теперь ты
подключен к базе данных hello_world
, а не postgres
.
Получить список всех таблиц в базе данных
Как и в случае со списком существующих баз данных, ты можешь получить список таблиц внутри конкретной базы данных
с помощью команды dt
.
Перед выполнением этой команды вам необходимо войти в базу данных.
Предположим, ты уже находишься внутри базы hello_world
, и в ней есть таблица с именем my_table
. Набрав dt
, ты
получишь следующее:
List of relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public | my_table | table | postgres
Ты можешь увидеть имя таблицы и некоторую другую информацию, такую как схема (мы обсудим схемы в более сложных
руководствах) и владельца.
Владелец (owner) — это пользователь, который создал таблицу.
Если ты создаешь других пользователей и используешь их для создания таблиц, то в последнем столбце будут именно они.
Список пользователей и ролей
Как ты уже знаешь, при установке Postgres создается суперпользователь с именем postgres
.
Список всех пользователей базы данных можно вывести на экран используя команду dg
.
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Обрати внимание, что первый столбец называется — роль (role name).
И весь вывод на экран называется “список ролей” (List of roles), а не список пользователей.
В PostgreSQL пользователи и роли практически
одинаковы.
У ролей есть атрибуты, которые определяют их разрешения, такие как создание баз данных или даже создание
других новых ролей.
Любая роль с атрибутом LOGIN может рассматриваться, как пользователь.
Здесь мы видим только одну роль, суперпользователя по умолчанию.
В реальном мире все будет иначе, потому что использовать только суперпользователя все время опасно.
Вместо этого создают другие роли с меньшими привилегиями.
Это гарантирует, что никто не совершит нежелательных действий по ошибке.
Если у одной из ролей есть доступ только на чтение данных, то с помощью этой роли будет невозможно удалить таблицу или поле.
Твой первый SQL оператор
Наконец, мы все настроили и готовы к работе и знаем основные мета-команды, специфичные для PostgreSQL.
Теперь приступим к изучению языка запросов SQL.
Я покажу тебе несколько базовых примеров, чтобы разобраться в структурированном языке запросов и получить представление о SQL. А более подробно мы рассмотрим операции CRUD это в следующей статье.
Создание новой базы данных
Первое, что тебе нужно узнать при изучении баз данных, — это как создать базу данных.
Создать базу можно сделать с помощью команды CREATE DATABASE
, за которой следует имя базы данных:
Команды и ключевые слова SQL обычно пишутся в верхнем регистре.
На самом деле это не является обязательным требованием, и обычно они нечувствительны к регистру.
То есть ты мог бы написать
И все сработало бы нормально.
Но при написании операторов SQL обычно предпочтительнее прописные буквы. Это
хорошая практика, потому что она может помочь тебе визуально отличить ключевые слова SQL от других частей оператора,
таких как имена таблиц и столбцов.
Заметь, что все стандартные команды в PostgreSQL должны заканчиваться точкой с запятой ;
. Это часть стандарта.
Для мета-команд PostgreSQL точка с запятой не нужна.
Создание таблиц
После того как ты создал новую базу данных, можно приступать к созданию таблиц.
Но, для начала, подключимся к новой базе данных с помощью команды c
, за которой следует имя базы данных:
Теперь, когда ты подключился к базе данных (обратите внимание, что приглашение оболочки SQL теперь включает имя активной
базы данных), ты готов создать свою первую таблицу.
Таблица создается с помощью команды CREATE TABLE, за которой
следует список столбцов таблицы и их типы данных в круглых скобках:
CREATE TABLE products (
id INT,
name TEXT,
quantity INT
)
Это создаст таблицу под названием products
, которая содержит 3 столбца:
id
типаINT
(целое число)name
типаTEXT
(строка)quantity
также типаINT
После создания таблицы перейдем к добавлению данных.
Вставка данных в таблицы PostgreSQL
Чтобы добавить данные в таблицу, используют команду INSERT INTO следующим образом:
INSERT INTO products (id, name, quantity) VALUES (1, 'first product', 20);
Посмотрим на команду INSERT INTO подробнее:
- Команда
INSERT INTO
означает, что вы собираетесь вставить новые данные products
— это имя таблицы в базе данных, в которую ты хочешь вставить данные(id, name, quantity)
— это список столбцов в нашей таблице, разделенных запятыми. Тебе не нужно указывать
все столбцы (иначе какой в смысл?). В некоторых случаях вы хотите выборочно вставлять данные в некоторые
столбцы. Остальные столбцы будут автоматически заполнены значениями по умолчанию.VALUES (1, 'first product', 20)
— это фактические данные, которые будут вставлены в таблицу. «1» — этоid
,
«first product» — этоname
, «20» — этоquantity
.
Выборка данных из SQL таблицы
Теперь, когда ты добавил в таблицу первую запись, ты можешь использовать SQL для
получения содержимого таблицы.
Выборка данных осуществляется с помощью команды SELECT
, и это выглядит следующим
образом:
SELECT id, name, quantity FROM products;
Мы используем команду SELECT
. За ней следует список столбцов, которые мы хотим получить.
Затем мы используем команду FROM
, чтобы указать, из какой таблицы брать данные. На этот раз это таблица products
.
id | name | quantity
---+---------------+----------
1 | first product | 50
Для ситуаций когда ты хочешь выбрать все столбцы которые есть в таблице, ты можешь поставить звездочку вместо списка полей.
Звездочка означает: выбрать все столбцы. Результат останется прежним.
Ты должен обратить внимание на то, как команда SELECT
выбирает столбцы и строки. Столбцы указываются в виде списка и
разделяются запятыми. Затем команда переходит к выбору запрошенных строк.
Если условия не указаны (как в этом случае), будут выбраны все строки в таблице.
Позже мы увидим, как использовать условия с командой WHERE
для создания эффективных запросов.
Обновление данных в PostgreSQL
Представь, что ты запустил свое потрясающее приложение для магазина и получили первый заказ на один из продуктов.
Первое, что нужно сделать — это обновить доступное количество в вашем инвентаре, чтобы в дальнейшем у вас не возникли
проблемы с отсутствием товара на складе.
Для обновления данных ты можешь использовать команду UPDATE
:
UPDATE products SET quantity=49 WHERE id=1;
Давайте разберемся с тем как работает UPDATE
.
Начинаем мы с ключевого слова UPDATE
, за которым следует имя таблицы.
Затем мы используем SET
, чтобы установить новые значения для наших столбцов.
После SET
— пишем имена столбцов, которые
хотим обновить.
За ними — знак равенства и новое обновленное значение.
Также ты можешь обновить сразу несколько столбцов, разделив их запятыми:
UPDATE products SET name='new name', quantity=49 WHERE id=1;
Но стоп, какие строки обновляются этой командой?
Ты уже должны были догадаться об этом. Чтобы указать, какие строки
следует обновить новыми значениями, мы используем команду WHERE
, за которым следует условие.
В этом случае мы сопоставляем строки, используя их столбец id
, и обновляем строку с id
1.
Удаление данных из SQL таблицы
Теперь рассмотрим случай, когда ты прекратил продажу определенного продукта и захотел полностью удалить его из своей
базы данных.
Для этого можно использовать команду DELETE
:
DELETE FROM products WHERE id=1;
Как и при обновлении данных, чтобы определить, какие именно строки мы хотим удалить, нам нужно условие WHERE
.
Удаление таблиц в PostgreSQL
Если вдруг ты решил изменить структуру базы и для этого нужно удалить всю таблицу, то тебе подойдет команда DROP TABLE
:
Это приведет к удалению всей таблицы products
из базы данных.
Будь очень осторожен с командой DELETE
!
Я бы не позавидовал тому, кто “случайно” удалит не ту таблицу из базы данных.
Удаление баз данных PostgreSQL
Точно так же ты можешь удалить из системы всю базу данных:
Заключение
Поздравляю, у тебя все получилось!
Ты установил и запустили PostgreSQL. Ты изучил основные команды SQL и проделали с ними несколько интересных вещей.
Эти несколько простых команд — основа, которую ты будешь использовать большую часть времени при взаимодействии с базами
данных, поэтому тебе следует пойти и потренироваться и изучить самостоятельно. В следующий раз мы погрузимся глубже и
обсудим
Базы данных, роли и таблицы в PostgreSQL
I have installed Postgresql on my Windows 10 PC. I have used the pgAdmin II tool to create a database called company, and now I want to start the database server running. I cannot figure out how to do this.
I have run the start command on the postgres command line, and nothing seems to happen.
What I doing is:
postgres=# pg_ctl start
postgres=# pg_ctl status
postgres=# pg_ctl restart
postgres=# pg_ctl start company
postgres=# pg_ctl status
…..-> I am seeing nothing returned.
mikemaccana
103k93 gold badges371 silver badges470 bronze badges
asked Apr 14, 2016 at 17:25
3
Go inside bin folder in C drive where Postgres is installed.
run following command in git bash or Command prompt:
pg_ctl.exe restart -D "<path upto data>"
Ex:
pg_ctl.exe restart -D "C:Program FilesPostgreSQL9.6data"
Another way:
type «services.msc» in run popup(windows + R).
This will show all services running
Select Postgres service from list and click on start/stop/restart.
Thanks
answered Oct 5, 2017 at 9:42
0
pg_ctl
is a command line (Windows) program not a SQL statement. You need to do that from a cmd.exe
. Or use net start postgresql-9.5
If you have installed Postgres through the installer, you should start the Windows service instead of running pg_ctl
manually, e.g. using:
net start postgresql-9.5
Note that the name of the service might be different in your installation. Another option is to start the service through the Windows control panel
I have used the pgAdmin II tool to create a database called company
Which means that Postgres is already running, so I don’t understand why you think you need to do that again. Especially because the installer typically sets the service to start automatically when Windows is started.
The reason you are not seeing any result is that psql
requires every SQL command to be terminated with ;
in your case it’s simply waiting for you to finish the statement.
See here for more details: In psql, why do some commands have no effect?
answered Apr 14, 2016 at 18:27
4
If you have installed postgres via the Windows installer you can start it in Services like so:
answered Oct 30, 2018 at 10:28
Matthew LockMatthew Lock
12.6k11 gold badges89 silver badges128 bronze badges
5
After a lot of search and tests i found the solution :
if you are in windows :
1 — first you must found the PG databases directory
execute the command as sql command in pgAdmin query tools
$ show data_directory;
result :
------------------------ - D:/PG_DATA/data - ------------------------
2 — go to the bin directory of postgres in my case it’s located «c:/programms/postgresSql/bin»
and open a command prompt (CMD) and execute this command :
pg_ctl -D "D:PSG_SQLdata" restart
This should do it.
answered Dec 7, 2016 at 16:41
HichamEchHichamEch
6189 silver badges18 bronze badges
2
The simplest way to start/stop/restart the installed PostgreSQL Server on your Windows device is as follows:
- Start ->
net start postgresql-x64-14
- Stop ->
net stop postgresql-x64-14
- Restart ->
net stop postgresql-x64-14 && net start postgresql-x64-14
The version number must be changed to take into account the installed version of your PostgreSQL Server.
answered Dec 1, 2021 at 20:35
For windows the following command worked well for me
pg_ctl.exe restart -D «<path_to_data>»
Eg: pg_ctl.exe restart -D «D:Program FilesPostgreSQL13data»
answered Jul 1, 2021 at 17:05
If you are getting an error «psql.exe’ is not recognized as an internal or external command,… «
There can be :
Causes
- System is unable to find the psql.exe tool, because the path to this tool is not specified in the system environment variable PATH
or
— PostgreSQL Database client not installed on your PC
Since you have already installed PostgreSQL the latter can not be the issue(assuming everything is installed as expected)
In order to fix the first one «please specify the full path to the bin directory in the PostgreSQL installation folder, where this tool resides.»
For example
Path: «C:Program FilesPostgreSQL10bin»
answered May 10, 2018 at 7:53
I found using
net start postgres_service_name
the only reliable way to operate Postgres on Windows
answered May 17, 2018 at 8:23
first find your binaries file where it is saved.
get the path in terminal mine is
C:UsersLENOVODocumentspostgresql-9.5.21-1-windows-x64-binaries
(1)pgsqlbin
then find your local user data path, it is in mostly
C:usrlocalpgsqldata
now all we have to hit following command in the binary terminal path:
C:UsersLENOVODocumentspostgresql-9.5.21-1-windows-x64-binaries (1)pgsqlbin>pg_ctl -D "C:usrlocalpgsqldata" start
all done!
autovaccum launcher started! cheers!
answered May 13, 2020 at 23:08
Remove Postmaster file in «C:Program FilesPostgreSQL9.6data»
and restart the PostgreSQL services
answered Aug 17, 2019 at 13:10
There are different way to open PostgreSql database .
1> One of them is by going windows and select pgAdmin4 or pgAdmin3 depends to version you use and entering password you can access you database .
2> Another one is by terminal :
To able to select from terminal you have to add the path of your installed postgresql by going enviroment variables . To do that got to installed postgresql file and select the path of bin and add to enviroment variable of window setting .
after that you can type in terminal : psql -U postgres -h localhost
Hit enter and it ask you password . After giving password you can create database and tables and can access it .
answered Apr 18, 2021 at 15:35
I was try to solve the problem with Windows Terminal and I’ve cannot to solve it. Use Windows R + cmd (if you are using Windows) for it work!
answered Oct 8, 2021 at 18:39
The easiest way to enable pg_ctl command is to go to your PostgreSQL directory ~PostgreSQLversionbin
and execute the pg_ctl.exe
. Afterwards the pg_ctl commands will be available.
answered Jan 5, 2021 at 2:11
Relational Database Management Systems (RDBMS) can store a large amount of data using the tabular arrangement of a database. RDBMS are widely used to perform database operations like creating, administering, and managing small and large workloads.
PostgreSQL is a fantastic tool to use, but it can be a little daunting to get it up and running in Windows. As such, let us guide you through how to set up PostgreSQL on Windows and get started with your database as soon as possible.
What You Need to Know About PostgreSQL
PostgreSQL is a database management software based on SQL. This enterprise-level software is known for its versatility and scalability. Its flexibility allows it to handle different levels of workloads from single and multiple machines simultaneously. Even better, it can function seamlessly with an entire warehouse of concurrent users.
PostgreSQL has earned a strong reputation for its proven architecture, reliability, data integrity, robust feature sets, extensibility. The dedication of the open-source community behind the software allows this software to deliver performant and innovative solutions consistently.
How to Install PostgreSQL on Windows
The PostgreSQL installation process on Windows is slightly different from its Linux counterparts. You need to install the Postgre Database Server and a graphical tool to administer the database.
While you can download both of them separately, you would still need to configure them together, which can be a challenge of its own. It is, therefore, best to download and install a bundled installer.
To kickstart the installation, visit the official PostgreSQL website and select Download. On the next page, select Windows since we are downloading a compatible version for Windows OS.
On the Windows Installer page, click on Download the Installer. Under the Platform Support section, you will notice some relevant information for each of the released versions. It’s best to note the latest version available for Download.
Clicking on Download the Installer brings you to the PostgreSQL Database Download page. Depending on the version of your computer, you can choose between Windows x86-64 or Windows x86-32.
Select the latest PostgreSQL version from the dialogue box and click on the download button next to it. This should start the setup download for you.
Once the EXE file downloads, click on it to begin the setup. The setup will ask you about the destination directory and component details.
From the list of components, you can choose from the following:
- PostgreSQL Server
- pgAdmin4
- Stack Builder
- Command Line Tools
It’s a good idea to check all four boxes, as each application will be useful in the near future.
On the next screen, you will be to set up a super password for the database superuser. Create a password and then click Next.
On the next screen, leave the port number unchanged and click Next. You should see a pre-installation summary that lists all the details you’ve set up. Review each aspect of the installation, and if everything looks fine, click on Next.
The Ready to Install dialogue box will appear. Click on Next to begin the installation.
Connecting to PostgreSQL with pgAdmin4
There are two ways to connect PostgreSQL to a server. You can either use the conventional command-line method or the pgAdmin tool that comes preloaded after the installation process on Windows.
Connecting to PostgreSQL Using the pgAdmin Application
- Launch the pgAdmin application from the program files folder or using the Windows Search feature.
- Log in to the pgAdmin client using the master password that you used during the installation process.
- Click on the Create Server option and fill in necessary details like Host, Port, Maintenance Database, Username and Password.
- Click on the Save option. The created server is now visible on the left side tab.
- Double click on the server’s name and enter the password to connect to the PostgreSQL server.
Connecting to PostgreSQL Using the Command Window
Post-installation, you can search for the SQL shell (PSQL) in the Start menu. This is where you will enter any relevant SQL commands.
To list all the available databases with PSQL, type in l and hit Enter.
How to Create a New Database in PostgreSQL
To Create a New Database, type CREATE DATABASE test, where test is the name of the database.
To access the new database, close the PSQL terminal and reopen it again. The application will remember the server name, port, user name, and password you used last time.
Before you reconnect, change the Postgres name to your set databases’ name, then press Enter.
How to Create and List Tables in PostgreSQL
To create a table within an existing database, use the following command:
CREATE TABLE PERSON (
ID BIGSERIAL NOT NULL PRIMARY KEY,
NAME VARCHAR(100) NOT NULL,
COUNTRY VARCHAR(50) NOT NULL );
This command will create a table person within the database test and add a few variable names to it as well. Tweak these variables to suit your own needs.
To list all tables in a database, use the dt command. If you use this command with the above example, you will notice there is only one table called Person in the database Test.
How to Modify the Root User Credentials
You can change the Postgres password after logging in as the root user. To do this, use the following command:
ALTER USER postgres PASSWORD 'newpassword';
Change newpassword to the password of your choice.
Creating and Removing a User Role in PostgreSQL
Many people work simultaneously on a project with different roles. You can create different roles that have different accesses in PostgreSQL by using the Windows console. You can also choose whether to grant a superuser status to the newly created role.
To grant someone access, run the Windows console and change the default directory to the PostgreSQL bin directory (For instance, C:Program FilesPostgreSQL9.0bin) or add this directory to the Path environment variable.
Now use the following code in the console:
createuser.exe --createdb --username postgres --no-createrole --pwprompt openpg
You can modify the commands to change the role privileges. You will be prompted to choose the superuser status for the role. Enter y for Yes or n for No and then assign a password to create the new role.
You can remove a user role from the list of other users using the following command:
DROP USER name [, ...];
Working With PostgreSQL in Windows
PostgreSQL is an incredible tool to manage databases reliably and in a foolproof manner. The Windows installation process is relatively simple and requires only a few clicks to get set up and running.
Relational Database Management Systems (RDBMS) can store a large amount of data using the tabular arrangement of a database. RDBMS are widely used to perform database operations like creating, administering, and managing small and large workloads.
PostgreSQL is a fantastic tool to use, but it can be a little daunting to get it up and running in Windows. As such, let us guide you through how to set up PostgreSQL on Windows and get started with your database as soon as possible.
What You Need to Know About PostgreSQL
PostgreSQL is a database management software based on SQL. This enterprise-level software is known for its versatility and scalability. Its flexibility allows it to handle different levels of workloads from single and multiple machines simultaneously. Even better, it can function seamlessly with an entire warehouse of concurrent users.
PostgreSQL has earned a strong reputation for its proven architecture, reliability, data integrity, robust feature sets, extensibility. The dedication of the open-source community behind the software allows this software to deliver performant and innovative solutions consistently.
How to Install PostgreSQL on Windows
The PostgreSQL installation process on Windows is slightly different from its Linux counterparts. You need to install the Postgre Database Server and a graphical tool to administer the database.
While you can download both of them separately, you would still need to configure them together, which can be a challenge of its own. It is, therefore, best to download and install a bundled installer.
To kickstart the installation, visit the official PostgreSQL website and select Download. On the next page, select Windows since we are downloading a compatible version for Windows OS.
On the Windows Installer page, click on Download the Installer. Under the Platform Support section, you will notice some relevant information for each of the released versions. It’s best to note the latest version available for Download.
Clicking on Download the Installer brings you to the PostgreSQL Database Download page. Depending on the version of your computer, you can choose between Windows x86-64 or Windows x86-32.
Select the latest PostgreSQL version from the dialogue box and click on the download button next to it. This should start the setup download for you.
Once the EXE file downloads, click on it to begin the setup. The setup will ask you about the destination directory and component details.
From the list of components, you can choose from the following:
- PostgreSQL Server
- pgAdmin4
- Stack Builder
- Command Line Tools
It’s a good idea to check all four boxes, as each application will be useful in the near future.
On the next screen, you will be to set up a super password for the database superuser. Create a password and then click Next.
On the next screen, leave the port number unchanged and click Next. You should see a pre-installation summary that lists all the details you’ve set up. Review each aspect of the installation, and if everything looks fine, click on Next.
The Ready to Install dialogue box will appear. Click on Next to begin the installation.
Connecting to PostgreSQL with pgAdmin4
There are two ways to connect PostgreSQL to a server. You can either use the conventional command-line method or the pgAdmin tool that comes preloaded after the installation process on Windows.
Connecting to PostgreSQL Using the pgAdmin Application
- Launch the pgAdmin application from the program files folder or using the Windows Search feature.
- Log in to the pgAdmin client using the master password that you used during the installation process.
- Click on the Create Server option and fill in necessary details like Host, Port, Maintenance Database, Username and Password.
- Click on the Save option. The created server is now visible on the left side tab.
- Double click on the server’s name and enter the password to connect to the PostgreSQL server.
Connecting to PostgreSQL Using the Command Window
Post-installation, you can search for the SQL shell (PSQL) in the Start menu. This is where you will enter any relevant SQL commands.
To list all the available databases with PSQL, type in l and hit Enter.
How to Create a New Database in PostgreSQL
To Create a New Database, type CREATE DATABASE test, where test is the name of the database.
To access the new database, close the PSQL terminal and reopen it again. The application will remember the server name, port, user name, and password you used last time.
Before you reconnect, change the Postgres name to your set databases’ name, then press Enter.
How to Create and List Tables in PostgreSQL
To create a table within an existing database, use the following command:
CREATE TABLE PERSON (
ID BIGSERIAL NOT NULL PRIMARY KEY,
NAME VARCHAR(100) NOT NULL,
COUNTRY VARCHAR(50) NOT NULL );
This command will create a table person within the database test and add a few variable names to it as well. Tweak these variables to suit your own needs.
To list all tables in a database, use the dt command. If you use this command with the above example, you will notice there is only one table called Person in the database Test.
How to Modify the Root User Credentials
You can change the Postgres password after logging in as the root user. To do this, use the following command:
ALTER USER postgres PASSWORD 'newpassword';
Change newpassword to the password of your choice.
Creating and Removing a User Role in PostgreSQL
Many people work simultaneously on a project with different roles. You can create different roles that have different accesses in PostgreSQL by using the Windows console. You can also choose whether to grant a superuser status to the newly created role.
To grant someone access, run the Windows console and change the default directory to the PostgreSQL bin directory (For instance, C:Program FilesPostgreSQL9.0bin) or add this directory to the Path environment variable.
Now use the following code in the console:
createuser.exe --createdb --username postgres --no-createrole --pwprompt openpg
You can modify the commands to change the role privileges. You will be prompted to choose the superuser status for the role. Enter y for Yes or n for No and then assign a password to create the new role.
You can remove a user role from the list of other users using the following command:
DROP USER name [, ...];
Working With PostgreSQL in Windows
PostgreSQL is an incredible tool to manage databases reliably and in a foolproof manner. The Windows installation process is relatively simple and requires only a few clicks to get set up and running.
Введение | |
Установка | |
Проверка версии | |
Проверка статуса | |
Перезапуск PostgreSQL | |
Зайти в Postgres | |
После установки | |
l: Список существующих БД | |
Создание БД | |
Удалить базу данных | |
Проверка кодировки | |
c: Перейти в БД | |
Подключение к БД | |
Список активных подключений к БД | |
Переименовать БД | |
UPDATE: Изменение значения | |
Выйти из консоли PostgreSQL | |
Узнать текущую схему | |
Системные переменные | |
Разрешить внешние подключения | |
Похожие статьи |
Введение
PostgreSQL (произносится «Пост-Грэс-Кью-Эл»)
— свободная объектно-реляционная система управления базами данных (СУБД).
Существует в реализациях для множества
UNIX
-подобных платформ, включая AIX,
различные BSD-системы, HP-UX, IRIX,
Linux
, macOS, Solaris/OpenSolaris,
Tru64, QNX, а также для
Microsoft Windows
.
Установка
-
Установка в Ubuntu
-
Установка в Centos
Проверка версии
После установки проверьте версию установленного PostgreSQL
postgres -V
postgres (PostgreSQL) 9.2.24
или
psql -V
psql (PostgreSQL) 13.7
Проверить статус
PostgreSQL 9.6
systemctl status -l postgresql
Вместо 11 укажите вашу версию
systemctl status -l postgresql-11
Возможны варианты inactive, failed, active
● postgresql-11.service — PostgreSQL 11 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: https://www.postgresql.org/docs/11/static/
● postgresql-11.service — PostgreSQL 11 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2022-09-20 12:01:41 EEST; 6s ago
Docs: https://www.postgresql.org/docs/11/static/
Process: 12952 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)
Feb 06 08:02:36 host.andrei.com systemd[1]: Starting PostgreSQL 11 database server…
Feb 06 08:02:36 host.andrei.com systemd[1]: postgresql-11.service: control process exited, code=exited status=1
Feb 06 08:02:36 host.andrei.com systemd[1]: Failed to start PostgreSQL 11 database server.
Feb 06 08:02:36 host.andrei.com systemd[1]: Unit postgresql-11.service entered failed state.
Feb 06 08:02:36 host.andrei.com systemd[1]: postgresql-11.service failed.
● postgresql-11.service — PostgreSQL 11 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-11.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2022-09-20 12:19:45 EEST; 7s ago
Docs: https://www.postgresql.org/docs/11/static/
Process: 15899 ExecStartPre=/usr/pgsql-11/bin/postgresql-11-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 15904 (postmaster)
Tasks: 8
CGroup: /system.slice/postgresql-11.service
├─15904 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
├─15906 postgres: logger
├─15908 postgres: checkpointer
├─15909 postgres: background writer
├─15910 postgres: walwriter
├─15911 postgres: autovacuum launcher
├─15912 postgres: stats collector
└─15913 postgres: logical replication launcher
Feb 06 08:02:36 host.andrei.com systemd[1]: Starting PostgreSQL 11 database server…
Feb 06 08:02:36 host.andrei.com postmaster[15904]: 2022-09-20 12:19:45.397 EEST [15904] LOG: listening on IPv6 address «::1», port 5432
Feb 06 08:02:36 host.andrei.com postmaster[15904]: 2022-09-20 12:19:45.397 EEST [15904] LOG: listening on IPv4 address «127.0.0.1», port 5432
Feb 06 08:02:36 host.andrei.com postmaster[15904]: 2022-09-20 12:19:45.401 EEST [15904] LOG: listening on Unix socket «/var/run/postgresql/.s.PGSQL.5432»
Feb 06 08:02:36 host.andrei.com postmaster[15904]: 2022-09-20 12:19:45.405 EEST [15904] LOG: listening on Unix socket «/tmp/.s.PGSQL.5432»
Feb 06 08:02:36 host.andrei.com postmaster[15904]: 2022-09-20 12:19:45.414 EEST [15904] LOG: redirecting log output to logging collector process
Feb 06 08:02:36 host.andrei.com postmaster[15904]: 2022-09-20 12:19:45.414 EEST [15904] HINT: Future log output will appear in directory «log».
Feb 06 08:02:36 host.andrei.com systemd[1]: Started PostgreSQL 11 database server.
Перезапуск PostgreSQL
Для версии 9
systemctl restart postgresql
Для более современных версий, например 11
systemctl restart postgresql-11
Зайти в Postgres
Когда postgresql-11 находится имеет статус active можно
зайти в postgres выполнив
sudo su — postgres
Last login: Mon Feb 06 08:02:36 EEST 2023 on pts/0
-bash-4.2$
psql
psql (11.17)
Type «help» for help.
postgres=#
После установки
Расположение файлов с настройками, например,
postgresql.conf
можно получить выполнив
-bash-4.2$ su — postgres -c «psql -c ‘SHOW config_file;'»
В PostgreSQL 9 результат будет таким:
Password:
config_file
————————————-
/var/lib/pgsql/data/postgresql.conf
(1 row)
В более современных версиях результат будет содеражть номер версии
—————————————-
/var/lib/pgsql/11/data/postgresql.conf
(1 row)
Изучим содержимое
/var/lib/pgsql/data
ll /var/lib/pgsql/data/
total 48
drwx——. 7 postgres postgres 67 Jun 9 22:54 base
drwx——. 2 postgres postgres 4096 Jun 9 23:19 global
drwx——. 2 postgres postgres 18 Jun 9 13:54 pg_clog
-rw——-. 1 postgres postgres 4371 Jun 10 01:23 pg_hba.conf
-rw——-. 1 postgres postgres 1636 Jun 9 13:54 pg_ident.conf
drwx——. 2 postgres postgres 58 Jun 10 00:00 pg_log
drwx——. 4 postgres postgres 36 Jun 9 13:54 pg_multixact
drwx——. 2 postgres postgres 18 Jun 9 14:14 pg_notify
drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_serial
drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_snapshots
drwx——. 2 postgres postgres 25 Jun 10 02:06 pg_stat_tmp
drwx——. 2 postgres postgres 18 Jun 9 13:54 pg_subtrans
drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_tblspc
drwx——. 2 postgres postgres 6 Jun 9 13:54 pg_twophase
-rw——-. 1 postgres postgres 4 Jun 9 13:54 PG_VERSION
drwx——. 3 postgres postgres 60 Jun 9 13:54 pg_xlog
-rw——-. 1 postgres postgres 19889 Jun 10 01:43 postgresql.conf
-rw——-. 1 postgres postgres 45 Jun 9 14:14 postmaster.opts
-rw——-. 1 postgres postgres 92 Jun 9 14:14 postmaster.pid
Подключение к БД
Чтобы получить доступ к базам данных можно воспользоваться стандартной консолью psql.
Windows:
Если Вы хотите подключиться из
bash в Windows
не забудьте добавить местоположение
psql.exe
(у меня это C:Program FilesPostgreSQL12bin) в PATH
Как это делается описано в статье
PATH
psql.exe -h localhost -p 5433 -U postgres
Linux:
sudo su — postgres
psql
psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1))
Type «help» for help.
Если БД на локальном хосте
psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME
Получить данные о подключении
conninfo
You are connected to database «postgres» as user «postgres» via socket in «/var/run/postgresql» at port «5432».
Список существующих БД
Список уже существующих на сервере баз данных можно получить командой
l
Name | Owner | Encoding | Collate | Ctype | Access privileges
—————+———-+———-+—————————-+—————————-+————————
urn.su | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
topbicyle.ru | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
(6 rows)
Обратите внимание на столбцы Encoding, Collate и Ctype. Знание кодировок может Вам пригодиться в будущем.
Создать базу данных
Создадим базу данных
heihei_ru_db
с кодировкой utf8
CREATE DATABASE «heihei_ru_db» WITH OWNER «postgres» ENCODING ‘UTF8’;
CREATE DATABASE
Создадим базу данных heihei с кодировкой utf8 и укажем значения для Collate, Ctype и Template
CREATE DATABASE «heihei» WITH OWNER «postgres» ENCODING
‘UTF8’ LC_COLLATE = ‘C’ LC_CTYPE = ‘C’ TEMPLATE = template0;
CREATE DATABASE
Проверим, что получилось
l
Name | Owner | Encoding | Collate | Ctype | Access privileges
—————+———-+———-+—————————-+—————————-+————————
heihei | postgres | UTF8 | C | C |
urn.su | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
topbicyle.ru | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
(7 rows)
Если я в
bash
сделаю
locale -a
То получу сразу четыре доступные кодировки
C
C.UTF-8
en_US.utf8
POSIX
Но создать БД, например, с en_US.utf8 у меня не получается
CREATE DATABASE «heihei» WITH OWNER «postgres» ENCODING
‘UTF8’ LC_COLLATE = ‘en_US.utf8’ LC_CTYPE = ‘en_US.utf8’ TEMPLATE = template0;
Приводит к ошибке
ERROR: invalid locale name: «en_US.UTF-8»
Если Вы знаете как решить эту проблему — отпишитесь в комментариях к статье.
UPD: Выполнил такую же команду в
Ubuntu
и база успешно создана
CREATE DATABASE «new_db» WITH OWNER «postgres» ENCODING ‘UTF8’ LC_COLLATE = ‘en_US.UTF-8’ LC_CTYPE = ‘en_US.UTF-8’ TEMPLATE = template0;
CREATE DATABASE
Удалить базу данных
Чтобы удалить базу данных воспользуйтесь командой
DROP DATABASE db_name;
DROP DATABASE
Проверить кодировки
Проверить кодировку сервера можно командой
SHOW SERVER_ENCODING;
server_encoding
——————
UTF8
(1 row)
Проверить кодировку клиента
SHOW CLIENT_ENCODING;
client_encoding
——————
WIN1252
(1 row)
Когда вы находитесь в интерактивном режиме PostgreSQL в консоле появляется префикс
db=>
Где db это название текущей базы данных
Показать адрес текущей директории
!
[andrei@localhost ~]$
Вернуться в PostgreSQL можно выполнив
exit
db=>
Зайти в БД
Чтобы начать работу с базой данных нужно знать её имя, например
пусть Вам нужна база даныых, которую назвали просто HeiHei_ru_DB
Воспользуйтесь командой
c HeiHei_ru_DB
You are now connected to database «HeiHei_ru_DB» as user «postgres».
Если вы работаете в
Linux
и база данных находится на том же хосте можно выполнить
psql -h 127.0.0.1 -d DATABASENAME -U DATABASEUSERNAME
Чтобы посмотреть список таблиц введите
dt
List of relations
Schema | Name | Type | Owner
———+———+——-+———-
public | person | table | postgres
(1 row)
Чтобы посмотреть всю таблицу person уже можно использовать стандартный
SELECT * FROM person;
Список активных подключений к БД
Изучить подключения к БД можно выполнив
SELECT * FROM pg_stat_activity WHERE datname = ‘ИМЯ_БД’;
datid | datname | pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_star
t | query_start | state_change | wait_event_type | wait_event | state | backend_xid | backend_xmin | query | backend_type
——-+———+——+———-+———+——————+————-+——————+————-+—————+———-
—+————-+—————+——————+————+——-+————-+—————+——-+—————
(0 rows)
Переименовать БД
ALTER DATABASE старое_имя RENAME TO новое_имя;
Подробности:
Список существующих БД можно получить командой l
l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
————+———-+———-+————-+————-+————————
db01 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
Если нужно переименовать БД db01 первым делом нужно выйти из неё.
Для этого можно зайти в другую БД, например, postgres.
Изучить подключения к БД можно выполнив
SELECT * FROM pg_stat_activity WHERE datname = ‘db01’;
datid | datname | pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_star
t | query_start | state_change | wait_event_type | wait_event | state | backend_xid | backend_xmin | query | backend_type
——-+———+——+———-+———+——————+————-+——————+————-+—————+———-
—+————-+—————+——————+————+——-+————-+—————+——-+—————
(0 rows)
Непосредственно переименование выполняется командой
ALTER DATABASE db01 RENAME TO db02;
ALTER DATABASE
l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
————+———-+———-+————-+————-+————————
db02 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
…
(4 rows)
Если к базе данных кто-то подключен. Например, вы сами из другого терминала
c db02
You are now connected to database «db02» as user «postgres».
postgres=# SELECT datname, pid, backend_start, state FROM pg_stat_activity WHERE datname = ‘db02’;
datname | pid | backend_start | state
———+——-+——————————-+——-
db02 | 21238 | 2023-02-06 08:02:36.503073+03 | idle
(1 row)
Все подключения можно закрыть выполнив
postgres=# SELECT pg_terminate_backend (pid) FROM pg_stat_activity WHERE datname = ‘db02’;
pg_terminate_backend
———————-
t
(1 row)
Достать значение из БД
Пример — запишем значение из базы данных в файл с помощью echo
echo $(psql -h localhost -d db_name -U db_user -c «SELECT host_certificate FROM hosts WHERE (addresses=‘192.168.56.200’);«) > raw_cert
Содержание базы данных
В предыдущем параграфе мы создали в базе данных heihei таблицу booking_sites
Убедимся в том, что скрипт отработал удачно
Перейдём в базу данных heihei и проверим создалась ли таблица
c heihei
You are now connected to database «heihei» as user «postgres».
heihei=# dt
List of relations
Schema | Name | Type | Owner
———+—————+——-+———-
public | booking_sites | table | postgres
(1 row)
Описание таблицы
Если таблица создана какое-то время назад. Вы могли уже забыть, какие конкретно столбцы она содержит.
Для описания таблицы используется команда d
d booking_sites
Table «public.booking_sites»
Column | Type | Collation | Nullable | Default
—————-+————————+————+———-+——————————————-
id | bigint | | not null | nextval(‘booking_sites_id_seq’::regclass)
company_name | character varying(50) | | not null |
origin_country | character varying(50) | | not null |
age | character varying(3) | | not null |
date_of_birth | date | | not null |
website_url | character varying(50) | | |
Indexes:
«booking_sites_pkey» PRIMARY KEY, btree (id)
UPDATE: Изменение значения
Изменим дату годности сертификата в таблице certificates
Изучим текущую ситуацию
aodb=> SELECT issuer, not_after FROM certificates WHERE (serial=’2402020070′);
issuer | not_after
———————————————————————————————+————————
CN=192.168.56.174,OU=Andrei CA 3bbce96c-b117-46l0-65a7-f3c04c9f591b | 2027-07-19 16:39:59+03
(1 row)
Обновим значение
aodb=> UPDATE certificates SET not_after=’2022-07-22 16:39:59+03′ WHERE (serial=’2402020070′);
UPDATE 1
Проверим результат
aodb=> SELECT issuer, not_after FROM certificates WHERE (serial=’2402020070263697801′);
issuer | not_after
———————————————————————————————+————————
CN=192.168.56.174,OU=Andrei CA 3bbce96c-b117-46l0-65a7-f3c04c9f591b | 2022-07-22 16:39:59+03
(1 row)
Изменение таблицы
Когда нужно обновить название столбца таблицы используем команду ALTER
Предположим полю website_url не хватает 50 символов. Увеличим длину до 60.
ALTER TABLE booking_sites ALTER column website_url TYPE VARCHAR(60);
Проверим изменилась ли таблица
d booking_sites
Table «public.booking_sites»
Column | Type | Collation | Nullable | Default
—————-+————————+————+———-+——————————————-
id | bigint | | not null | nextval(‘booking_sites_id_seq’::regclass)
company_name | character varying(50) | | not null |
origin_country | character varying(50) | | not null |
age | character varying(3) | | not null |
date_of_birth | date | | not null |
website_url | character varying(60) | | |
Indexes:
«booking_sites_pkey» PRIMARY KEY, btree (id)
Выйти из консоли
q
Узнать текущую схему
SELECT current_schema();
current_schema
—————-
public
(1 row)
Переменные окружения
$PGDATA — адрес директории data
echo $PGDATA
/var/lib/pgsql/data
Разрешить внешние подключения
Для PostgreSQL 9
vi /var/lib/pgsql/data/postgresql.conf
Для более современных версий PostgreSQL нужно указать директорию, например 11
vi /var/lib/pgsql/11/data/postgresql.conf
# — Connection Settings —
# listen_addresses = ‘localhost’ # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to ‘localhost’; use ‘*’ for all
# (change requires restart)
listen_addresses = ‘*’
port = 5432 # (change requires restart)
vi /var/lib/pgsql/data/pg_hba.conf
Или
vi /var/lib/pgsql/11/data/pg_hba.conf
host all all 0.0.0.0/0 md5
Включить SSL
openssl genrsa -des3 -out server.key 1024
openssl rsa -in server.key -out server.key
chmod 400 server.key
chown postgres.postgres server.key
openssl req -new -key server.key -days 3650 -out server.crt -x509
cp server.crt root.crt
vi /var/lib/pgsql/11/data/postgresql.conf
# — SSL —
ssl = on
#ssl_ca_file = »
ssl_cert_file = ‘/var/lib/pgsql/11/data/server.crt’
#ssl_crl_file = »
ssl_key_file = ‘/var/lib/pgsql/11/data/server.key’
PostgreSQL | |
Основы | |
Установка | |
postgresql.conf: Конфигурационный файл | |
Таблицы | |
Пользователи | |
SELECT | |
WHERE | |
bash скрипты для Postgres | |
Репликация master slave | |
Write Ahead Log | |
recovery.conf | |
pg_hba.conf | |
Help | |
Ошибки |
Инструкция по установке PostgreSQL и созданию демонстрационной базы данных для самостоятельного запуска запросов из курса
Если вы хотите не просто смотреть видео курса «Основы SQL», но и самостоятельно экспериментировать с SQL запросами и видеть результаты их выполнения на живой базе данных, то можете установить бесплатную систему управления базами данных PostgreSQL и создать в ней демонстрационную базу с данными, которые показаны в видео. Эта статья содержит подробные инструкции по установке и настройке.
Установка PostgreSQL
В учебном курсе «Основы SQL» для демонстрации работы SQL используется PostgreSQL. Сейчас это самая популярная из бесплатных систем управления базами данных. Все SQL запросы в курсе проверены на работоспособность именно в PostgreSQL. Однако большая часть запросов использует синтаксис стандарта ANSI SQL, поэтому они будут работать и в других системах, включая MySQL, Microsoft SQL Server и Oracle. Вы можете использовать любую систему управления базами данных, которая вам нравится, но я рекомендую PostgreSQL.
1. Загрузите PostgreSQL для вашей операционной системы на странице Downloads официального сайта. Я устанавливал на Windows, если вы используете другую операционную систему, то выбирайте соответствующие ссылки для загрузки. Примеры в курсе проверены на PostgreSQL 13, поэтому рекомендую устанавливать именно эту версию. Однако на предыдущих версиях, начиная с PosgreSQL 10, также все должно работать.
Инсталлятор для Windows и Mac OS загружается с сайта компании EDB, которая предоставляет платную поддержку для PostgreSQL. Однако PostgreSQL, которую вы установите с помощью этого инсталлятора от EDB, будет полностью бесплатной.
2. Запустите скачанный инсталлятор PostgreSQL.
Если вы устанавливаете PostgreSQL только для использования в курсе «Основы SQL», то можете оставить почти все настройки по умолчанию, кроме локали, для которой нужно выбрать «Russian, Russia» (русский язык в стране Россия).
Не забудьте запомнить или записать пароль пользователя postgres, он вам понадобится для подключения к базе и выполнения запросов!
После завершения установки инсталлятор предложит вам запустить Stack Builder для установки дополнительных утилит и компонентов. Этого можно не делать, просто снимите галочку в пункте «Stack Builder…» и нажмите кнопку «Finish».
На этом установка PostrgreSQL завершена.
Запуск и настройка pgAdmin
В курсе мы будем работать с PostrgreSQL через Web-интерфейс pgAdmin. Несмотря на Admin в названии, этот инструмент подходит не только администраторам, но и разработчикам.
pgAdmin устанавливается вместе с PostgreSQL. В Windows запустить pgAdmin можно в меню Пуск.
При первом запуске pgAdmin просит задать Master Password. Он будет использоваться для безопасного сохранения паролей к базам данных PosgreSQL, с которыми вы работаете через pgAdmin. Master Password можно выбрать любой, главное, запомните или запишите его.
Для удобства можно переключить интерфейс pgAdmin на русский язык. Для этого выберите меню File->Preferences, в появившемся окне в меню слева выберите Miscellaneous -> User Language, а затем в поле User Language справа «Russian».
Для вступления в силу настроек языка интерфейса нужно нажать кнопку «Save» и перезапустить pgAdmin.
После перезапуска выбирайте в левом меню Servers -> PostgreSQL, после чего pgAdmin запросит пароль пользователя postgres, который вы задали в процессе установки PostgreSQL. Введите этот пароль (можете поставить галочку «Save Password» чтобы pgAdmin запомнил пароль) и вы подключитесь к базе PostgreSQL.
Список существующих на сервере баз данных показывается в левом окне pgAdmin. Нас интересует база данных postgres, схема public и таблицы в ней. pgAdmin показывает много другой информации, не пугайтесь, если вы пока не понимаете, что это такое. Многое мы разберем в курсе, но преимущественно все это нужно только администраторам базы данных.
Пока в нашей базе нет никаких таблиц. Давайте создадим демонстрационные таблицы, которые используются в курсе, и заполним их данными.
Создание демонстрационной базы
1. Скачайте файл с демонстрационной базой данных курса «Основы SQL». Файл называется «sql_foundation» и имеет расширение .sql.
Файл содержит набор операторов SQL, которые создают используемые в курсе таблицы и заполняют их данными. Если вы пока не понимаете, что именно делают эти операторы, не расстраивайтесь. В курсе мы подробно рассмотрим работу каждого оператора и все будет понятно. На начальном этапе изучения курса необходимо просто запустить этот файл в pgAdmin.
2. Загрузите скачанный файл в pgAdmin. Для этого в меню pgAdmin выберите Инструменты->Запросник (в английском вариант Query Tool). В панели инструментов Запросника выберите кнопку открытия файла и в появившемся окне выберите путь к загруженному sql файлу с демонстрационной базой курса.
3. Запустите загруженный файл в pgAgmin. Для этого нажмите на кнопку запуска в панели инструментов Запросника или на клавишу F5.
4. Проверьте правильность выполнения запроса. В нижней части экрана pgAdmin, на закладке «Сообщения» должны появиться результаты выполнения.
Основное, на что нужно обратить внимание — это сообщение «Запрос завершен успешно». Если такое сообщение появилось, значит все хорошо.
Если вы запускаете файл создания демонстрационной базы курса первый раз, то будет выведено несколько Замечаний, что таблицы не существуют. Их можно игнорировать.
Также в левой части интерфейса pgAdmin появится информация о созданных таблицах.
Итак, демонстрационные таблицы для курса «Основы SQL» созданы и заполнены данными, можно запускать SQL запросы.
Запуск SQL запросов в pgAdmin
В pgAdmin для запуска SQL запросов используется уже знакомый нам инструмент Запросник. Давайте откроем окно Запросника и напишем самый первый SQL запрос из видео про Оператор SELECT.
Запрос пишется в среднем окне, закладка Query Editor. Для запуска запроса нажимаем F5 или кнопку Execute в панели инструментов Запросника.
Полученные в ходе выполнения запроса данные показываются в нижней части окна, на закладке «Результат».
Использование SQL Shell (psql)
Если вы предпочитаете работать в командной строке, а не в громоздких приложениях типа pgAdmin, то можете использовать консольную утилиту для работы с PosgreSQL: SQL Shell (ранее она называлась psql).
SQL Shell, также как и pgAdmin, устанавливается совместно с PostgreSQL. В Windows запустить SQL Shell можно через меню Пуск.
После запуска SQL Shell задаст ряд вопросов о параметрах подключения к PostgreSQL, можно оставить все значения по умолчанию (если вы не меняли настройки при установке). После этого введите пароль пользователя postgres и можете начинать работать с базой данных.
Если вам не повезло, то в Windows SQL Shell запустится с неправильной кодировкой для русского языка, будет выдавать предупреждение и некоторые русские буквы будут выводиться неправильно.
Чтобы решить эту проблему, нужно прописать правильную кодировку в файл для запуска SQL Shell. В моем случае файл называется «C:Program FilesPostgreSQL13scriptsrunpsql.bat». В этот файл нужно добавить строку:
chcp 1251
После добавления строки с установкой правильной кодировки файл runpsql. bat стал выглядеть следующим образом.
Сохраняем файл runpsql. bat, перезапускаем SQL Shell, после этого проблем с русской кодировкой быть не должно.
Для создания демонстрационной базы курса в SQL Shell выполните следующую команду:
i 'C:/путь/к/файлу/sql_foundation.sql'
i означает import — загрузка файла sql в базу данных.
Обратите, пожалуйста, внимание:
1. Путь к файлу sql_foundation.sql нужно указывать в одиночных кавычках. Если будете использовать двойные кавычки, то не заработает.
2. В пути используются прямые слеши (/), как в Linux/Unix, несмотря на то, что мы работаем под Windows. Если писать обратные слеши (), как это принято в Windows, то будет выдаваться ошибка «Permission denied». Не очень информативное поведение SQL Shel.
Запросы в SQL Shell можно писать прямо в командной строке.
Запрос в SQL Shell может занимать несколько строк, как в примере на рисунке. Запрос запускается после ввода ; (точка с запятой) или команды g.
Результаты выполнения запроса показываются сразу же после него.
Полезная функция SQL Shell — история команд. Если нажимать стрелки вверх или вниз, то можно увидеть, какие команды были запущены ранее и повторить интересующую вас команду.
Итоги
В этой статье вы узнали, как установить PostgreSQL и как создать в нем демонстрационную базу для курса «Основы SQL». Также вы настроили и научились использовать два инструмента работы с PostgreSQL: pgAdmin и SQL Shell. Не обязательно использовать оба, выбирайте тот, который вам больше нравится: pgAdmin с Web-интерфейсом или командную строку SQL Shell.
В процессе экспериментов с SQL запросами в курсе вы можете случайно повредить созданную базу. В этом нет ничего страшного, базу данных можно легко пересоздать повторно запустив sql файл с операторами по созданию базы. При этом все имеющиеся таблицы будут удалены, заново созданы и заполнены данными. Все изменения, которые вы вносили, будут потеряны.
Полезные ссылки
Приветствую Вас на сайте Info-Comp.ru! В этом материале мы с Вами подробно рассмотрим процесс установки PostgreSQL 12 на операционную систему Windows 10. Кроме этого мы также установим и настроим pgAdmin 4 – это стандартный и бесплатный графический инструмент управления СУБД PostgreSQL, который мы можем использовать для написания SQL запросов, разработки процедур, функций, а также для администрирования PostgreSQL.
Содержание
- Что такое PostgreSQL?
- Системные требования для установки PostgreSQL 12 на Windows
- Установка PostgreSQL 12 и pgAdmin 4 на Windows 10
- Шаг 1 – Скачивание установщика для Windows
- Шаг 2 – Запуск установщика PostgreSQL
- Шаг 3 – Указываем каталог для установки PostgreSQL 12
- Шаг 4 – Выбираем компоненты для установки
- Шаг 5 – Указываем каталог для хранения файлов баз данных
- Шаг 6 – Задаем пароль для системного пользователя postgres
- Шаг 7 – Указываем порт для экземпляра PostgreSQL
- Шаг 8 – Указываем кодировку данных в базе
- Шаг 9 – Проверка параметров установки PostgreSQL
- Шаг 10 – Запуск процесса установки
- Шаг 11 – Завершение установки
- Запуск и настройка pgAdmin 4
- Подключение к серверу PostgreSQL 12
- Установка русского языка в pgAdmin 4
- Пример написания SQL запроса в Query Tool (Запросник)
- Видео-инструкция – Установка PostgreSQL 12 и pgAdmin 4 на Windows 10
PostgreSQL — это бесплатная объектно-реляционная система управления базами данных (СУБД). PostgreSQL реализована для многих операционных систем, например, таких как: BSD, Linux, macOS, Solaris и Windows.
В PostgreSQL используется язык PL/pgSQL.
Заметка!
- Что такое СУБД
- Что такое SQL
- Что такое T-SQL
PL/pgSQL – это процедурное расширение языка SQL, разработанное и используемое в СУБД PostgreSQL.
Язык PL/pgSQL предназначен для создания функций, триггеров, он добавляет управляющие структуры к языку SQL, и он помогает нам выполнять сложные вычисления.
PostgreSQL — одна из самых популярных систем управления базами данных (ТОП 5 популярных систем управления базами данных).
На момент написания статьи самая актуальная версия PostgreSQL 12, именно ее мы и будем устанавливать.
Системные требования для установки PostgreSQL 12 на Windows
PostgreSQL 12 можно установить не на все версии Windows, в частности официально поддерживаются следующие версии и только 64 битные:
- Windows Server 2012 R2;
- Windows Server 2016;
- Windows Server 2019.
Как видим, в официальном перечне нет Windows 10, однако установка на данную систему проходит без проблем, как и последующее функционирование PostgreSQL.
Кроме этого есть и другие требования:
- Процессор как минимум с частотой 1 гигагерц;
- 2 гигабайта оперативной памяти;
- Как минимум 512 мегабайт свободного места на диске (рекомендуется больше для установки дополнительных компонентов);
- Также рекомендовано, чтобы все обновления операционной системы Windows были установлены.
Установка PostgreSQL 12 и pgAdmin 4 на Windows 10
Итак, давайте перейдем к процессу установки, и рассмотрим все шаги, которые необходимо выполнить, чтобы установить PostgreSQL 12 и pgAdmin 4 на Windows 10.
Шаг 1 – Скачивание установщика для Windows
Как было уже отмечено, PostgreSQL реализован для многих платформ, но, так как мы будем устанавливать PostgreSQL на Windows, нам, соответственно, нужен установщик под Windows. Скачать данный дистрибутив можно, конечно же, с официального сайта PostgreSQL, вот страница загрузки — https://www.postgresql.org/download/windows/
После перехода на страницу необходимо нажимать на ссылку «Download the installer», в результате Вас перенесёт на сайт компании EnterpriseDB, которая и подготавливает графические дистрибутивы PostgreSQL для многих платформ, в том числе и для Windows, поэтому можете сразу переходить на этот сайт, вот ссылка на страницу загрузки https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
Здесь Вам необходимо выбрать версию PostgreSQL и платформу, в нашем случае выбираем PostgreSQL 12 и Windows x86-64.
В итоге должен загрузиться файл postgresql-12.2-2-windows-x64.exe размером примерно 191 мегабайт (на момент написания статьи доступна версия 12.2-2).
Шаг 2 – Запуск установщика PostgreSQL
Теперь, чтобы начать установку, необходимо запустить скаченный файл (установка PostgreSQL требует прав администратора).
После запуска откроется окно приветствия, нажимаем «Next».
Заметка! Установка и настройка PostgreSQL 12 на Debian 10.
Шаг 3 – Указываем каталог для установки PostgreSQL 12
Далее, в случае необходимости мы можем указать путь к каталогу, в который мы хотим установить PostgreSQL 12, однако можно оставить и по умолчанию.
Нажимаем «Next».
Шаг 4 – Выбираем компоненты для установки
Затем выбираем компоненты, которые нам необходимо установить, для этого оставляем галочки напротив нужных нам компонентов, а обязательно нам нужны PostgreSQL Server и pgAdmin 4. Утилиты командной строки и Stack Builder устанавливайте по собственному желанию, т.е. их можно и не устанавливать.
Нажимаем «Next».
Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.
Шаг 5 – Указываем каталог для хранения файлов баз данных
На этом шаге нам необходимо указать каталог, в котором по умолчанию будут располагаться файлы баз данных. В случае тестовой установки, например, для обучения, можно оставить и по умолчанию, однако «боевые» базы данных всегда должны храниться в отдельном месте, поэтому, если сервер PostgreSQL планируется использовать для каких-то других целей, лучше указать отдельный диск.
Нажимаем «Next».
Шаг 6 – Задаем пароль для системного пользователя postgres
Далее нам нужно задать пароль для пользователя postgres – это администратор PostgreSQL Server с максимальными правами.
Вводим и подтверждаем пароль. Нажимаем «Next».
Заметка! Как создать таблицу в PostgreSQL с помощью pgAdmin 4.
Шаг 7 – Указываем порт для экземпляра PostgreSQL
На данном шаге в случае необходимости мы можем изменить порт, на котором будет работать PostgreSQL Server, если такой необходимости у Вас нет, то оставляйте по умолчанию.
Нажимаем «Next».
Шаг 8 – Указываем кодировку данных в базе
Затем мы можем указать конкретную кодировку данных в базе, для этого необходимо выбрать из выпадающего списка нужную Locale.
Однако можно оставить и по умолчанию, жмем «Next».
Шаг 9 – Проверка параметров установки PostgreSQL
Все готово к установке, на данном шаге проверяем введенные нами ранее параметры и, если все правильно, т.е. все то, что мы и вводили, нажимаем «Next».
Шаг 10 – Запуск процесса установки
Далее появится еще одно дополнительное окно, в котором мы должны нажать «Next», чтобы запустить процесс установки PostgreSQL на компьютер.
Установка началась, она продлится буквально минуту.
Шаг 11 – Завершение установки
Когда отобразится окно с сообщением «Completing the PostgreSQL Setup Wizard», установка PostgreSQL 12, pgAdmin 4 и других компонентов будет завершена.
Также в этом окне нам предложат запустить Stack Builder для загрузки и установки дополнительных компонентов, если Вам это не нужно, то снимайте галочку «Lanch Stack Builder at exit?».
Нажимаем «Finish».
Заметка! Как перенести базу данных PostgreSQL на другой сервер с помощью pgAdmin 4.
Запуск и настройка pgAdmin 4
PostgreSQL 12 и pgAdmin 4 мы установили, теперь давайте запустим pgAdmin 4, подключимся к серверу и настроим рабочую среду pgAdmin.
Чтобы запустить pgAdmin 4, зайдите в меню пуск, найдите пункт PostgreSQL 12, а в нем pgAdmin 4.
Подключение к серверу PostgreSQL 12
pgAdmin 4 имеет веб интерфейс, поэтому в результате у Вас должен запуститься браузер, а в нем открыться приложение pgAdmin 4.
При первом запуске pgAdmin 4 появится окно «Set Master Password», в котором мы должны задать «мастер-пароль», это можно и не делать, однако если мы будем сохранять пароль пользователя (галочка «Сохранить пароль»), например, для того чтобы каждый раз при подключении не вводить его, то настоятельно рекомендуется придумать и указать здесь дополнительный пароль, это делается один раз.
Вводим и нажимаем «ОК».
Чтобы подключиться к только что установленному локальному серверу PostgreSQL в обозревателе серверов, щелкаем по пункту «PostgreSQL 12».
В итоге запустится окно «Connect to Server», в котором Вам нужно ввести пароль системного пользователя postgres, т.е. это тот пароль, который Вы придумали, когда устанавливали PostgreSQL. Вводим пароль, ставим галочку «Save Password», для того чтобы сохранить пароль и каждый раз не вводить его (благодаря функционалу «мастер-пароля», все сохраненные таким образом пароли будут дополнительно шифроваться).
Нажимаем «OK».
В результате Вы подключитесь к локальному серверу PostgreSQL 12 и увидите все объекты, которые расположены на данном сервере.
Заметка! Как создать базу данных в PostgreSQL с помощью pgAdmin 4.
Установка русского языка в pgAdmin 4
Как видите, по умолчанию интерфейс pgAdmin 4 на английском языке, если Вас это не устраивает, Вы можете очень просто изменить язык на тот, который Вам нужен. pgAdmin 4 поддерживает много языков, в том числе и русский.
Для того чтобы изменить язык pgAdmin 4, необходимо зайти в меню «File -> Preferences».
Затем найти пункт «User Languages», и в соответствующем поле выбрать значение «Russian». Для сохранения настроек нажимаем «Save», после этого перезапускаем pgAdmin 4 или просто обновляем страницу в браузере.
В результате pgAdmin 4 будет русифицирован.
Заметка! Как создать составной тип данных в PostgreSQL.
Пример написания SQL запроса в Query Tool (Запросник)
Для того чтобы убедиться в том, что наш сервер PostgreSQL работает, давайте напишем простой запрос SELECT, который покажет нам версию сервера PostgreSQL.
Для написания SQL запросов в pgAdmin 4 используется инструмент Query Tool или на русском «Запросник», его можно запустить с помощью иконки на панели или из меню «Инструменты».
После того как Вы откроете Query Tool, напишите
SELECT VERSION()
Этот запрос показывает версию PostgreSQL.
Как видите, все работает!
Видео-инструкция – Установка PostgreSQL 12 и pgAdmin 4 на Windows 10
На сегодня это все, надеюсь, материал был Вам полезен, удачи!