Найти в Дзене
programmer's notes (python and more)

Реляционные базы данных и язык SQL. Подмножество DDL и объекты PostgreSQL. Часть 1.

Оглавление

Доброго здоровья читателям моего канала programmer's notes. Подписываемся и ставим лайки.

Подмножество DDL

Одним из подмножеств языка SQL является язык DDL - Data Definition Language, т.е. язык описания данных. Для чего нужен язык описания данных? Для того, чтобы создавать структуру объекта базы данных, изменять структуру объекта, а также удалять отдельные объекты. Будет серия статей, начиная с данной, описывающих объекты сервера PostgreSQL.

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

Вот этим объектам и будет посвящена серия статей. В подмножестве DDL есть три типа команд: create - для создания объектов, alter - для изменения структуры объектов, drop - для удаления объектов.

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

create table public.rabotniki (
tabelnyj_nomer
text,
fio
text,
otdel
integer
);

В результате выполнения команды в текущеё базе данных в схеме public будет создана таблица, состоящая из трех столбцов. При создании базы данных в ней автоматически создаётся схема public, так что все объекты по умолчанию помещаются именно в эту схему. Если мы не собираемся создавать другие схемы, то имя схемы можно опускать, т.е. вместо public.имя_объекта можно везде использовать просто имя объекта. Типы данных, указанные в команде: text - строка произвольной длины, interger - целые числа (4 байтов). К типам данным, которые поддерживаются в PostgreSQL, мы вернёмся в отдельной строке.

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

alter table rabotniki alter column otdel type text;

В результате тип столбца otdel будет изменён на text.

Наконец удалить таблицу можно так

drop table otdel;

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

Домены

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

Мы можем создать домен, а затем, для типа столбца, указать имя домена. Домен можно задать путём перечислением и или путём указания условия, которому должны удовлетворять элементы, принадлежащие домену

create domain fio text
check
(
value
in ('Иванов', 'Петров', 'Сидоров', 'Пупкин')
);

Создаётся домен с именем fio. Далее можно использовать имя домена для определения типа столбца таблицы.

create table otdel (
fio1 fio,
otdel integer
);

А вот пример определения домена с указанием условия.

create domain num integer
check (value > 10 and value < 15);

Типы данных

Объект тип является перечисляемым типом. Создаётся командой create type. Например

create type rabochij as (
fio text, dolzhnost text, nomer integer
);

Тем самым мы создали трехкомпонентный тип.

И далее созданный тип можно использовать при создании таблицы

create table kadry(
rabotnik rabochij
);

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

insert into kadry (rabotnik) values (row('Иванов', 'Рабочий', 2345));

Функция row() встретится нам ещё не раз.

Пока всё!

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Создавая что-то, думай о конечности бытия и того, что создаёшь
Создавая что-то, думай о конечности бытия и того, что создаёшь