Основы управления базами данных с PostgreSQL

PostgreSQLBeginner
Практиковаться сейчас

Введение

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

Вы начнете с создания новой базы данных с помощью команды createdb и проверки ее создания с помощью команды psql. Затем вы узнаете, как перечислить все доступные базы данных и подключиться к определенной базе данных. Наконец, вы изучите, как удалить базу данных и просмотреть метаданные базы данных. Эта лабораторная работа представляет собой практическое введение в основные задачи администрирования баз данных в PostgreSQL.

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

В этом шаге вы узнаете, как создать новую базу данных в PostgreSQL. Создание базы данных — это первый шаг в организации и хранении ваших данных.

Прежде чем мы начнем, давайте разберемся, что такое база данных. База данных — это структурированный набор данных, организованный для легкого доступа, управления и обновления. В PostgreSQL база данных — это контейнер для таблиц, представлений (views) и других объектов базы данных.

Чтобы создать новую базу данных, вы будете использовать команду createdb. Эта команда является оболочкой (wrapper) для SQL-команды CREATE DATABASE.

  1. Откройте терминал: Если у вас еще нет открытого терминала, запустите окно терминала.

  2. Создайте новую базу данных: Используйте команду createdb, за которой следует имя, которое вы хотите присвоить своей базе данных. Например, чтобы создать базу данных с именем mydatabase, выполните следующую команду:

    createdb mydatabase

    Эта команда создаст новую базу данных с именем mydatabase. Если команда выполнена успешно, вы не увидите никакого вывода.

  3. Проверьте создание базы данных: Чтобы убедиться, что база данных была создана, вы можете перечислить все базы данных с помощью команды psql. Сначала подключитесь к базе данных по умолчанию postgres:

    psql -d postgres

    Вы увидите приглашение postgres=#.

  4. Список баз данных: В приглашении postgres=# выполните следующую SQL-команду, чтобы перечислить все базы данных:

    \l
    List of databases in PostgreSQL

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

                                     List of databases
       Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
    -----------+----------+----------+-------------+-------------+-----------------------
     mydatabase| labex    | 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)

    Обратите внимание, что mydatabase находится в списке.

  5. Выход из psql: Чтобы выйти из приглашения psql, введите:

    \q

    и нажмите Enter. Вы вернетесь к обычному приглашению терминала.

Теперь вы успешно создали новую базу данных в PostgreSQL.

