Иллюстрированный самоучитель по PostgreSQL

CREATE TABLE

Результаты:

  • CREATE. Сообщение выдается при успешном создании новой таблицы.
  • ERROR: Relation 'таблица' already exists. Ошибка – таблица с заданным именем уже существует.
  • ERROR: CREATE TABLE: attribute "поле" duplicated. Ошибка – поле включено в список дважды.
  • ERROR: Unable to locate type name 'тип' in catalog. Ошибка – заданный тип поля не существует.
  • ERROR: Illegal class name 'таблица'. Ошибка – имя таблицы начинается с префикса pg_.

Описание

Команда CREATE TABLE создает новую таблицу в текущей базе данных. Только что созданная таблица не содержит данных, а ее владельцем является пользователь, выполнивший команду CREATE TABLE.

В определении новой таблицы перечисляются все имена и типы полей (кроме полей, унаследованных от базовой таблицы). Имя таблицы может иметь длину до 31 символа и автоматически преобразуется к нижнему регистру, если оно не заключено в кавычки. Поле может относиться к стандартному типу данных (например, int4, char) или содержать массив (описывается стандартным типом данных с квадратными скобками – например, float4[]).

Для полей создаваемой таблицы могут устанавливаться разнообразные ограничения. Например, при установке ограничения NOT NULL поле не может содержать псевдозначений NULL.

Внимание
Имена таблиц не могут совпадать с именами существующих типов данных и таблиц системного каталога. Более того, они даже не могут начинаться с префикса pg_, зарезервированного для системных таблиц
.

Максимальное количество полей в таблице равно примерно 1600. С учетом проблем, связанных с размером записей, на практике это число оказывается несколько меньшим.

Дополнительная информация о создании таблиц приведена в главе 4. За информацией об ограничениях полей и таблиц обращайтесь к главе 7.

Пример

Следующая команда создает таблицу с именем shipments и устанавливает для поля id ограничения NOT NULL и DEFAULT.

booktown=# CREATE TABLE shipments (
booktown(# id integer NOT NULL DEFAULT nextval ('shipments_ship_id_seq').
booktown(# customer_id integer,
booktown(# isbn text,
booktown(# ship_date timestanp);
CREATE
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.