Перейти к содержанию

Работа с данными SQL

В данном разделе приведены примеры команд для работы с данными в Picodata с помощью команд языка SQL.

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

Для создания таблицы в Picodata следует сначала подключиться к интерактивной консоли инстанса.

Пользователи могут создавать как глобальные, так и шардированные таблицы (в последнем случае реализованы возможности распределенного SQL).

Для примера создадим таблицу со списком товаров на складе. В ней будут две колонки: идентификатор товара и его название:

CREATE TABLE warehouse (
            id INTEGER NOT NULL,
            item TEXT NOT NULL,
            PRIMARY KEY (id))
USING memtx DISTRIBUTED BY (id)
IN TIER default
OPTION (TIMEOUT = 3.0);

Помимо двух колонок, в примере указаны:

  • первичный ключ таблицы (колонка id)
  • движок хранения данных in-memory (memtx)
  • тип таблицы (шардированный, distributed by)
  • тир, на котором будет создана таблица. Данный параметр применим только к шардированным таблицам. Использование IN TIER опционально — по умолчанию шардированная таблица принадлежат тиру default
  • ключ шардирования таблицы (колонка id)
  • таймаут перед возвращением управления пользователю

Для того чтобы создать такую же, но глобальную таблицу, следует указать соответствующий тип:

CREATE TABLE warehouse_global (
            id INTEGER NOT NULL,
            item TEXT NOT NULL,
            PRIMARY KEY (id))
USING memtx DISTRIBUTED GLOBALLY
OPTION (TIMEOUT = 3.0);

Подробнее о типах таблиц см. в глоссарии.

Запись данных в таблицу

Запись данных, т.е. вставка строк, в таблицу происходит с помощью команды INSERT в SQL-запросе. В данный момент поддерживается запись только в шардированные таблицы. Можно использовать обычный запрос с прямой передачей значений:

INSERT INTO warehouse (id, item) VALUES (1, 'bricks');

Либо параметризированный запрос, но в Lua-режиме (\s l lua):

pico.sql(
    [[INSERT INTO warehouse (id, item) VALUES (?, ?)]],
    {1, 'bricks'}
);

См. подробнее о различиях в INSERT-запросах.

Чтение данных из таблицы

Для чтения всех данных из таблицы подойдет команда:

SELECT * FROM warehouse;

Можно вывести отдельно строку по известному полю:

SELECT * FROM warehouse WHERE id = 1;

См. подробнее о вариантах чтения данных в SQL.

Удаление данных

Удаление строки с известным id:

DELETE FROM warehouse WHERE id = 1;

В консоли будет выведено количество удаленных строк (в данном случае, это 1).

Приведенный выше пример поможет сделать первые шаги в работе с данными в Picodata. Подробнее о внутренней архитектуре кластера Picodata см. в разделе Жизненный цикл инстанса.

Параметры запуска из командной строки описаны в разделе Аргументы командной строки Picodata.