Список и подключение к базам данных

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

  1. Откройте терминал: Если у вас еще нет открытого терминала, запустите окно терминала.

  2. Список доступных баз данных: Чтобы перечислить все базы данных, вы можете использовать команду psql с опцией -l (это строчная буква 'L'). Эта опция перечисляет все базы данных на сервере. Поскольку вы не указали базу данных для подключения, psql попытается подключиться, используя ваше текущее имя пользователя.

    psql -l

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

                                     List of databases
       Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
    -----------+----------+----------+-------------+-------------+-----------------------
     mydatabase| labex    | 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)

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

  3. Подключение к определенной базе данных: Чтобы подключиться к определенной базе данных, используйте команду psql с опцией -d, за которой следует имя базы данных. Например, чтобы подключиться к базе данных mydatabase, выполните следующую команду:

    psql -d mydatabase

    Если соединение установлено успешно, вы увидите приглашение mydatabase=#. Это означает, что вы подключены к базе данных mydatabase.

  4. Проверка соединения: Чтобы убедиться, что вы подключены к правильной базе данных, вы можете выполнить простую SQL-команду, например:

    SELECT version();
    Output of SELECT version command

    Эта команда отобразит версию сервера PostgreSQL, к которому вы подключены. Вывод будет выглядеть примерно так:

                                                     version
    ----------------------------------------------------------------------------------------------------------------
     PostgreSQL 14.7 (Debian 14.7-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
    (1 row)
  5. Выход из psql: Чтобы выйти из приглашения psql, введите:

    \q

    и нажмите Enter. Вы вернетесь к обычному приглашению терминала.

Теперь вы успешно перечислили доступные базы данных и подключились к определенной базе данных с помощью psql.

Удаление базы данных

В этом шаге вы узнаете, как удалить (drop) базу данных в PostgreSQL. Удаление базы данных — это необратимое действие, поэтому важно быть осторожным при использовании этой команды. Все данные в базе данных будут потеряны.

  1. Откройте терминал: Если у вас еще нет открытого терминала, запустите окно терминала.

  2. Удалите базу данных: Используйте команду dropdb, за которой следует имя базы данных, которую вы хотите удалить. Например, чтобы удалить базу данных mydatabase, выполните следующую команду:

    dropdb mydatabase

    Эта команда удалит базу данных mydatabase. Если команда выполнена успешно, вы не увидите никакого вывода.

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

  3. Проверьте удаление базы данных: Чтобы убедиться, что база данных была удалена, вы можете перечислить все базы данных с помощью команды psql. Сначала подключитесь к базе данных по умолчанию postgres:

    psql -d postgres
    Prompt after connecting to postgres

    Вы увидите приглашение postgres=#.

  4. Список баз данных: В приглашении postgres=# выполните следующую SQL-команду, чтобы перечислить все базы данных:

    \l

    Эта команда отобразит список баз данных. Убедитесь, что mydatabase больше нет в списке.

                                     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
    (3 rows)

    Если mydatabase не указана, она была успешно удалена.

  5. Выход из psql: Чтобы выйти из приглашения psql, введите:

    \q

    и нажмите Enter. Вы вернетесь к обычному приглашению терминала.

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

Просмотр метаданных базы данных

В этом шаге вы узнаете, как просматривать метаданные базы данных в PostgreSQL. Метаданные — это "данные о данных". В контексте базы данных метаданные описывают структуру и характеристики самой базы данных, включая информацию о таблицах, столбцах, типах данных и ограничениях (constraints).

  1. Откройте терминал: Если у вас еще нет открытого терминала, запустите окно терминала.

  2. Подключитесь к базе данных postgres: Поскольку мы удалили mydatabase на предыдущем шаге, мы подключимся к базе данных postgres по умолчанию, чтобы изучить метаданные.

    psql -d postgres

    Вы увидите приглашение postgres=#.

  3. Список таблиц: Чтобы перечислить все таблицы в текущей подключенной базе данных, вы можете использовать команду \dt.

    \dt

    Поскольку мы еще не создали никаких таблиц, вывод должен быть пустым или показывать системные таблицы. Это может выглядеть так:

    Did not find any relations.

    или

                 List of relations
     Schema |         Name          | Type  |  Owner
    --------+-----------------------+-------+----------
     pg_catalog | pg_aggregate          | table | postgres
     pg_catalog | pg_am               | table | postgres
     pg_catalog | pg_amop             | table | postgres
    ...

    Вывод показывает схему (schema), имя, тип и владельца каждой таблицы.

  4. Описание таблицы: Чтобы просмотреть подробную информацию о конкретной таблице, вы можете использовать команду \d, за которой следует имя таблицы. Поскольку у нас нет пользовательской таблицы, давайте рассмотрим системную таблицу, например, pg_class.

    \d pg_class
    Structure of pg_class table output

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

                                         Table "pg_catalog.pg_class"
          Column       |   Type    | Collation | Nullable | Default | Storage  | Stats target | Description
    -------------------+-----------+-----------+----------+---------+----------+--------------+-------------
     oid               | oid       |           | not null |         | plain    |              |
     relname           | name      |           | not null |         | plain    |              |
     relnamespace      | oid       |           | not null |         | plain    |              |
     reltype           | oid       |           | not null |         | plain    |              |
     reloftype         | oid       |           | not null |         | plain    |              |
     relowner          | oid       |           | not null |         | plain    |              |
     relam             | oid       |           | not null |         | plain    |              |
     relfilenode       | oid       |           | not null |         | plain    |              |
     reltablespace     | oid       |           | not null |         | plain    |              |
     relpages          | integer   |           | not null |         | plain    |              |
     reltuples         | real      |           | not null |         | plain    |              |
     relallvisible     | boolean   |           | not null |         | plain    |              |
     reltoastrelid     | oid       |           | not null |         | plain    |              |
     relhasindex       | boolean   |           | not null |         | plain    |              |
     relhasrules       | boolean   |           | not null |         | plain    |              |
     relhastriggers    | boolean   |           | not null |         | plain    |              |
     relhassubclass    | boolean   |           | not null |         | plain    |              |
     relrowsecurity    | boolean   |           | not null |         | plain    |              |
     relforcerowsecurity| boolean   |           | not null |         | plain    |              |
     relispopulated    | boolean   |           | not null |         | plain    |              |
     relreplident      | character |           | not null |         | plain    |              |
     relispartition    | boolean   |           | not null |         | plain    |              |
     relrewrite        | oid       |           | not null |         | plain    |              |
     relacl            | aclitem[] |           |          |         | plain    |              |
     reloptions        | text[]    |           |          |         | plain    |              |
     relpartbound      | pg_node_tree |           |          |         | extended |              |
    Indexes:
        "pg_class_oid_index" UNIQUE, btree (oid)
        "pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace)
    Foreign-key constraints:
        "pg_class_relam_fkey" FOREIGN KEY (relam) REFERENCES pg_am(oid)
        "pg_class_relnamespace_fkey" FOREIGN KEY (relnamespace) REFERENCES pg_namespace(oid)
        "pg_class_relowner_fkey" FOREIGN KEY (relowner) REFERENCES pg_authid(oid)
        "pg_class_reltoastrelid_fkey" FOREIGN KEY (reltoastrelid) REFERENCES pg_class(oid)
    Referenced by:
        TABLE "pg_statistic_ext" CONSTRAINT "pg_statistic_ext_relid_fkey" FOREIGN KEY (relid) REFERENCES pg_class(oid)
        TABLE "pg_rewrite" CONSTRAINT "pg_rewrite_ev_class_fkey" FOREIGN KEY (ev_class) REFERENCES pg_class(oid)
        TABLE "pg_trigger" CONSTRAINT "pg_trigger_tgrelid_fkey" FOREIGN KEY (tgrelid) REFERENCES pg_class(oid)
  5. Выход из psql: Чтобы выйти из приглашения psql, введите:

    \q

    и нажмите Enter. Вы вернетесь к обычному приглашению терминала.

Теперь вы успешно просмотрели метаданные базы данных в PostgreSQL с помощью psql. Это позволяет вам понимать структуру и свойства ваших баз данных и таблиц.

Резюме

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

Чтобы проверить создание, вы подключаетесь к базе данных postgres по умолчанию с помощью psql -d postgres, а затем используете команду \l для перечисления всех доступных баз данных, подтверждая, что вновь созданная база данных присутствует.