ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

8 примеров установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей

8 Примера установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей

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

Это одна из самых надежных, защищенных, многофункциональных и мощных реляционных баз данной системы.

Самое главное, что PostgreSQL хорошо известна своей способностью обрабатывать тяжелую нагрузку, и обеспечивают высокую производительность. Это поддерживает почти все функции, которые вы когда-нибудь потребуется от системы РСУБД.

Если вы новичок в PostgreSQL, этот учебник даст вам отличный рывок.

Рассматриваются в данном руководстве следующим образом:

  1. Как установить PostgreSQL
  2. Инициализировать БД с помощью initdb
  3. Создание новой базы данных Postgres
  4. Создание новой таблицы
  5. Все объекты (включая таблицы)
  6. Обзор деталей таблицы (Описание таблиц PostgreSQL)
  7. Вставка записи в таблицу
  8. Просмотр записей таблицы (выборка из таблицы)

1. Установка PostgreSQL

Есть два способа, с помощью которых можно установить базу данных PostgreSQL:

Для того, чтобы установить его с помощью yum, используйте следующую команду:

yum install postgresql-server

 

Для того, чтобы установить его из исходного кода, выполните следующие действия: 9 шагов по установке и настройке PostgreSQL из исходных кодов на Linux.

 

2. Инициализировать базу данных с помощью initdb

Далее, вы должны инициализировать базу данных PostgreSQL с помощью initdb и запустить сервер PostgreSQL.

Если вы находитесь на CentOS 6 (или RedHat), используйте следующее:

service postgresql initdb
service postgresql start

 

Если вы находитесь на CentOS 7 (или RHEL 7), Fedora 23+ выполните следующие действия:

postgresql-setup initdb
systemctl start postgresql.service

 

При инициализации базы данных с помощью команды itdb, это создаст новый кластер PostgreSQL db. Кластер в этом контексте не что иное, как куча баз данных PostgreSQL, управляемых на одном узле одним сервером PostgreSQL.

Initdb будет делать следующее:

3. Создайте новую базу данных Postgres

Для того, чтобы создать новую базу данных Postgres, используйте команду createdb, как показано ниже.

Ниже команда создаст новую пользовательскую базу данных PostgreSQL под названием “andreyex”.

# createdb andreyex

 

Если команда createdb нет в вашей системе, или что-то пошло не так во время установки. Вы могли бы быть иметь в своей среде PATH.

При установке с помощью yum, эта команда будет в /usr/pgsql-X.Y/bin/createdb (где, XY это номер версии), с соответствующей ссылкой на /usr/bin. Таким образом, вы не будете иметь проблему здесь.

Но, если вы установили из исходных текстов, то вы можете убедиться, что каталог /usr/local/pgsql/bin/ находиться в вашей переменной PATH.

Кроме того, убедитесь, что вы создаете базу данных от пользователя, обладающего правами на создание базы данных. Если вы новичок в понятиях пользователей/роли в PostgreSQL, на данный момент, идти вперед и войдите в систему с правами администратора (при условии, что вы установили POSTGRESQL как root), и выполните команду createdb оттуда.

В следующем примере, мы создадим базу данных из Linux пользователя под названием “Maxim”, который не имеет соответствующего привилегию, чтобы создать новую базу данных.

$ createdb andreyex
createdb: could not connect to database template1: FATAL:  role "Maxim" does not exist

 

И, наконец, когда вы создаете новую базу данных, и если ваш сервер PostgreSQL не запущен, то вы получите следующее сообщение об ошибке “could not connect to database template1”.

# createdb andreyex
createdb: could not connect to database template1: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

 

Примечание: Если вы создали базу данных по ошибке, вы можете удалить базу данных с помощью команды “dropdb”, как показано ниже.

# dropdb andreyex

4. Создание новой таблицы

После того, как вы создали новую базу данных, то настало время, чтобы создать новую таблицу в соответствии с этой базой данных.

Во-первых, вы должны подключиться к вновь созданной базе данных “andreyex”, используя команду psql, как показано ниже.

$ psql andreyex
psql (9.6.1)
Type "help" for help.

andreyex=#

 

 

Для этого примера, давайте создадим таблицу сотрудников со следующими 4 колонками:

CREATE TABLE employee (
   id       SERIAL,       --emp id; auto-increment when empty
   name     varchar(20),  --emp name
   dept     varchar(10),  --department
   salary   int           --employee's salary
);

 

При выполнении указанной выше команды в строке POSTGRESQL, вы увидите следующее. Если таблица успешно создана, она будет отображать “CREATE TABLE” в качестве сообщения, как показано ниже.

