CREATE SCHEMA
CREATE SCHEMA â ÑоздаÑÑ ÑÑ ÐµÐ¼Ñ
СинÑакÑиÑ
CREATE SCHEMAимÑ_ÑÑ ÐµÐ¼Ñ[ AUTHORIZATIONÑказание_Ñоли] [ÑлеменÑ_ÑÑ ÐµÐ¼Ñ[ ... ] ] CREATE SCHEMA AUTHORIZATIONÑказание_Ñоли[ÑлеменÑ_ÑÑ ÐµÐ¼Ñ[ ... ] ] CREATE SCHEMA IF NOT EXISTSимÑ_ÑÑ ÐµÐ¼Ñ[ AUTHORIZATIONÑказание_Ñоли] CREATE SCHEMA IF NOT EXISTS AUTHORIZATIONÑказание_ÑолиÐдеÑÑÑказание_Ñоли:имÑ_полÑзоваÑелÑ| CURRENT_ROLE | CURRENT_USER | SESSION_USER
ÐпиÑание
CREATE SCHEMA ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÑ
ÐµÐ¼Ñ Ð² ÑекÑÑей базе даннÑÑ
. ÐÐ¼Ñ ÑÑ
ÐµÐ¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð¼Ñн дÑÑгиÑ
ÑÑÑеÑÑвÑÑÑиÑ
ÑÑ
ем в ÑекÑÑей базе даннÑÑ
.
СÑ
ема по ÑÑÑи пÑедÑÑавлÑÐµÑ Ñобой пÑоÑÑÑанÑÑво имÑн: она ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñе обÑекÑÑ (ÑаблиÑÑ, ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑÑнкÑии и опеÑаÑоÑÑ), имена коÑоÑÑÑ
могÑÑ ÑовпадаÑÑ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ дÑÑгиÑ
обÑекÑов, ÑÑÑеÑÑвÑÑÑиÑ
в дÑÑгиÑ
ÑÑ
емаÑ
. ÐÐ»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº обÑекÑÑ Ð½Ñжно либо «дополниÑÑ» его Ð¸Ð¼Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑÑ
ÐµÐ¼Ñ Ð² виде пÑеÑикÑа, либо ÑÑÑановиÑÑ Ð¿ÑÑÑ Ð¿Ð¾Ð¸Ñка, вклÑÑаÑÑий ÑÑебÑемÑÑ ÑÑ
емÑ. Ðоманда CREATE, в коÑоÑой ÑказÑваеÑÑÑ Ð½ÐµÐ¿Ð¾Ð»Ð½Ð¾Ðµ Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ Ð² ÑекÑÑей ÑÑ
еме (ÑÑ
еме, ÑÑоÑÑей пеÑвой в пÑÑи поиÑка; ÑзнаÑÑ ÐµÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑÑнкÑÐ¸Ñ current_schema).
Ðоманда CREATE SCHEMA Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно вклÑÑаÑÑ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑоздаÑÑие обÑекÑÑ Ð² новой ÑÑ
еме. ÐÑи Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾ ÑÑÑи воÑпÑинимаÑÑÑÑ ÐºÐ°Ðº оÑделÑнÑе командÑ, вÑполнÑемÑе поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑ
емÑ, за иÑклÑÑением Ñого, ÑÑо Ñ Ð¿Ñедложением AUTHORIZATION вÑе ÑоздаваемÑе обÑекÑÑ Ð±ÑдÑÑ Ð¿ÑинадлежаÑÑ ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² нÑм полÑзоваÑелÑ.
ÐаÑамеÑÑÑ
имÑ_ÑÑ ÐµÐ¼ÑÐÐ¼Ñ Ñоздаваемой ÑÑ ÐµÐ¼Ñ. ÐÑли оно опÑÑено, именем ÑÑ ÐµÐ¼Ñ Ð±ÑдеÑ
имÑ_полÑзоваÑелÑ. ÐÑо Ð¸Ð¼Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°ÑинаÑÑÑÑ Ñpg_, Ñак как Ñакие имена заÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ ÑиÑÑемнÑÑ ÑÑ ÐµÐ¼.имÑ_полÑзоваÑелÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ (Ñоли), назнаÑаемого владелÑÑем новой ÑÑ ÐµÐ¼Ñ. ÐÑли опÑÑено, по ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, вÑполнÑÑÑий командÑ. ЧÑÐ¾Ð±Ñ Ð½Ð°Ð·Ð½Ð°ÑиÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем Ñоздаваемой ÑÑ ÐµÐ¼Ñ Ð´ÑÑгÑÑ ÑолÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом ÑÑой Ñоли, либо ÑÑпеÑполÑзоваÑелем.
ÑлеменÑ_ÑÑ ÐµÐ¼ÑÐпеÑаÑÐ¾Ñ SQL, опÑеделÑÑÑий обÑекÑ, ÑоздаваемÑй в новой ÑÑ ÐµÐ¼Ðµ. РнаÑÑоÑÑее вÑемÑ
CREATE SCHEMAÐ¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑолÑко подкомандÑCREATE TABLE,CREATE VIEW,CREATE INDEX,CREATE SEQUENCE,CREATE TRIGGERиGRANT. СоздаÑÑ Ð¾Ð±ÑекÑÑ Ð´ÑÑÐ³Ð¸Ñ Ñипов можно оÑделÑнÑми командами поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ.IF NOT EXISTSÐе делаÑÑ Ð½Ð¸Ñего (ÑолÑко вÑдаÑÑ Ð·Ð°Ð¼ÐµÑание), еÑли ÑÑ ÐµÐ¼Ð° Ñ Ñаким именем Ñже ÑÑÑеÑÑвÑеÑ. Ðогда иÑполÑзÑеÑÑÑ ÑÑо Ñказание, ÑÑа команда не Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
ÑлеменÑ_ÑÑ ÐµÐ¼Ñ.
ÐÑимеÑаниÑ
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑÑ
емÑ, полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ имеÑÑ Ð¿Ñаво CREATE в ÑекÑÑей базе даннÑÑ
. (РазÑмееÑÑÑ, на ÑÑпеÑполÑзоваÑелей ÑÑо ÑÑловие не ÑаÑпÑоÑÑÑанÑеÑÑÑ.)
ÐÑимеÑÑ
Создание ÑÑ ÐµÐ¼Ñ:
CREATE SCHEMA myschema;
Создание ÑÑ
ÐµÐ¼Ñ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ joe; ÑÑ
ема Ñак же полÑÑÐ¸Ñ Ð¸Ð¼Ñ joe:
CREATE SCHEMA AUTHORIZATION joe;
Создание ÑÑ
ÐµÐ¼Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ test, владелÑÑем коÑоÑой бÑÐ´ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ joe, еÑли ÑолÑко ÑÑ
ема test еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ. (ЯвлÑеÑÑÑ Ð»Ð¸ владелÑÑем ÑÑÑеÑÑвÑÑÑей ÑÑ
ÐµÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ joe, знаÑÐµÐ½Ð¸Ñ Ð½Ðµ имееÑ.)
CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;
Создание ÑÑ ÐµÐ¼Ñ, в коÑоÑой ÑÑÐ°Ð·Ñ ÑоздаÑÑÑÑ ÑаблиÑа и пÑедÑÑавление:
CREATE SCHEMA hollywood
CREATE TABLE films (title text, release date, awards text[])
CREATE VIEW winners AS
SELECT title, release FROM films WHERE awards IS NOT NULL;ÐамеÑÑÑе, ÑÑо оÑделÑнÑе Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ðµ завеÑÑаÑÑÑÑ ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой.
СледÑÑÑие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿ÑиводÑÑ Ðº ÑÐ¾Ð¼Ñ Ð¶Ðµ ÑезÑлÑÑаÑÑ Ð´ÑÑгим ÑпоÑобом:
CREATE SCHEMA hollywood;
CREATE TABLE hollywood.films (title text, release date, awards text[]);
CREATE VIEW hollywood.winners AS
SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;СовмеÑÑимоÑÑÑ
СÑандаÑÑ SQL Ñакже допÑÑÐºÐ°ÐµÑ Ð² команде CREATE SCHEMA пÑедложение DEFAULT CHARACTER SET и дополниÑелÑнÑе ÑÐ¸Ð¿Ñ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´, коÑоÑÑе PostgreSQL в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ пÑинимаеÑ.
Ð ÑÑандаÑÑе SQL говоÑиÑÑÑ, ÑÑо Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² CREATE SCHEMA могÑÑ ÑледоваÑÑ Ð² лÑбом поÑÑдке. Ðднако ÑекÑÑÐ°Ñ ÑеализаÑÐ¸Ñ Ð² PostgreSQL не воÑпÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð²Ñе возможнÑе ваÑианÑÑ ÑÑÑлок впеÑÑд в подкомандаÑ
, поÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑÑ Ð¿ÐµÑеÑпоÑÑдоÑиÑÑ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, ÑÑÐ¾Ð±Ñ Ð¸ÑклÑÑиÑÑ Ñакие ÑÑÑлки.
СоглаÑно ÑÑандаÑÑÑ SQL, Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑÑ
ÐµÐ¼Ñ Ð²Ñегда Ð²Ð»Ð°Ð´ÐµÐµÑ Ð²Ñеми обÑекÑами в ней, но PostgreSQL допÑÑÐºÐ°ÐµÑ ÑазмеÑение в ÑÑ
емаÑ
обÑекÑов, пÑинадлежаÑиÑ
не владелÑÑÑ ÑÑ
емÑ. Ð¢Ð°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°, ÑолÑко еÑли Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑÑ
ÐµÐ¼Ñ Ð´Ð°ÑÑ Ð¿Ñаво CREATE в ÑÑой ÑÑ
еме комÑ-либо дÑÑгомÑ, либо обÑекÑÑ Ð² ней бÑÐ´ÐµÑ ÑоздаваÑÑ ÑÑпеÑполÑзоваÑелÑ.
Указание IF NOT EXISTS ÑвлÑеÑÑÑ ÑаÑÑиÑением PostgreSQL.