Как создать составной тип данных с помощью pgAdmin 4 в PostgreSQL

Приветствую Вас на сайте Info-Comp.ru! Сегодня мы поговорим о составном типе данных PostgreSQL, о том как создать такой тип данных, как создать столбец составного типа, т.е. столбец, который будет иметь составной тип данных, и, конечно же, как добавлять данные в столбцы составного типа и как извлекать данные из таких столбцов.

Как создать составной тип данных с помощью pgAdmin 4 в PostgreSQL

Что такое составной тип данных

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

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

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

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

Создание составного типа данных

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

Это можно сделать с помощью графического инструмента pgAdmin 4 или с помощью выполнения инструкций языка SQL.

В данной статье мы рассмотрим оба способа.

Заметка! Установка и настройка PostgreSQL на Windows 10.

Исходные данные. Задача

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

  1. kod – код типа;
  2. name – наименование типа.

Данную информацию нам необходимо каким-то образом отобразить в таблице в виде одного столбца.

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

Создание составного типа данных с помощью pgAdmin 4

Чтобы создать составной тип данных в pgAdmin 4, необходимо в обозревателе зайти в нужную базу данных и схему, а затем щелкнуть правой кнопкой мыши по пункту «Типы» и выбрать «Создать –> Тип».

Затем на вкладке «Общие» нужно указать имя нового типа, это именно то имя, которое будет использоваться Вами при объявлении типа данных у столбца при создании таблицы. В нашем случае логично назвать данный тип данных как – product_type.

Далее нужно перейти на вкладку «Определение» и указать поля и типы данных, которые будут включаться в этот составной тип данных.

В нашем случае вводим два поля:

  1. kod – с типом данных integer;
  2. name – с текстовым типом данных character varying.

Каждое новое поле добавляется путем нажатия на кнопку + (плюс).

«Тип» оставляем по умолчанию, т.е. Composite.

Больше никаких настроек вводить не требуется, нажимаем «Сохранить».

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

Скриншот 1

Заметка! Как создать базу данных в PostgreSQL с помощью pgAdmin 4.

Создание составного типа с помощью SQL

На SQL составной тип данных создается достаточно просто, для этого используется команда CREATE TYPE.

Чтобы создать точно такой же составной тип данных, который мы создали чуть ранее, мы можем использовать следующую SQL инструкцию, которую необходимо выполнить в редакторе SQL запросов (Запросник) в контексте нужной базы данных.



Авторские онлайн-курсы по T-SQL

   
   CREATE TYPE product_type AS
     (
        kod integer,
        name character varying(100)
     );

Скриншот 2

Использование составного типа данных

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

Создание таблицы с составным типом данных

Чтобы создать в таблице столбец, у которого будет составной тип данных, нам всего лишь необходимо в качестве типа данных у столбца указать созданный нами ранее составной тип данных, т.е. product_type.

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

   
   CREATE TABLE products (
     id INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
     name VARCHAR(100) NOT NULL,
     type product_type NOT NULL,
     price NUMERIC(18,2) NULL
   );

Заметка! Как создать таблицу в PostgreSQL с помощью pgAdmin 4.

Добавление данных в столбец составного типа

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

Для этого рекомендовано использовать «Конструктор табличных строк» – ROW, где в скобочках каждое значение отделяется запятой.

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

   
   INSERT INTO products (name, type, price)
     VALUES ('Системный блок', ROW(100, 'Физический'), 50),
            ('Клавиатура', ROW(100, 'Физический'), 30),
            ('Операционная система', ROW(200, 'Электронный'),150),
            ('Антивирусная программа', ROW(200, 'Электронный'), 100);

   SELECT * FROM products;

В данном случае мы добавили 4 строки и если мы выполним простой запрос SELECT, то получим следующие данные.

Скриншот 3

Заметка! Как перенести базу данных PostgreSQL на другой сервер с помощью pgAdmin 4.

Изменение данных в столбце составного типа

Для изменения данных в столбце составного типа также необходимо использовать команду ROW.

   
   UPDATE products SET type = ROW(100, 'Физический')
   WHERE id = 3;

   SELECT * FROM products
   ORDER BY id;

Скриншот 4

Обращение к столбцу составного типа в запросе SELECT


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

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

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

   
   SELECT id AS product_id, name AS product_name,
          type,
         (type).kod AS type_kod,
         (type).name AS type_name
   FROM products
   ORDER BY id;

Скриншот 5

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

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

   
   SELECT id AS product_id, name AS product_name,
          type,
         (type).*
   FROM products
   ORDER BY id;

Скриншот 6

Заметка! Как установить PostgreSQL на Linux Debian.

Таким образом, в PostgreSQL мы можем использовать составные типы данных.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Источник Заметки IT специалиста

Поделиться ссылкой:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.