andreyex=# CREATE TABLE employee (
andreyex(#    id       SERIAL,       --emp id; auto-increment when empty
andreyex(#    name     varchar(20),  --emp name
andreyex(#    dept     varchar(10),  --department
andreyex(#    salary   int           --employee's salary
andreyex(# );
CREATE TABLE
andreyex=#

 

Несколько вещей, которые нужно иметь в виду:

Ниже приведены некоторые другие данные, которые поддерживается базой данных PostgreSQL:

5. Просмотреть все объекты (включая таблицы)

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

Для этого используйте опцию \d, как показано ниже.

d” в этом контексте является дисплей. Это будет список доступных всех таблиц, представлений и последовательностей.

Как видно из следующего вывода, мы видим вновь созданную таблицу сотрудников.

andreyex-# \d
               List of relations
 Schema |      Name       |   Type   |  Owner   
--------+-----------------+----------+----------
 public | employee        | table    | postgres
 public | employee_id_seq | sequence | postgres
(2 rows)

 

Помимо таблицы сотрудников, мы также видим последовательность, которую мы не создавали. Это происходит потому, что мы определили, как тип данных SERIAL для идентификатора поля Postgres автоматически создал эту employee_id_seq, что он будет в свою очередь, использовать его, когда вы не укажете значение во время вставки в поле номер сотрудника.

Кроме того, используйте команду “\d+“, которая будет отображать несколько дополнительных столбцов об объектах; размер и описание, как показано ниже.

andreyex-# \d+
                             List of relations
 Schema |      Name       |   Type   |  Owner   |    Size    | Description 
--------+-----------------+----------+----------+------------+-------------
 public | employee        | table    | postgres | 0 bytes    | 
 public | employee_id_seq | sequence | postgres | 8192 bytes | 
(2 rows)

 

Размер нашей таблицы сотрудников составляет “0 байт“, так как мы еще не вставили новые записи.

6. Просмотр деталей таблицы (Описание таблицы PostgreSQL)

Если вы использовали другую базу данных, как Oracle или MySQL, и т.д., вы знакомы с командой “desc”, которая будет отображать все подробности о таблицах, включая колонки и ее типы данных.

В PostgreSQL эквивалент команды “desc” является “\d“, а затем имя таблицы.

d” в этом контексте является “описание”.

Как вы видите ниже, это описывает детали таблицы сотрудников.

andreyex-# \d employee
                                Table "public.employee"
 Column |         Type          |                       Modifiers                       
--------+-----------------------+-------------------------------------------------------
 id     | integer               | not null default nextval('employee_id_seq'::regclass)
 name   | character varying(20) | 
 dept   | character varying(10) | 
 salary | integer               |

 

При использовании “\d+“, как показано ниже, это будет отображать дополнительную информацию о столбцах таблицы; хранилище, статистика цель и описание.

andreyex-# \d+ employee
                                                    Table "public.employee"
 Column |         Type          |                       Modifiers                       | Storage  | Stats target | Description 
--------+-----------------------+-------------------------------------------------------+----------+--------------+-------------
 id     | integer               | not null default nextval('employee_id_seq'::regclass) | plain    |              | 
 name   | character varying(20) |                                                       | extended |              | 
 dept   | character varying(10) |                                                       | extended |              | 
 salary | integer               |                                                       | plain    |              |

7. Вставка записи в таблицу

Следующий шаг должен вставить некоторые записи сотрудников в таблицу сотрудников.

Синтаксис точно такое же, как и любой стандартный синтаксис SQL вставки.

Далее будет вставить 5 записей в таблицу сотрудников с заданными значениями для всех полей.

INSERT INTO employee VALUES (100,'Thomas','Sales',5500);
INSERT INTO employee VALUES (200,'Maxim','Technology',5600);
INSERT INTO employee VALUES (300,'Artem','Technology',7600);
INSERT INTO employee VALUES (400,'Andrey','Marketing',9200);
INSERT INTO employee VALUES (500,'Vasil','Technology',6100);

 

Порядок значений должен соответствовать порядку имен столбцов, которые вы видите в выводе команды “\d employee”, то есть в том же порядке, как вы создали таблицу.

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

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

andreyex=# INSERT INTO employee (name,dept) VALUES ('Oleg', 'Accounting');
INSERT 0 1

 

Если команда вставки выполнена успешно, то появится сообщение “INSERT 0 1”, как показано выше.

8. Просмотр записей таблицы (выборка из таблицы)

Так же, как и любая команда SELECT в sql, серверу позволяют только просматривать конкретные столбцы таблицы, указав имена столбцов, как показано ниже.

andreyex=# SELECT name, dept FROM employee;
  name  |    dept    
--------+------------
 Thomas | Sales
 Maxim  | Technology
 Artem  | Technology
 Andrey | Marketing
 Vasil  | Technology
 Oleg   | Accounting
(6 rows)

 

SELECT * будет отображать все столбцы из указанной таблицы, как показано ниже.

andreyex=# SELECT * FROM employee;
 id  |  name  |    dept    | salary 
-----+--------+------------+--------
 100 | Thomas | Sales      |   5000
 200 | Maxim  | Technology |   5500
 300 | Artem  | Technology |   7000
 400 | Andrey | Marketing  |   9500
 500 | Vasil  | Technology |   6000
   1 | Oleg   | Accounting |       
(6 rows)

В приведенном выше выводе значение столбца id на 6-й записи равна 1.

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

8 Примера установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей

Exit mobile version