Практика на связи таблиц в Rust
Даны таблицы:
CREATE TABLE user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE post (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
);
INSERT INTO user (name) VALUES ('ann');
INSERT INTO user (name) VALUES ('bob');
INSERT INTO post (user_id, title) VALUES (1, 'pen');
INSERT INTO post (user_id, title) VALUES (1, 'book');
Напишите программу, которая выведет имя пользователя и заголовок каждого поста в одной строке результата.
Даны таблицы:
CREATE TABLE user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE post (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
);
INSERT INTO user (name) VALUES ('ann');
INSERT INTO user (name) VALUES ('bob');
INSERT INTO post (user_id, title) VALUES (1, 'pen');
Выведите всех пользователей. Для
"bob" покажите "no post",
если поста нет. Используйте
Option<String> для заголовка справа.
Даны таблицы:
CREATE TABLE post (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL
);
CREATE TABLE tag (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE post_tag (
post_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
FOREIGN KEY (post_id) REFERENCES post(id),
FOREIGN KEY (tag_id) REFERENCES tag(id)
);
INSERT INTO post (title) VALUES ('hello');
INSERT INTO tag (name) VALUES ('news');
INSERT INTO tag (name) VALUES ('draft');
INSERT INTO post_tag (post_id, tag_id) VALUES (1, 1);
INSERT INTO post_tag (post_id, tag_id) VALUES (1, 2);
Выведите заголовок поста и имя каждой его метки, проходя через таблицу связи.
Даны таблицы:
CREATE TABLE user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE post (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
);
CREATE TABLE tag (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE post_tag (
post_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
FOREIGN KEY (post_id) REFERENCES post(id),
FOREIGN KEY (tag_id) REFERENCES tag(id)
);
INSERT INTO user (name) VALUES ('ann');
INSERT INTO post (user_id, title) VALUES (1, 'note');
INSERT INTO tag (name) VALUES ('news');
INSERT INTO tag (name) VALUES ('draft');
INSERT INTO post_tag (post_id, tag_id) VALUES (1, 1);
INSERT INTO post_tag (post_id, tag_id) VALUES (1, 2);
Выведите имя пользователя, заголовок поста
и имя метки для каждой строки связи
post_tag.
Даны таблицы:
CREATE TABLE warehouse (
id INTEGER PRIMARY KEY,
code TEXT NOT NULL
);
CREATE TABLE bin (
id INTEGER PRIMARY KEY,
warehouse_id INTEGER NOT NULL,
label TEXT NOT NULL,
FOREIGN KEY (warehouse_id) REFERENCES warehouse(id)
);
Включите проверку внешних ключей, добавьте
склад "W1" и ячейку "A-01"
с корректным warehouse_id. Затем
попробуйте ячейку с warehouse_id
99 и выведите "rejected"
при ошибке.
Даны таблицы:
CREATE TABLE user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE post (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
);
INSERT INTO user (name) VALUES ('ann');
INSERT INTO user (name) VALUES ('bob');
INSERT INTO post (user_id, title) VALUES (1, 'pen');
INSERT INTO post (user_id, title) VALUES (2, 'lamp');
Выведите только посты пользователя
"ann" вместе с ее именем. Заголовки
постов других пользователей не должны
попасть в результат.