PostgreSQL Схема

Схему PostgreSQL можно рассматривать как совокупность таблиц.

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

Одно и то же имя объекта можно использовать в разных схемах без конфликтов; например, schema1 и myschema могут обе содержать таблицу с именем mytable.

Преимущества использования схем:

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

  • Организует объекты базы данных в логические группы, чтобы упростить управление ими.

  • Объекты сторонних приложений можно размещать в отдельных схемах, чтобы они не конфликтовали с именами других объектов.

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

Синтаксис

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

CREATE SCHEMA myschema (
...
);

Приведённая выше инструкция создаст схему с именем myschema.

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

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

CREATE TABLE myschema.mytable (
    column1 datatype1,
    column2 datatype2,
    ...
);

Приведённая выше инструкция создаст таблицу с именем mytable в схеме myschema и определит ряд столбцов и их типы данных.

Обратите внимание, что datatype1, datatype2 и т. д. выше следует заменить на фактические типы данных, например integer, varchar(255) и т. д.

Примеры

Далее мы подключаемся к exampledb, чтобы создать схему myschema:

exampledb=# create schema myschema;
CREATE SCHEMA

Выходной результат "CREATE SCHEMA" указывает на то, что схема была успешно создана.

Далее мы создаём другую таблицу:

exampledb=# create table myschema.company(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25),
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

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

exampledb=# select * from myschema.company;
 id | name | age | address | salary 
----+------+-----+---------+--------
(0 rows)

Удаление схемы

Удаление пустой схемы (все объекты в ней уже удалены):

DROP SCHEMA myschema;

Удаление схемы вместе со всеми содержащимися в ней объектами:

DROP SCHEMA myschema CASCADE;
Другие расширения