Поиск по сайту:

Как создавать, удалять и управлять таблицами в PostgreSQL на облачном сервере


Что такое PostgreSQL?

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

В этой статье мы обсудим, как создавать таблицы и управлять ими в интерфейсе postgreSQL. Вы узнаете, как правильно настраивать таблицы и использовать их для хранения информации.

Как установить и войти в PostgreSQL на Ubuntu

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

Введите следующие команды для установки:

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

После установки создайте нового пользователя для управления базой данных:

sudo adduser postgres_user

Войдите под пользователем PostgreSQL по умолчанию (называемым «postgres»), чтобы создать базу данных и назначить ее новому пользователю:

sudo su - postgres
psql

Вы попадете в командную строку PostgreSQL.

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

CREATE USER postgres_user WITH PASSWORD 'password';
CREATE DATABASE my_postgres_db OWNER postgres_user;

Выйдите из интерфейса с помощью следующей команды:

\q

Выйдите из учетной записи пользователя «postgres» по умолчанию и войдите в систему пользователя, которого вы создали, с помощью следующих команд:

exit
sudo su - postgres_user

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

psql my_postgres_db

Теперь мы готовы узнать об управлении таблицами.

Синтаксис создания таблиц в PostgreSQL

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

\d
No relations found.

Мы можем создать новую таблицу, придерживаясь следующего синтаксиса:

CREATE TABLE new_table_name (
	table_column_title TYPE_OF_DATA column_constraints,
	next_column_title TYPE_OF_DATA column_constraints,
	table_constraint
	table_constraint
) INHERITS existing_table_to_inherit_from;

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

Часть внутри круглых скобок разделена на две части: определения столбцов и ограничения таблицы.

Определения столбцов и таблиц PostgreSQL

Определения столбцов следуют этому шаблону синтаксиса:

column_name data_type (optional_data_length_restriction) column_constraints

Имя столбца должно быть самоочевидным.

Типы данных Postgres Pro

Тип данных может быть любым из следующих:

  • boolean: используйте \boolean\ или \bool\, чтобы объявить истинное или ложное значение.
  • символьные значения
    • char: содержит один символ
    • char (#): содержит # количество символов. Пробелы будут вставлены, чтобы заполнить любую дополнительную комнату.
    • varchar (#): содержит не более # символов. Может содержать меньше.

    • smallint: целое число от -32768 до 32767.
    • int: целое число от -214783648 до 214783647.
    • серийный номер: Целое число, заполняемое автоматически.

    • float (#): число с плавающей запятой с точностью не менее # точек.
    • real: 8-байтовое число с плавающей запятой
    • числовой (#,after_dec): действительное число с # количеством цифр и after_dec цифрами после запятой

    • date: сохраняет значение даты
    • время: сохраняет значение времени
    • отметка времени: сохраняет значение даты и времени
    • timestamptz: хранит метку времени, включающую данные о часовом поясе
    • interval: сохраняет разницу между двумя значениями отметки времени

    • точка: хранит пару координат, определяющих точку
    • line: хранит набор точек, отображающих линию
    • lseg: хранит данные, определяющие сегмент линии
    • box: хранит данные, определяющие прямоугольник
    • полигон: хранит данные, определяющие любое замкнутое пространство

    • inet: хранит IP-адрес
    • macaddr: сохраняет MAC-адрес устройства

    Ограничения столбцов и таблиц PostreSQL

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

    • NOT NULL: столбец не может иметь нулевое значение
    • УНИКАЛЬНО: значение столбца не должно совпадать ни для одной записи. Null всегда считается уникальным значением.
    • ПЕРВИЧНЫЙ КЛЮЧ: комбинация двух указанных выше ограничений. Можно использовать только один раз за стол
    • ПРОВЕРКА: убедитесь, что условие истинно для значений в столбце
    • ССЫЛКИ: значение должно существовать в столбце другой таблицы

    После определения столбцов можно объявить ограничения для всей таблицы. Ограничения для всей таблицы могут быть либо UNIQUE, PRIMARY KEY, CHECK, либо REFERENCES.

    Как создать таблицу в PostgreSQL

    Давайте создадим тестовую таблицу для практики. Мы создадим таблицу под названием \pg_equipment\, которая определяет различные части оборудования для игровых площадок. Введите следующее определение таблицы:

    CREATE TABLE pg_equipment (
    	equip_id serial PRIMARY KEY,
    	type varchar (50) NOT NULL,
    	color varchar (25) NOT NULL,
    	location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    	install_date date
    	);
    NOTICE:  CREATE TABLE will create implicit sequence "pg_equipment_equip_id_seq" for serial column "pg_equipment.equip_id"
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "pg_equipment_pkey" for table "pg_equipment"
    CREATE TABLE

    Мы можем увидеть нашу новую таблицу, набрав \\d\ в командной строке:

    \d
                           List of relations
     Schema |           Name            |   Type   |     Owner     
    --------+---------------------------+----------+---------------
     public | pg_equipment              | table    | postgres_user
     public | pg_equipment_equip_id_seq | sequence | postgres_user
    (2 rows)

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

    Как изменить данные таблицы в PostgreSQL

    Мы можем изменить определение наших таблиц с помощью следующего общего синтаксиса:

    ALTER TABLE table_name Action_TO_Take;

    Например, мы можем добавить столбец в нашу таблицу \pg_equipment\, введя эту команду:

    ALTER TABLE pg_equipment ADD COLUMN functioning bool;
    ALTER TABLE

    Мы можем увидеть дополнительный столбец, набрав:

    \d pg_equipment
        Column    |         Type          |                            Modifiers                            
    --------------+-----------------------+-----------------------------------------------------------------
     equip_id     | integer               | not null default nextval('pg_equipment_equip_id_seq'::regclass)
     type         | character varying(50) | not null
     color        | character varying(25) | not null
     location     | character varying(25) | 
     install_date | date                  | 
     functioning  | boolean               |
     . . .

    Чтобы добавить значение по умолчанию, указывающее, что «оборудование следует считать работающим, если не указано иное», введите следующую команду:

    ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT 'true';

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

    ALTER TABLE pg_equipment ALTER COLUMN functioning SET NOT NULL;

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

    ALTER TABLE pg_equipment RENAME COLUMN functioning TO working_order;

    Чтобы удалить только что созданный столбец, введите следующую команду:

    ALTER TABLE pg_equipment DROP COLUMN working_order;

    Мы можем переименовать всю таблицу с помощью этой команды:

    ALTER TABLE pg_equipment RENAME TO playground_equip;

    Удаление таблиц в PostgreSQL

    Мы можем удалить созданную нами таблицу, набрав:

    DROP TABLE playground_equip;
    DROP TABLE

    Если мы дадим эту команду несуществующей таблице, мы получим следующую ошибку:

    ERROR: table "playground_equip" does not exist

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

    DROP TABLE IF EXISTS playground_equip;
    NOTICE:  table "playground_equip" does not exist, skipping
    DROP TABLE

    На этот раз он сообщает нам, что таблица не найдена, но продолжает работу, а не выдает ошибку.

    Заключение

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