CREATE DATABASE

Создание новой базы данных.

Синтаксис

CREATE DATABASE name [ [WITH] [OWNER [=] user_name]
                [TEMPLATE [=] template]
                [ENCODING [=] encoding]
                [LC_COLLATE [=] lc_collate]
                [LC_CTYPE [=] lc_ctype]
                [TABLESPACE [=] tablespace]
                [CONNECTION LIMIT [=] connlimit ] ]

Описание

Команда CREATE DATABASE создаёт новую базу данных. Чтобы создать базу данных, вы должны быть суперпользователем или обладать специальными привилегиями CREATEDB.

По умолчанию создатель становится владельцем новой базы данных. Суперпользователи могут использовать предложение OWNER для создания баз данных, принадлежащих другим пользователям. Они могут даже создавать базы данных, принадлежащие пользователям без специальных привилегий. Несуперпользователи с привилегией CREATEDB могут создавать только базы данных, которыми они владеют.

По умолчанию новая база данных создаётся путём клонирования стандартной системной базы-шаблона template1. Другие шаблоны можно указать с помощью параметра TEMPLATE. В частности, используя TEMPLATE template0, можно создать «чистую» базу данных, содержащую только стандартные объекты, определённые системой YMatrix. Эта возможность полезна, если требуется избежать копирования локальных объектов, которые могли быть добавлены в template1.

Параметры

name

  • Имя создаваемой базы данных.

user_name

  • Имя пользователя, который будет владельцем новой базы данных, либо DEFAULT — использовать владельца по умолчанию (пользователя, выполняющего команду).

template

  • Имя шаблона, на основе которого будет создана новая база данных, либо DEFAULT — использовать шаблон по умолчанию (template1).

encoding

  • Кодировка символов, используемая в новой базе данных. Указывается строковая константа (например, 'SQL_ASCII'), числовое значение кодировки или DEFAULT для использования кодировки по умолчанию. Подробнее см. в разделе Поддержка наборов символов.

lc_collate

  • Параметр локали (LC_COLLATE), используемый в новой базе данных. Влияет на порядок сортировки строк, например, при выполнении запросов с ORDER BY и в индексах текстовых столбцов. По умолчанию используется значение LC_COLLATE из базы-шаблона. Дополнительные ограничения описаны в примечаниях ниже.

lc_ctype

  • Классификация символов (LC_CTYPE), используемая в новой базе данных. Определяет категории символов, такие как нижний регистр, верхний регистр и цифры. По умолчанию используется значение LC_CTYPE из базы-шаблона. Дополнительные ограничения см. ниже.

tablespace

  • Имя табличного пространства, которое будет связано с новой базой данных, либо DEFAULT — использовать табличное пространство базы-шаблона. Это табличное пространство станет табличным пространством по умолчанию для объектов, созданных в этой базе данных.

connlimit

  • Максимальное количество одновременных подключений. Значение по умолчанию -1 означает отсутствие ограничений.

Примечания

CREATE DATABASE нельзя выполнять внутри блока транзакции.

При создании копии базы данных с использованием имени существующей базы в качестве шаблона, другие сессии не могут подключаться к этой базе-шаблону в процессе копирования. Новые подключения к базе-шаблону блокируются до завершения команды CREATE DATABASE.

Для суперпользователей ограничение CONNECTION LIMIT не является обязательным.

Кодировка символов, указанная для новой базы данных, должна быть совместима с выбранными параметрами локали (LC_COLLATE и LC_CTYPE). Если локаль C (или эквивалент POSIX), разрешены все кодировки, но при других значениях локали работает только одна соответствующая кодировка. Суперпользователи могут указать кодировку SQL_ASCII независимо от локали, однако этот вариант не рекомендуется и может вызвать ошибки в строковых функциях, если кодировка несовместима с локалью.

Параметры кодировки и локали должны совпадать с параметрами базы-шаблона, за исключением случая, когда в качестве шаблона используется template0. Это связано с тем, что COLLATE и CTYPE влияют на порядок в индексах, поэтому любой индекс, скопированный из базы-шаблона, окажется недействительным в новой базе с другими настройками. Однако известно, что template0 не содержит данных или индексов, чувствительных к таким изменениям.

Примеры

Создание новой базы данных:

CREATE DATABASE test;

Создание базы данных 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.

Совместимость

В стандарте SQL отсутствует оператор CREATE DATABASE. База данных эквивалентна каталогу, а создание каталога реализуется через его определение.

См. также

ALTER DATABASE , DROP DATABASE