Практика на связи таблиц в Go
Даны таблицы:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (id)
);
INSERT INTO users (name) VALUES ('ann');
INSERT INTO users (name) VALUES ('bob');
INSERT INTO orders (user_id, title) VALUES (1, 'pen');
INSERT INTO orders (user_id, title) VALUES (1, 'book');
Напишите программу, которая выведет имя пользователя и название каждого заказа в одной строке результата.
Даны таблицы:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (id)
);
INSERT INTO users (name) VALUES ('ann');
INSERT INTO users (name) VALUES ('bob');
INSERT INTO orders (user_id, title) VALUES (1, 'pen');
Выведите всех пользователей. Для
"bob" покажите "no order",
если заказа нет. Используйте
sql.NullString для названия справа.
Даны таблицы:
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE courses (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL
);
CREATE TABLE student_course (
student_id INTEGER NOT NULL,
course_id INTEGER NOT NULL,
FOREIGN KEY (student_id) REFERENCES students (id),
FOREIGN KEY (course_id) REFERENCES courses (id)
);
INSERT INTO students (name) VALUES ('ann');
INSERT INTO courses (title) VALUES ('go');
INSERT INTO courses (title) VALUES ('sql');
INSERT INTO student_course (student_id, course_id) VALUES (1, 1);
INSERT INTO student_course (student_id, course_id) VALUES (1, 2);
Выведите имя студента и название каждого его курса, проходя через таблицу связи.
Даны таблицы:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE goods (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
good_id INTEGER NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (id),
FOREIGN KEY (good_id) REFERENCES goods (id)
);
INSERT INTO users (name) VALUES ('ann');
INSERT INTO goods (title) VALUES ('pen');
INSERT INTO goods (title) VALUES ('book');
INSERT INTO orders (user_id, good_id) VALUES (1, 1);
INSERT INTO orders (user_id, good_id) VALUES (1, 2);
Выведите имя пользователя, номер заказа
и название товара для каждой строки
orders.
Даны таблицы:
CREATE TABLE warehouses (
id INTEGER PRIMARY KEY,
code TEXT NOT NULL
);
CREATE TABLE bins (
id INTEGER PRIMARY KEY,
warehouse_id INTEGER NOT NULL,
label TEXT NOT NULL,
FOREIGN KEY (warehouse_id) REFERENCES warehouses (id)
);
Включите проверку внешних ключей, добавьте
склад "W1" и ячейку "A-01"
с корректным warehouse_id. Затем
попробуйте ячейку с warehouse_id
99 и выведите "rejected"
при ошибке.
Даны таблицы:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (id)
);
INSERT INTO users (name) VALUES ('ann');
INSERT INTO users (name) VALUES ('bob');
INSERT INTO orders (user_id, title) VALUES (1, 'pen');
INSERT INTO orders (user_id, title) VALUES (2, 'lamp');
Выведите только заказы пользователя
"ann" вместе с ее именем. Названия
заказов других пользователей не должны
попасть в результат.