Смешанная практика базы в Go
В этих задачах смешаем выборку, связь и запись. Таблицы заданы текстом создания и вставки.
Дана таблица:
CREATE TABLE bins (
id INTEGER PRIMARY KEY,
sku TEXT NOT NULL,
qty INTEGER NOT NULL
);
INSERT INTO bins (sku, qty) VALUES ('wire', 4);
INSERT INTO bins (sku, qty) VALUES ('tape', 1);
Вставьте "bolt" с qty
10, затем выведите sku
с наибольшим qty.
Даны таблицы:
CREATE TABLE teams (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE members (
id INTEGER PRIMARY KEY,
team_id INTEGER NOT NULL,
nick TEXT NOT NULL,
FOREIGN KEY (team_id) REFERENCES teams (id)
);
INSERT INTO teams (name) VALUES ('alpha');
INSERT INTO members (team_id, nick) VALUES (1, 'ann');
INSERT INTO members (team_id, nick) VALUES (1, 'bob');
Выведите название команды и псевдоним
каждого участника. Затем вставьте
участника "kim" в "alpha"
и снова выведите COUNT(*)
в members.
Даны таблицы:
CREATE TABLE projects (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL
);
CREATE TABLE tasks (
id INTEGER PRIMARY KEY,
project_id INTEGER NOT NULL,
label TEXT NOT NULL,
done INTEGER NOT NULL,
FOREIGN KEY (project_id) REFERENCES projects (id)
);
INSERT INTO projects (title) VALUES ('site');
INSERT INTO tasks (project_id, label, done) VALUES (1, 'layout', 1);
INSERT INTO tasks (project_id, label, done) VALUES (1, 'forms', 0);
Выведите заголовок проекта и подпись
каждой задачи, где done равно
0.
Даны таблицы:
CREATE TABLE carriers (
id INTEGER PRIMARY KEY,
code TEXT NOT NULL
);
CREATE TABLE parcels (
id INTEGER PRIMARY KEY,
carrier_id INTEGER NOT NULL,
weight REAL NOT NULL,
FOREIGN KEY (carrier_id) REFERENCES carriers (id)
);
INSERT INTO carriers (code) VALUES ('fast');
INSERT INTO carriers (code) VALUES ('slow');
INSERT INTO parcels (carrier_id, weight) VALUES (1, 2.5);
INSERT INTO parcels (carrier_id, weight) VALUES (1, 1);
INSERT INTO parcels (carrier_id, weight) VALUES (2, 4);
Для каждого кода перевозчика выведите
сумму weight после связи
таблиц и группировки.
Дана таблица:
CREATE TABLE sessions (
id INTEGER PRIMARY KEY,
user_name TEXT NOT NULL,
minutes INTEGER NOT NULL
);
INSERT INTO sessions (user_name, minutes) VALUES ('ann', 20);
INSERT INTO sessions (user_name, minutes) VALUES ('ann', 15);
INSERT INTO sessions (user_name, minutes) VALUES ('bob', 10);
Удалите строки "bob", вставьте
для "ann" еще 5 минут
и выведите сумму minutes
для "ann".
Даны таблицы:
CREATE TABLE labs (
id INTEGER PRIMARY KEY,
room TEXT NOT NULL
);
CREATE TABLE samples (
id INTEGER PRIMARY KEY,
lab_id INTEGER NOT NULL,
tag TEXT NOT NULL,
FOREIGN KEY (lab_id) REFERENCES labs (id)
);
INSERT INTO labs (room) VALUES ('101');
INSERT INTO labs (room) VALUES ('102');
INSERT INTO samples (lab_id, tag) VALUES (1, 'a1');
Выведите комнату и метку каждого образца.
Для комнаты "102" покажите
"none", если образца нет.
Оставь строку слева, даже если справа
пусто.