2.3. Создание таблицы #
Вы можете создать таблицу, указав её имя и перечислив все имена столбцов и их типы.
2.3.1. Создание сегментированных таблиц #
Создайте сегментированную таблицу и проверьте, всё ли работает корректно.
postgres=# create table x(id int primary key, t text) with (distributed_by='id',num_parts=2); CREATE TABLE postgres=# \d List of relations Schema | Name | Type | Owner --------+---------+-------------------+---------- public | x | partitioned table | postgres public | x_0 | table | postgres public | x_1_fdw | foreign table | postgres (3 rows) postgres=# \d x_0 Table "public.x_0" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | t | text | | | Partition of: x FOR VALUES WITH (modulus 2, remainder 0) Indexes: "x_0_pkey" PRIMARY KEY, btree (id) postgres=# \d x_1_fdw Foreign table "public.x_1_fdw" Column | Type | Collation | Nullable | Default | FDW options --------+---------+-----------+----------+---------+------------- id | integer | | not null | | t | text | | | | Partition of: x FOR VALUES WITH (modulus 2, remainder 1) Server: shardman_rg_2 FDW options: (table_name 'x_1') postgres=# insert into x values (1,'t'),(2,'t'),(3,'t'); INSERT 0 3 postgres=# select * from x_0; id | t ----+--- 1 | t 2 | t (2 rows) postgres=# select * from x_1_fdw; id | t ----+--- 3 | t (1 row)
Всё работает так, как и ожидалось.
2.3.2. Создание обычных таблиц #
Для обычных таблиц:
CREATE TABLE weather ( city varchar(80), temp_lo int, -- минимальная температура дня temp_hi int, -- максимальная температура дня prcp real, -- уровень осадков date date );
Весь этот текст можно ввести в psql
вместе с символами перевода строк. psql
понимает, что команда продолжается до точки с запятой.
В командах SQL можно свободно использовать пробельные символы (пробелы, табуляции и переводы строк). Это значит, что вы можете ввести команду, выровняв её по-другому или даже уместив в одной строке. Два минуса («--
») обозначают начало комментария. Всё, что идёт за ними до конца строки, игнорируется. SQL не чувствителен к регистру в ключевых словах и идентификаторах, за исключением идентификаторов, взятых в кавычки (в данном случае это не так).
varchar(80)
определяет тип данных, допускающий хранение произвольных символьных строк длиной до 80 символов. int
— обычный целочисленный тип. real
— тип для хранения чисел с плавающей точкой одинарной точности. date
— тип даты. (Да, столбец типа date
также называется date
. Это может быть удобно или вводить в заблуждение — как посмотреть.)
Postgres Pro поддерживает стандартные типы SQL: int
, smallint
, real
, double precision
, char(
, N
)varchar(
, N
)date
, time
, timestamp
и interval
, а также другие универсальные типы и богатый набор геометрических типов. Кроме того, Postgres Pro можно расширять, создавая набор собственных типов данных. Как следствие, имена типов не являются ключевыми словами в данной записи, кроме тех случаев, когда это требуется для реализации особых конструкций стандарта SQL.
Во втором примере мы сохраним в таблице города и их географическое положение:
CREATE TABLE cities ( name varchar(80), location point );
Здесь point
— пример специфического типа данных Postgres Pro.
Наконец, следует сказать, что если вам больше не нужна какая-либо таблица, или вы хотите пересоздать её по-другому, вы можете удалить её, используя следующую команду:
DROP TABLE имя_таблицы
;