PostgreSQL оператор CREATE TABLE

В этом учебном пособии вы узнаете, как использовать оператор CREATE TABLE в PostgreSQL с синтаксисом и примерами.

Описание

PostgreSQL оператор CREATE TABLE позволяет создавать и определять таблицу.

Синтаксис

В простейшем виде синтаксис для оператора CREATE TABLE в PostgreSQL:

CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);

Тем не менее, полный синтаксис для оператора CREATE TABLE в PostgreSQL:

CREATE [ [ GLOBAL TEMPORARY
| GLOBAL TEMP
| LOCAL TEMPORARY
| LOCAL TEMP
| UNLOGGED ]
TABLE [IF NOT EXISTS] table_name
(
column1 datatype [ COLLATE collation ]
[ CONSTRAINT constraint_name ]
{ NULL
| NOT NULL
| CHECK ( expression ) [ NO INHERIT ]
| DEFAULT default_value
| UNIQUE index_parameters
| PRIMARY KEY index_parameters
| REFERENCES ref_table [ ( ref_column ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ]
[ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ],

column2 datatype [ COLLATE collation ]
[ CONSTRAINT constraint_name ]
{ NULL
| NOT NULL
| CHECK ( expression ) [ NO INHERIT ]
| DEFAULT default_value
| UNIQUE index_parameters
| PRIMARY KEY index_parameters
| REFERENCES ref_table [ ( ref_column ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ]
[ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ],

...

| [ CONSTRAINT constraint_name ]
{ CHECK ( expression ) [ NO INHERIT ]
| UNIQUE ( index_col_name,... )
| PRIMARY KEY ( index_col_name,... )
| FOREIGN KEY ( index_col_name,... )
REFERENCES another_table_name (index_col_name,...)
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE action ]
[ ON UPDATE action ]

| LIKE source_table
{ INCLUDING | EXCLUDING }
{ DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | ALL }

[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]

);

Параметры или аргументы

GLOBAL TEMPORARY and GLOBAL TEMP
Необязательный. Если один из них указан, таблица является глобальной временной таблицей.
LOCAL TEMPORARY and LOCAL TEMP
Необязательный. Если один из них указан, таблица является локальной временной таблицей.
UNLOGGED
Необязательный. Если указано, данные в таблице не записываются в журнал предварительной записи. Это повышает производительность таблицы, однако данные в этой таблице будут потеряны в случае сбоя.
IF NOT EXISTS
Необязательный. Если указано, инструкция CREATE TABLE не вызовет ошибку, если таблицы уже существуют.
table_name
Имя таблицы, которую вы хотите создать.
column1, column2
Столбцы, которые вы хотите создать в таблице.
datatype
Тип данных для столбца.
CONSTRAINT constraint_name
Необязательный. Название ограничения.
NULL or NOT NULL
Каждый столбец должен быть определен как NULL или NOT NULL. Если этот параметр опущен, база данных принимает NULL в качестве значения по умолчанию.
DEFAULT default_value
Необязательный. Это значение, присваиваемое столбцу, если оно оставлено пустым или равно NULL.

Пример

Рассмотрим на PostgreSQL пример CREATE TABLE .

Этот пример PostgreSQL CREATE TABLE создает таблицу с именем order_details, которая имеет 5 столбцов и один первичный ключ:

  • Первый столбец называется order_detail_id, который создается как тип данных integer и не может содержать значения NULL, поскольку он является первичным ключом таблицы.
  • Второй столбец называется order_id, который является типом данных integer и не может содержать значения NULL.
  • Третий столбец называется order_date, который является типом данных date и может содержать значения NULL.
  • Четвертый столбец называется amount, который является типом данных integer и может содержать значения NULL.
  • Пятый столбец называется notes, который является типом данных varchar (максимум 200 символов в длину) и может содержать значения NULL.
  • Первичный ключ называется order_details_pk и имеет значение для столбца order_detail_id.

В качестве альтернативы вы могли бы написать оператор CREATE TABLE следующим образом:

Разница между двумя операторами CREATE TABLE заключается в том, как определяется PRIMARY KEY. Оба метода приемлемы в PostgreSQL.
Далее, давайте создадим таблицу, которая имеет ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ.

Этот пример PostgreSQL CREATE TABLE создает таблицу с именем order_details, которая имеет 5 столбцов и один первичный ключ:

  • Первый столбец называется order_detail_id, который создается как тип данных integer и не может содержать значение NULL.
  • Второй столбец называется order_id, который является типом данных integer и не может содержать значения NULL.
  • Третий столбец называется order_date, который является типом данных date и может содержать значения NULL.
  • Четвертый столбец называется amount, который является типом данных integer и может содержать значения NULL.
  • Пятый столбец называется notes, который является типом данных varchar (максимум 200 символов в длину) и не может содержать значения NULL. Если для этого столбца не указано значение, ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ будет 'Standard shipping'.
  • Первичный ключ называется order_details_pk и имеет значение для столбца order_detail_id.