Новую схему в 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. Для соседних задач пригодятся эти разборы:
- Как создать базу данных в MS SQL Server
- Как создать базу данных в SQL Server Management Studio
- Как создать сервер в SQL Server Management Studio: что на самом деле нужно сделать
- Как создать схему данных для БД



