Операции с таблицами

  • CREATE TABLE — Создание новой таблицы

  • INSERT TABLE — Добавление данных в таблицу

  • DROP TABLE — Удаление таблицы

  • SHOW TABLES — Вывод списка всех таблиц

Создание новой таблицы

CREATE [OR REPLACE] TABLE [IF NOT EXISTS] [<table_schema>.]<table_name>
    (<column_name> <column_type>
        [NOT NULL] [DEFAULT <default_expr>],
    ...
    )
    [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_expr> — константа или константное выражение по умолчанию


  • <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 ограничивает запрос только теми случаями, в которых указанный объект существует.

Вывод списка всех таблиц

SHOW TABLES;

Выводит список всех существующих таблиц.