Начало работы

Создание базы данных

Первый способ проверить, есть ли у вас доступ к серверу баз данных, — попытаться создать базу данных. Работающий сервер QHB способен управлять многими базами данных. Как правило, для каждого проекта или пользователя используется отдельная база.

Возможно, ваш администратор уже создал для вас базу данных. В таком случае этот тап можно пропустить и перейти к следующему разделу.

Чтобы создать новую базу данных, в этом примере названную mydb, используется следующая команда:

$ createdb mydb -h localhost

Если в ответ на это не появляется никаких сообщений, значит, этот этап был успешным и можно пропустить оставшуюся часть этого раздела.

Если вы видите сообщение вида:

createdb: command not found
-- команда не найдена

значит, QHB не была установлена должным образом. Либо она вообще не была установлена, либо не была включена в путь поиска вашей оболочки. Тогда попробуйте вызвать команду по абсолютному пути:

$ /usr/local/qhb/bin/createdb mydb

Ваш путь может быть другим. Обратитесь к вашему администратору или ознакомьтесь с инструкциями по установке, чтобы исправить ситуацию.

Возможен и другой ответ:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
-- ошибка: не удалось подключиться к серверу через сокет "/tmp/.s.PGSQL.5432": Данный файл или каталог не существует
        Is the server running locally and accepting connections on that socket?
        -- Этот сервер действительно работает локально и принимает соединения через этот сокет?

Это означает, что сервер не был запущен или не был запущен там, где утилита createdb собиралась к нему подключиться. Опять же, проверьте инструкции по установке или проконсультируйтесь с администратором.

Возможен и другой ответ:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "joe" does not exist
-- ошибка: не удалось подключиться к серверу через сокет "/tmp/.s.PGSQL.5432": ФАТАЛЬНО:  роль "joe" не существует

где упоминается ваше имя пользователя. Это произойдет, если администратор не создал для вас учетную запись пользователя QHB. (Учетные записи пользователей QHB отличаются от учетных записей пользователей операционной системы). Если вы администратор, обратитесь к главе Роли в базе данных за помощью в создании учетных записей. Вам нужно будет стать пользователем операционной системы, под которым была установлена QHB (обычно qhb), чтобы создать первую учетную запись пользователя. Возможно также, что вам было присвоено имя пользователя QHB, отличающееся от имени пользователя вашей операционной системы; в этом случае следует использовать ключ -U или установить переменную среды PGUSER, чтобы указать свое имя пользователя в QHB.

Если у вас есть учетная запись пользователя, но у нее нет прав, необходимых для создания базы данных, вы увидите следующее:

createdb: database creation failed: ERROR:  permission denied to create database
-- ошибка: создать базу данных не удалось: ОШИБКА:  нет прав на создание базы данных

Не каждый пользователь имеет право создавать новые базы данных. Если QHB отказывается создавать для вас базы данных, ваш администратор должен предоставить вам разрешение на их создание. В таком случае обратитесь к нему. Если вы установили QHB самостоятельно, то для целей данного руководства следует войти в систему под учетной записью пользователя, под которой вы запустили сервер1.

Кроме того, можно создавать базы данных с другими именами. QHB позволяет создавать любое количество баз данных. Имена баз данных должны начинаться с буквенного символа и иметь длину не более 63 байт. Удобный выбор — создать базу данных с вашим текущим именем пользователя. Многие программы предполагают такое имя по умолчанию, что может помочь вам сэкономить время на ввод текста. Чтобы создать эту базу данных, просто напишите:

$ createdb

Если вы больше не хотите использовать свою базу данных, ее можно удалить. Например, если вы являетесь владельцем (создателем) базы данных mydb, ее можно уничтожить, с помощью следующей команды:

$ dropdb mydb

(Для этой команды имя базы данных не совпадает по умолчанию с именем учетной записи пользователя. Вы всегда должны указывать его.) Это действие физически удаляет все файлы, связанные с базой данных, и не может быть отменено, так что эту операцию следует выполнять крайне продуманно.

Больше информации по командам createdb и dropdb можно найти в соответствующих разделах.


1

В качестве объяснения того, почему это работает: имена пользователей QHB отделены от учетных записей пользователей операционной системы. Подключаясь к базе данных, вы можете выбрать, под каким именем пользователя QHB подключаться; если вы этого не сделаете, по умолчанию будет использоваться имя вашей текущей учетной записи в операционной системе. Таким образом, всегда будет учетная запись пользователя QHB, имя которой совпадает с именем пользователя операционной системы, запустившего сервер, причем этот пользователь всегда имеет разрешение на создание баз данных. Вместо входа в систему под этим пользователем можно везде указать параметр -U, чтобы передать имя пользователя QHB для подключения.



Доступ к базе данных

Создав базу данных, вы можете получить к ней доступ одним из следующих способов:

  • С помощью интерактивного терминала QHB, называемого psql, который позволяет в интерактивном режиме вводить, редактировать и выполнять команды SQL.

  • С использованием существующего графического инструмента внешнего интерфейса, например pgAdmin, DBeaver или офисного пакета с поддержкой ODBC или JDBC. Эти возможности не рассматриваются в этом руководстве.

  • Написав собственное приложение с использованием одной из нескольких доступных языковых привязок.

Испытать примеры из этого руководства можно, запустив psql. Это можно сделать для базы данных mydb, набрав команду:

$ psql -h localhost -d mydb

Если вы не укажете имя базы данных, по умолчанию будет использоваться имя вашей учетной записи. Мы уже сталкивались с этой схемой в предыдущем разделе при работе с createdb.

Внутри psql вы увидите следующее сообщение:

psql - Interactive terminal qhb (1.2.0)
Enter "\help" in order to get help

mydb(username)=#

Это будет означать, что вы являетесь суперпользователем базы данных, что наиболее вероятно, если вы сами установили экземпляр QHB. Суперпользователь имеет неограниченный доступ к базе данных; впрочем, для целей данного руководства это не имеет значения.

Если вы столкнулись с проблемами при запуске psql, вернитесь к предыдущему разделу. Диагностики createdb и psql схожи, и если первая сработала, то вторая тоже должна сработать.

Последняя строка, выведенная psql, является приглашением и показывает, что psql ожидает ввод, то есть вы можете вводить в рабочее пространство запросы SQL. Попробуйте эти команды:

mydb(username)=# select version();
version   
----------
QHB 1.2.0
(1 row)

mydb(username)=# SELECT current_date;
    date
------------
 2020-10-07

mydb(username)=# SELECT 2 + 2;
 ?column?
----------
4
(1 row)

Программа psql имеет ряд внутренних команд, которые не являются командами SQL. Они начинаются с символа обратного слэша «\». Например, можно получить справку по синтаксису различных команд SQL в QHB, написав:

mydb(username)=# \h

Чтобы выйти из psql, напишите:

mydb(username)=# \q

и psql завершит свою работу и вернет вас в командную оболочку. (Чтобы узнать больше о внутренних командах, введите \? в приглашении psql.) Все возможности psql освещаются в соответствующем разделе. В этом руководстве мы не будем использовать эти функциональные возможности явно, но вы можете самостоятельно применять их по мере необходимости.