В этом учебном пособии вы узнаете, как использовать оператор CREATE TABLE в PostgreSQL с синтаксисом и примерами.
Описание
PostgreSQL оператор CREATE TABLE позволяет создавать и определять таблицу.
Синтаксис
В простейшем виде синтаксис для оператора CREATE TABLE в PostgreSQL:
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
);
Тем не менее, полный синтаксис для оператора CREATE TABLE в PostgreSQL:
| 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 .
1 2 3 4 5 6 7 |
CREATE TABLE order_details ( order_detail_id integer CONSTRAINT order_details_pk PRIMARY KEY, order_id integer NOT NULL, order_date date, quantity integer, notes varchar(200) ); |
Этот пример 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 следующим образом:
1 2 3 4 5 6 7 8 |
CREATE TABLE order_details ( order_detail_id integer NOT NULL, order_id integer NOT NULL, order_date date, quantity integer, notes varchar(200), CONSTRAINT order_details_pk PRIMARY KEY (order_detail_id) ); |
Разница между двумя операторами CREATE TABLE заключается в том, как определяется PRIMARY KEY. Оба метода приемлемы в PostgreSQL.
Далее, давайте создадим таблицу, которая имеет ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ.
1 2 3 4 5 6 7 8 |
CREATE TABLE order_details ( order_detail_id integer NOT NULL, order_id integer NOT NULL, order_date date, quantity integer, notes varchar(200) NOT NULL DEFAULT 'Standard shipping', CONSTRAINT order_details_pk PRIMARY KEY (order_detail_id) ); |
Этот пример 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.