Заполняем список желаний
Таблица готова, давайте заполним её. Перед запуском списка желаний магазин попросил нескольких покупателей его испробовать, и они сохранили свои первые желания. Одни пожелали игры, которые потом купили, другие — игры, которые так и не купили. Несколько человек пожелали Robot Rebellion и Mystery Manor, которые ещё не вышли, а двое из них, Henry Scott и Max Baker, вообще ни разу ничего не заказывали.
В редакторе вы найдёте файл проекта с решением прошлого упражнения. Начиная с этого упражнения запросы предыдущих закомментированы, чтобы в результатах были только новые. CREATE TABLE (а скоро и INSERT) продолжает выполняться, потому что каждый запуск начинается со свежей базы данных.
Напоминание: один INSERT может добавить много строк. После названия таблицы в скобках перечислите столбцы, а после VALUES напишите по паре скобок для каждой строки, через запятую. Текст и даты пишутся в одинарных кавычках:
INSERT INTO reviews (game_id, customer_id, stars, comment)
VALUES
(9, 4, 4, 'Great puzzles.'),
(4, 7, 5, NULL);Теперь в дело вступают правила, которые вы задали таблице. Желание несуществующего покупателя, например (99, 1, '2025-06-01'), останавливает INSERT с ошибкой FOREIGN KEY constraint failed. Одна и та же игра дважды в одном списке останавливает его с ошибкой UNIQUE constraint failed: wishlist.customer_id, wishlist.game_id: первичный ключ не допускает двух строк с одинаковыми значениями, как и UNIQUE, поэтому в сообщении названы оба его столбца. А если одна строка INSERT нарушает правило, проваливается вся инструкция и ни одна её строка не добавляется.
Типичная ошибка: дата без кавычек. Для SQLite 2025-10-01 — не дата, а вычисление: 2025 минус 10 минус 1, и желание получило бы дату 2014. Никакой ошибки при этом нет: таблица STRICT молча превращает число в текст '2014', ведь по пути ничего не теряется. Даты всегда пишите в кавычках.
Людям таблица из ID читается плохо. Чтобы увидеть, кто какую игру хочет, соедините список желаний с customers (по customer_id) и с games (по game_id), как вы учились в уроке об объединении таблиц. С короткими псевдонимами таблиц, такими как w, c и g, запрос остаётся читаемым.
Задание
- 1
Под комментарием
-- 2. Заполнение списка желанийнапишите одинINSERT, который добавит в список желаний эти 15 строк (столбцыcustomer_id,game_idиadded):(1, 8, '2025-10-01'), (1, 18, '2025-03-02'), (2, 15, '2025-11-15'), (2, 19, '2025-07-19'), (3, 15, '2025-11-16'), (5, 1, '2025-01-10'), (5, 7, '2025-02-01'), (6, 5, '2024-05-20'), (7, 18, '2025-04-11'), (9, 1, '2025-06-30'), (10, 15, '2025-11-20'), (12, 18, '2025-05-10'), (12, 19, '2025-05-10'), (13, 10, '2025-08-25'), (14, 8, '2025-10-05')Затем проверьте, что все они на месте: под
INSERTпокажите количество строк в таблице в столбце с именемall_wishes:all_wishes 15 - 2
Теперь покажите список желаний так, чтобы его могли прочитать люди: имя покупателя, название игры и дату добавления (столбцы
name,titleиadded), отсортированные по имени, а затем по названию. Он начинается так:name title added Ava Green Dragon Forge 2025-01-10 Ava Green Star Pilots 2025-02-01 Emma Clark Goal Rush 2025-10-01 Emma Clark Robot Rebellion 2025-03-02 … … …