Как создать новую схему в SQL: SQL Server и PostgreSQL

Новую схему в SQL создают командой CREATE SCHEMA. Схема — это не новая база данных, а пространство имен внутри базы. Она помогает группировать таблицы, представления, функции и процедуры: например, sales.orders, billing.invoices, audit.events

Главная путаница в этом запросе — слово «схема». Иногда под схемой имеют в виду диаграмму связей таблиц. Но команда CREATE SCHEMA создает именно логический контейнер внутри базы, а не картинку и не ER-диаграмму

Пример для SQL Server

Создать схему:

CREATE SCHEMA sales;
GO

Создать таблицу внутри схемы:

CREATE TABLE sales.orders (
    id int IDENTITY(1,1) PRIMARY KEY,
    customer_name nvarchar(100) NOT NULL,
    total_sum decimal(10,2) NOT NULL
);

Обратиться к таблице:

SELECT *
FROM sales.orders;

Если не указывать схему, SQL Server часто использует схему по умолчанию, например dbo. Поэтому в рабочих запросах лучше писать полное имя schema.table, чтобы запрос был понятным и предсказуемым

Пример для PostgreSQL

Создать схему:

CREATE SCHEMA sales;

Создать таблицу:

CREATE TABLE sales.orders (
    id serial PRIMARY KEY,
    customer_name text NOT NULL,
    total_sum numeric(10,2) NOT NULL
);

Запрос:

SELECT *
FROM sales.orders;

В PostgreSQL на поиск объектов влияет search_path. Если таблица лежит в другой схеме, а схема не входит в search_path, обращение без имени схемы может не сработать или обратиться не туда

Как посмотреть схемы

В SQL Server:

SELECT name
FROM sys.schemas
ORDER BY name;
SELECT schema_name
FROM information_schema.schemata
ORDER BY schema_name;

Это простая проверка, что схема действительно появилась

Кому принадлежит схема

В SQL Server схема может иметь владельца:

CREATE SCHEMA reporting AUTHORIZATION dbo;

В PostgreSQL владельца можно указать отдельно или изменить после создания:

ALTER SCHEMA sales OWNER TO app_user;

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

Когда схема действительно нужна

Схемы полезны, когда в базе много объектов или есть несколько логических областей. Например, интернет-магазин может хранить заказы в sales, платежи в billing, события безопасности в audit, а справочники в dict

Если база маленькая и в ней пять таблиц, отдельные схемы могут быть лишней сложностью. Но даже в маленькой базе полезно понимать, что dbo.products и sales.products — это разные объекты

Мини-практика

Создайте схему training, добавьте таблицу и выполните запрос:

CREATE SCHEMA training;
GO

CREATE TABLE training.lessons (
    id int IDENTITY(1,1) PRIMARY KEY,
    title nvarchar(100) NOT NULL
);

INSERT INTO training.lessons (title)
VALUES (N'Первый урок по схемам SQL');

SELECT *
FROM training.lessons;

Потом попробуйте выполнить SELECT * FROM lessons;. Если запрос не найдет таблицу, вы увидите, зачем нужно указывать схему

Частые ошибки

  • Путают схему с базой данных
  • Путают схему с диаграммой связей
  • Создают таблицу в dbo, хотя хотели в новой схеме
  • Не указывают schema.table в запросах
  • Не проверяют права пользователя на новую схему
  • В PostgreSQL забывают про search_path

Что почитать дальше по SQL

Если нужен общий маршрут по теме, откройте рубрику SQL. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x