Операции с таблицами
-
CREATE TABLE— Создание новой таблицы -
INSERT— Добавление данных в таблицу -
DROP TABLE— Удаление таблицы -
TRUNCATE TABLE— Удаление всех строк из таблицы -
SHOW TABLES— Вывод списка всех таблиц -
DESCRIBE TABLE— Вывод информации о таблице
Создание новой таблицы
CREATE [OR REPLACE] TABLE [IF NOT EXISTS] [<table_schema>.]<table_name>
(<column_name> <column_type>
[NOT NULL] [DEFAULT <default_expr>]
[GENERATED BY DEFAULT AS IDENTITY] [GENERATED ALWAYS AS IDENTITY],
...
)
[WITH (<table_param>, ... )]
Создает новую таблицу с указанным именем и указанными столбцами.
CREATE [OR REPLACE] TABLE [IF NOT EXISTS] [<table_schema>.]<table_name> AS
<select_expr>
[WITH (<table_param>, ... )]
Создает новую таблицу с указанным именем на основе результата запроса SELECT.
Параметры
-
<table_name>— имя создаваемой таблицы
-
<table_schema>— схема создаваемой таблицы
-
<column_name>— имя столбца создаваемой таблицы
-
<column_type>— тип данных столбца создаваемой таблицы (см. раздел Типы данных)
-
NOT NULL— данный столбец не принимает значенияNULL
-
DEFAULT <default_expr>— константа или константное выражение по умолчанию
-
GENERATED BY DEFAULT AS IDENTITY— данный столбец является столбцом идентификации, то есть значения для него по умолчанию автоматически генерируется из неявной последовательности. Если командаINSERTвыполняется для таблицы со столбцом идентификации и значение для этого столбца не указано явно, то в этот столбец вставляется значение, сгенерированное неявной последовательностью.Посмотреть пример
Создадим таблицу
my_tableс двумя столбцами. Столбецidзададим как столбец идентификации (автоинкремент). Вставим в другой столбец числа от 5 до 10 с помощью функцииgenerate_series. В итоге в столбец идентификации автоматически вставятся значения.CREATE TABLE my_table ( id INT GENERATED BY DEFAULT AS IDENTITY, numbers INT, ); INSERT INTO my_table (numbers) SELECT unnest(generate_series(5,10)); SELECT * FROM my_table;+----+---------+ | id | numbers | +----+---------+ | 0 | 5 | +----+---------+ | 1 | 6 | +----+---------+ | 2 | 7 | +----+---------+ | 3 | 8 | +----+---------+ | 4 | 9 | +----+---------+ | 5 | 10 | +----+---------+
-
<select_expr>— выражениеSELECT, результат выполнения которого будет записан в создаваемую таблицу
-
<table_param>— параметры создаваемой таблицыtable_param ::= [<name> = <value>]Возможные значения:
-
snapshot_ttl = <duration>— глубина хранения снапшотов (версий таблицы).
По умолчанию: 7 дней, но не более 1000 снапшотов.
Например:'1 week','2 days','4 days 3 hours 5 minutes 30 seconds' -
order_by = <column_name>— столбец для сортировки, используемый для уплотнения данных таблицы. Данные в таблице хранятся с произвольной сортировкой, упорядоченность не гарантируется.
-
Если указан модификатор OR REPLACE, то конечное действие эквивалентно удалению существующей таблицы и созданию новой с тем же именем.
Опциональный модификатор IF NOT EXISTS ограничивает запрос только теми случаями, в которых указанный объект еще не существует.
| Модификаторы являются взаимоисключающими. Если указать их оба, это приведет к ошибке. |
Добавление данных в таблицу
INSERT INTO <target_table> [ ( <target_col_name> [ , ... ] ) ]
{
VALUES ( { <value> | DEFAULT | NULL } [ , ... ] ) [ , ( ... ) ] |
<query>
}
Обновляет таблицу, вставляя в нее одну или несколько строк. Значения, вставляемые в каждый столбец таблицы, могут быть указаны явно или получены из вложенного запроса.
Параметры
-
<target_table>— имя целевой таблицы, в которую будут вставлены строки
-
VALUES ( value | DEFAULT | NULL [ , … ] ) [ , ( … ) ]— указывает одно или несколько значений для вставки в соответствующие столбцы целевой таблицы.-
value— явно указанное значение; может быть литералом или выражением. -
DEFAULT— значение по умолчанию для соответствующего столбца целевой таблицы. -
NULL— пустое значение.
Значения разделяются запятыми.
Вы можете вставить несколько строк, указав дополнительные наборы значений в выражении.
-
-
query— запрос, который возвращает значения для вставки в соответствующие столбцы. Это позволяет вставлять строки в целевую таблицу из одной или нескольких исходных таблиц.
Пример вставки явно заданных значений
Вставим в таблицу capitals значения для столбцов country и capital:
CREATE TABLE capitals (country VARCHAR, capital VARCHAR);
INSERT INTO capitals VALUES
('Russia', 'Moscow'),
('Italy', 'Rome'),
('Spain', 'Madrid'),
('France', 'Paris');
SELECT * FROM capitals;
+---------+---------+
| country | capital |
+---------+---------+
| France | Paris |
+---------+---------+
| Italy | Rome |
+---------+---------+
| Russia | Moscow |
+---------+---------+
| Spain | Madrid |
+---------+---------+
Пример вставки результатов вложенного запроса
Теперь создадим другую таблицу capitals_m и сделаем вставку строк из capitals, которые будут результатом вложенного запроса SELECT. Вставим такие строки из capitals, в которых значение capital содержит M.
CREATE TABLE capitals_m (country VARCHAR, capital VARCHAR);
INSERT INTO capitals_m (country, capital)
SELECT * FROM capitals
WHERE capital LIKE '%M%';
SELECT * FROM capitals_m;
+---------+---------+
| country | capital |
+---------+---------+
| Russia | Moscow |
+---------+---------+
| Spain | Madrid |
+---------+---------+
Удаление таблицы
DROP TABLE [IF EXISTS] <table_name>;
Удаляет таблицу с указанным именем.
Опциональный модификатор IF EXISTS ограничивает запрос только теми случаями, в которых указанный объект существует.
Удаление всех строк из таблицы
TRUNCATE TABLE [IF EXISTS] <table_name>;
Удаляет все строки из таблицы, но не удаляет саму таблицу (сохраняются колонки, типы данных колонок, привилегии на таблицу).
Опциональный модификатор IF EXISTS ограничивает запрос только теми случаями, в которых указанный объект существует.