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 <name>.
Например, написав TEMPLATE template0, вы можете создать чистую базу данных, содержащую только стандартные объекты, предопределенные Greengage DB.
Это может быть полезно, если вы хотите избежать копирования любых локальных объектов установки, которые могли быть добавлены в template1.
Параметры
| Параметр | Описание |
|---|---|
name |
Имя создаваемой базы данных |
user_name |
Имя пользователя базы данных, который будет владельцем новой базы данных, или |
template |
Имя шаблона, из которого создается новая база данных, или |
encoding |
Кодировка набора символов для использования в новой базе данных.
Укажите строковую константу (например, |
lc_collate |
Порядок сортировки ( |
lc_ctype |
Классификация символов ( |
tablespace |
Имя табличного пространства, которое будет связано с новой базой данных, или |
connlimit |
Максимальное количество возможных одновременных подключений.
Значение по умолчанию |
Примечания
CREATE DATABASE нельзя выполнять внутри блока транзакции.
При копировании базы данных путем указания ее имени в качестве шаблона никакие другие сессии не могут быть подключены к шаблонной базе данных во время копирования.
Новые подключения к шаблонной базе данных блокируются до завершения CREATE DATABASE.
Ограничение CONNECTION LIMIT не применяется к суперпользователям.
Кодировка набора символов, указанная для новой базы данных, должна быть совместима с выбранными настройками локали (LC_COLLATE и LC_CTYPE).
Если локаль — C (или эквивалентно POSIX), то разрешены все кодировки, но для других настроек локали существует только одна кодировка, которая будет работать правильно.
Команда CREATE DATABASE позволяет суперпользователям указывать кодировку SQL_ASCII независимо от настроек локали, но этот выбор устарел и может привести к неправильному поведению строковых функций, если в базе данных хранятся данные, не совместимые по кодировке с локалью.
Настройки кодировки и локали должны совпадать с настройками шаблонной базы данных, за исключением случаев, когда в качестве шаблона используется template0.
Это связано с тем, что COLLATE и CTYPE влияют на упорядочивание в индексах, поэтому любые индексы, скопированные из шаблонной базы данных, будут недействительны в новой базе данных с другими настройками.
При этом template0 по определению не содержит пользовательских данных и индексов, которые могли бы зависеть от настроек локали.
Примеры
Создать новую базу данных:
CREATE DATABASE gpdb;
Создать базу данных 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.
Базы данных эквивалентны каталогам, создание которых определяется реализацией.