CREATE DATABASE
CREATE DATABASE â ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
СинÑакÑиÑ
CREATE DATABASEимÑ[ [ WITH ] [ OWNER [=]имÑ_полÑзоваÑелÑ] [ TEMPLATE [=]Ñаблон] [ ENCODING [=]кодиÑовка] [ LC_COLLATE [=]каÑегоÑиÑ_ÑоÑÑиÑовки] [ LC_CTYPE [=]каÑегоÑиÑ_Ñипов_Ñимволов] [ TABLESPACE [=]Ñабл_пÑоÑÑÑанÑÑво] [ ALLOW_CONNECTIONS [=]ÑазÑ_подклÑÑениÑ] [ CONNECTION LIMIT [=]пÑедел_подклÑÑений] [ IS_TEMPLATE [=]ÑÑо_Ñаблон] ]
ÐпиÑание
Ðоманда CREATE DATABASE ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Postgres Pro.
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, необÑ
одимо бÑÑÑ ÑÑпеÑполÑзоваÑелем или имеÑÑ ÑпеÑиалÑное пÑаво CREATEDB. См. CREATE USER.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ
ÑоздаÑÑÑÑ ÐºÐ¾Ð¿Ð¸Ñованием ÑÑандаÑÑной ÑиÑÑемной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
template1. ÐадаÑÑ Ð´ÑÑгой Ñаблон можно, добавив Ñказание TEMPLATE . Ð ÑаÑÑноÑÑи, напиÑав имÑTEMPLATE template0, можно ÑоздаÑÑ Ð´ÐµÐ²ÑÑвенно ÑиÑÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑодеÑжаÑÑÑ ÑолÑко ÑÑандаÑÑнÑе обÑекÑÑ, пÑедопÑеделÑннÑе ÑÑÑановленной веÑÑией Postgres Pro. ÐÑо бÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾, когда копиÑоваÑÑ Ð² новÑÑ Ð±Ð°Ð·Ñ Ð»ÑбÑе дополниÑелÑнÑе обÑекÑÑ, добавленнÑе локалÑно в template1, нежелаÑелÑно.
ÐаÑамеÑÑÑ
имÑÐÐ¼Ñ Ñоздаваемой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
имÑ_полÑзоваÑелÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ (Ñоли), назнаÑаемого владелÑÑем новой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , либо
DEFAULT, ÑÑÐ¾Ð±Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем ÑÑал полÑзоваÑÐµÐ»Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (а именно, полÑзоваÑелÑ, вÑполнÑÑÑий командÑ). ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ ÑделаÑÑ ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем дÑÑгÑÑ ÑолÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ бÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑм или опоÑÑедованнÑм Ñленом ÑÑой Ñоли, либо ÑÑпеÑполÑзоваÑелем.ÑаблонÐÐ¼Ñ Ñаблона, из коÑоÑого бÑÐ´ÐµÑ ÑоздаваÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ , либо
DEFAULT, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Ñаблон по ÑмолÑÐ°Ð½Ð¸Ñ (template1).кодиÑовкаÐодиÑовка Ñимволов в новой базе даннÑÑ . УкажиÑе ÑÑÑоковÑÑ ÐºÐ¾Ð½ÑÑанÑÑ (напÑимеÑ,
'SQL_ASCII') или ÑелоÑиÑленнÑй Ð½Ð¾Ð¼ÐµÑ ÐºÐ¾Ð´Ð¸Ñовки, либоDEFAULT, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (а именно, кодиÑÐ¾Ð²ÐºÑ Ñаблона). ÐабоÑÑ Ñимволов, коÑоÑÑе поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Postgres Pro, пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² ÐодÑазделе 22.3.1. ÐополниÑелÑнÑе огÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ.каÑегоÑиÑ_ÑоÑÑиÑовкиÐоÑÑдок ÑоÑÑиÑовки (
LC_COLLATE), коÑоÑÑй бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² новой базе даннÑÑ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑÐµÑ Ð¿Ð¾ÑÑдок ÑоÑÑиÑовки ÑÑÑок, напÑимеÑ, в запÑоÑÐ°Ñ Ñ ORDER BY, а Ñакже поÑÑдок индекÑов по ÑекÑÑовÑм ÑÑолбÑам. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿Ð¾ÑÑдок ÑоÑÑиÑовки, ÑÑÑановленнÑй в Ñаблоне. ÐополниÑелÑнÑе огÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ.каÑегоÑиÑ_Ñипов_ÑимволовÐлаÑÑиÑикаÑÐ¸Ñ Ñимволов (
LC_CTYPE), коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¿ÑименÑÑÑÑÑ Ð² новой базе даннÑÑ . ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾Ð¿ÑеделÑÐµÑ Ð¿ÑинадлежноÑÑÑ Ñимволов каÑегоÑиÑм, напÑимеÑ: ÑÑÑоÑнÑе, заглавнÑе, ÑиÑÑÑ Ð¸ Ñ. п. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ ÐºÐ»Ð°ÑÑиÑикаÑÐ¸Ñ Ñимволов, ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð² Ñаблоне. ÐополниÑелÑнÑе огÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ.Ñабл_пÑоÑÑÑанÑÑвоÐÐ¼Ñ ÑаблиÑного пÑоÑÑÑанÑÑва, ÑвÑзÑваемого Ñ Ð½Ð¾Ð²Ð¾Ð¹ базой даннÑÑ , или
DEFAULTÐ´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑаблиÑного пÑоÑÑÑанÑÑва Ñаблона. ÐÑо ÑаблиÑное пÑоÑÑÑанÑÑво бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑекÑов, ÑоздаваемÑÑ Ð² ÑÑой базе. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº CREATE TABLESPACE.ÑазÑ_подклÑÑениÑÐÑли false, никÑо не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº ÑÑой базе даннÑÑ . Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение true, Ñо еÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð¿ÑинимаÑÑÑÑ (еÑли не огÑаниÑиваÑÑÑÑ Ð´ÑÑгими Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð°Ð¼Ð¸, напÑимеÑ,
GRANT/REVOKE CONNECT).пÑедел_подклÑÑенийÐакÑималÑное колиÑеÑÑво одновÑеменнÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений к ÑÑой базе даннÑÑ . ÐнаÑение -1 (по ÑмолÑаниÑ) ÑÐ½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð³ÑаниÑение.
ÑÑо_ÑаблонÐÑли true, Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÐ¼Ð¾Ð¶ÐµÑ ÐºÐ»Ð¾Ð½Ð¸ÑоваÑÑ Ð»Ñбой полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами
CREATEDB; в пÑоÑивном ÑлÑÑае (по ÑмолÑаниÑ), клониÑоваÑÑ ÑÑÑ Ð±Ð°Ð·Ñ ÑмогÑÑ ÑолÑко ÑÑпеÑполÑзоваÑели и ÐµÑ Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ.
ÐополниÑелÑнÑе паÑамеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð² лÑбом поÑÑдке, не обÑзаÑелÑно Ñак, как показано вÑÑе.
ÐамеÑаниÑ
CREATE DATABASE нелÑÐ·Ñ Ð²ÑполнÑÑÑ Ð²Ð½ÑÑÑи блока ÑÑанзакÑии.
ÐÑибки, ÑодеÑжаÑие ÑообÑение «не ÑдалоÑÑ Ð¸Ð½Ð¸ÑиализиÑоваÑÑ ÐºÐ°Ñалог Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Â», ÑаÑе вÑего ÑвÑÐ·Ð°Ð½Ñ Ñ Ð½ÐµÑ Ð²Ð°Ñкой пÑав в каÑалоге даннÑÑ , заполнением диÑка или дÑÑгими пÑоблемами в Ñайловой ÑиÑÑеме.
ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑименÑеÑÑÑ DROP DATABASE.
ÐÑогÑамма createdb пÑедÑÑавлÑÐµÑ Ñобой оболоÑÐºÑ ÑÑой командÑ, ÑозданнÑÑ Ñади ÑдобÑÑва.
ÐонÑигÑÑаÑионнÑе паÑамеÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ (ÑÑÑанавливаемÑе командой ALTER DATABASE) и ÑазÑеÑÐµÐ½Ð¸Ñ ÑÑÐ¾Ð²Ð½Ñ Ð±Ð°Ð·Ñ (ÑÑÑанавливаемÑе командой GRANT) из Ñаблона не копиÑÑÑÑÑÑ.
ХоÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑкопиÑоваÑÑ Ð»ÑбÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, а не ÑолÑко template1, Ñказав ÐµÑ Ð¸Ð¼Ñ Ð² каÑеÑÑве имени Ñаблона, она не пÑедназнаÑена (пока) Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² каÑеÑÑве ÑнивеÑÑалÑного ÑÑедÑÑва вÑоде «COPY DATABASE». ÐÑинÑипиалÑнÑм огÑаниÑением ÑвлÑеÑÑÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
Ñаблона, еÑли ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð´ÑÑгие подклÑÑÐµÐ½Ð¸Ñ Ðº ней. CREATE DATABASE вÑдаÑÑ Ð¾ÑибкÑ, еÑли пÑи запÑÑке ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÐµÑÑÑ Ð´ÑÑгие подклÑÑÐµÐ½Ð¸Ñ Ðº ÑÑой базе; в пÑоÑивном ÑлÑÑае новÑе подклÑÑÐµÐ½Ð¸Ñ Ðº базе блокиÑÑÑÑÑÑ Ð´Ð¾ завеÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE DATABASE. Ðа дополниÑелÑнÑми ÑведениÑми обÑаÑиÑеÑÑ Ðº РазделÑ 21.3.
ÐодиÑовка Ñимволов, ÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, должна бÑÑÑ ÑовмеÑÑима Ñ Ð²ÑбÑаннÑми паÑамеÑÑами локали (LC_COLLATE и LC_CTYPE). ÐÑли вÑбÑана Ð»Ð¾ÐºÐ°Ð»Ñ C (или ÑавнознаÑÐ½Ð°Ñ ÐµÐ¹ POSIX), допÑÑкаÑÑÑÑ Ð²Ñе кодиÑовки, но Ð´Ð»Ñ Ð´ÑÑгиÑ
локалей пÑавилÑно бÑÐ´ÐµÑ ÑабоÑаÑÑ ÑолÑко одна кодиÑовка. (Ð Windows, однако, кодиÑÐ¾Ð²ÐºÑ UTF-8 можно иÑполÑзоваÑÑ Ñ Ð»Ñбой локалÑÑ.) CREATE DATABASE позволÑÐµÑ ÑÑпеÑполÑзоваÑелÑм ÑказаÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ SQL_ASCII вне завиÑимоÑÑи Ð¾Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸, но ÑÑÐ¾Ñ Ð²Ð°ÑÐ¸Ð°Ð½Ñ ÑÑиÑаеÑÑÑ ÑÑÑаÑевÑим и Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к оÑибоÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑÑÑоковÑÑ
ÑÑнкÑий, еÑли в базе Ñ
ÑанÑÑÑÑ Ð´Ð°Ð½Ð½Ñе в кодиÑовке, неÑовмеÑÑимой Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹ локалÑÑ.
ÐаÑамеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ð¸ и кодиÑовка Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ Ñем, ÑÑо ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð² Ñаблоне, еÑли ÑолÑко ÑÑо не template0. ÐÑо огÑаниÑение обÑÑÑнÑеÑÑÑ Ñем, ÑÑо дÑÑгие Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
могÑÑ ÑодеÑжаÑÑ Ð´Ð°Ð½Ð½Ñе в кодиÑовке, оÑлиÑной Ð¾Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¹, или индекÑÑ, поÑÑдок ÑоÑÑиÑовки коÑоÑÑÑ
опÑеделÑÑÑÑÑ Ð¿Ð°ÑамеÑÑами LC_COLLATE и LC_CTYPE. ÐÑи копиÑовании ÑакиÑ
даннÑÑ
полÑÑиÑÑÑ Ð±Ð°Ð·Ð°, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑпоÑÑенной ÑоглаÑно новÑм паÑамеÑÑам локали. Ðднако template0 опÑеделÑнно не ÑодеÑÐ¶Ð¸Ñ ÐºÐ°ÐºÐ¸Ðµ-либо даннÑе или индекÑÑ, завиÑÑÑие Ð¾Ñ ÐºÐ¾Ð´Ð¸Ñовки или локали.
ÐгÑаниÑение CONNECTION LIMIT дейÑÑвÑÐµÑ ÑолÑко пÑиблизиÑелÑно; еÑли одновÑеменно запÑÑкаÑÑÑÑ Ð´Ð²Ð° ÑеанÑа, Ñогда как в базе оÑÑаÑÑÑÑ ÑолÑко одно «Ñвободное меÑÑо», Ð¼Ð¾Ð¶ÐµÑ Ñак ÑлÑÑиÑÑÑÑ, ÑÑо бÑдÑÑ Ð¾ÑÐºÐ»Ð¾Ð½ÐµÐ½Ñ Ð¾Ð±Ð° подклÑÑениÑ. ÐÑоме Ñого, ÑÑо огÑаниÑение не ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð½Ð° ÑÑпеÑполÑзоваÑелей и ÑоновÑе ÑабоÑие пÑоÑеÑÑÑ.
ÐÑимеÑÑ
Создание Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ :
CREATE DATABASE lusiadas;
Создание Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
sales, пÑинадлежаÑей полÑзоваÑÐµÐ»Ñ salesapp, Ñ ÑаблиÑнÑм пÑоÑÑÑанÑÑвом по ÑмолÑÐ°Ð½Ð¸Ñ salesspace:
CREATE DATABASE sales OWNER salesapp TABLESPACE salesspace;
Создание Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
music Ñ ÐºÐ¾Ð´Ð¸Ñовкой ISO-8859-1:
CREATE DATABASE music ENCODING 'LATIN1' TEMPLATE template0;
Ð ÑÑом пÑимеÑе пÑедложение TEMPLATE template0 бÑÐ´ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимÑм, ÑолÑко еÑли кодиÑовка template1 оÑлиÑаеÑÑÑ Ð¾Ñ ISO-8859-1. ÐамеÑÑÑе, ÑÑо пÑи Ñмене кодиÑовки Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ñакже вÑбÑаÑÑ Ð´ÑÑгие паÑамеÑÑÑ LC_COLLATE и LC_CTYPE.
СовмеÑÑимоÑÑÑ
ÐпеÑаÑÐ¾Ñ CREATE DATABASE оÑÑÑÑÑÑвÑÐµÑ Ð² ÑÑандаÑÑе SQL. ÐÐ°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑавнознаÑÐ½Ñ ÐºÐ°Ñалогам, а иÑ
Ñоздание в ÑÑандаÑÑе опÑеделÑеÑÑÑ ÑеализаÑией.