Запись в базу в Rust
В этих задачах потренируем вставку, изменение и удаление. Схема и начальные строки заданы в блоке данных без готового текста команд записи.
Дана таблица:
let setup = r#"
CREATE TABLE breeds (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL
);
"#;
Вставьте "poodle" и "husky",
затем выведите COUNT(*).
Дана таблица:
let setup = r#"
CREATE TABLE rates (
id INTEGER PRIMARY KEY,
code TEXT NOT NULL,
value REAL NOT NULL
);
INSERT INTO rates (code, value) VALUES ('usd', 1);
INSERT INTO rates (code, value) VALUES ('eur', 0.92);
"#;
Измените value для "eur"
на 0.95 и выведите новое значение
одной прочитанной строкой.
Дана таблица:
let setup = r#"
CREATE TABLE inbox (
id INTEGER PRIMARY KEY,
subject TEXT NOT NULL,
seen INTEGER NOT NULL
);
INSERT INTO inbox (subject, seen) VALUES ('hello', 1);
INSERT INTO inbox (subject, seen) VALUES ('spam', 0);
INSERT INTO inbox (subject, seen) VALUES ('bill', 0);
"#;
Удалите строки, где seen равно
0, и выведите оставшееся
COUNT(*).
Дана таблица:
let setup = r#"
CREATE TABLE coupons (
id INTEGER PRIMARY KEY,
code TEXT NOT NULL,
used INTEGER NOT NULL
);
INSERT INTO coupons (code, used) VALUES ('save10', 0);
"#;
Вставьте "save20" с used
0 через параметры со знаком
вопроса и выведите COUNT(*)
после вставки.
Дана таблица:
let setup = r#"
CREATE TABLE ledger (
id INTEGER PRIMARY KEY,
label TEXT NOT NULL,
balance REAL NOT NULL
);
INSERT INTO ledger (label, balance) VALUES ('cash', 100);
INSERT INTO ledger (label, balance) VALUES ('card', 50);
"#;
В одной транзакции уменьшите balance
"cash" на 30 и увеличьте
"card" на 30. Оба шага
либо записываются, либо отменяются
вместе. После фиксации выведите баланс
"cash".
Дана таблица:
let setup = r#"
CREATE TABLE drafts (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
status TEXT NOT NULL
);
INSERT INTO drafts (title, status) VALUES ('plan', 'new');
INSERT INTO drafts (title, status) VALUES ('notes', 'new');
"#;
Поставьте status "done"
только для "plan", вставьте
новую строку "review" со
status "new" и выведите
COUNT(*) строк со status
"new".
Дана таблица:
let setup = r#"
CREATE TABLE stock (
id INTEGER PRIMARY KEY,
sku TEXT NOT NULL,
qty INTEGER NOT NULL
);
INSERT INTO stock (sku, qty) VALUES ('wire', 4);
INSERT INTO stock (sku, qty) VALUES ('tape', 1);
"#;
Увеличьте qty для "wire"
на 2 и уменьшите для
"tape" на 1. Выведите
сумму qty по всей таблице.
Дана таблица:
let setup = r#"
CREATE TABLE archive (
id INTEGER PRIMARY KEY,
tag TEXT NOT NULL
);
INSERT INTO archive (tag) VALUES ('old');
INSERT INTO archive (tag) VALUES ('tmp');
INSERT INTO archive (tag) VALUES ('old');
"#;
Удалите строки с tag "tmp",
вставьте "new" и выведите
COUNT(*).