Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified task-1/books_library.db
Binary file not shown.
31 changes: 31 additions & 0 deletions task-1/queries.sql
Original file line number Diff line number Diff line change
@@ -1,20 +1,51 @@
---- Queries


-- **Question 1** — List the title and published year of every book in the `'Science Fiction'` genre, ordered by published year (oldest first).
SELECT title, published_year
FROM books
WHERE genre = 'Science Fiction'
ORDER BY published_year ASC;

-- **Question 2** — Show every book published before 1950. Display the title and year only.
SELECT title, published_year
FROM books
WHERE published_year < 1950

-- **Question 3** — Show every book in the database along with its author's full name. Combine `first_name` and `last_name` into a single column called `author`. _(Hint: you will need a JOIN.)_
SELECT
books.title,
authors.first_name || ' ' || authors.last_name AS author
FROM books
JOIN authors ON books.author_id = authors.id;

-- **Question 4** — List all books written by Stephen King. Show the title and published year, ordered by year. _(Hint: JOIN the two tables and filter on the author's name.)_
SELECT
books.title,
books.published_year
FROM books
JOIN authors ON books.author_id = authors.id
WHERE authors.first_name = 'Stephen'
AND authors.last_name = 'King'
ORDER BY books.published_year ASC;

-- **Question 5** — Add yourself as a new author. Use your real name, or make one up. Pick any nationality and birth year.
INSERT INTO authors (first_name, last_name, nationality, birth_year)
VALUES ('Pavel', 'Tisner', 'Russian', 1987);

-- **Question 6** — Add one book for the author you just inserted. It can be a real book or a made-up one.
INSERT INTO books (title, published_year, genre, author_id)
VALUES ('My way', 2026, 'Fiction', (SELECT id FROM authors WHERE last_name = 'Tisner'));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is a very good solution. Here, I would recommend add more fields to the WHERE (not just the last name Tisner), to avoid get users with the same last name.


-- **Question 7** — The genre for "The Dark Tower: The Gunslinger" was entered incorrectly as `'Fantasy'`. It should be `'Horror'`. Write an UPDATE to fix it, then verify the change with a SELECT.
UPDATE books
SET genre = 'Fantasy'
WHERE title = 'Harry Potter and the Deathly Hallows';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title is wrong here. It wasn't expected to be Harry Potter.


-- **Question 8** — Delete the book you added in Question 6. Make sure your query targets only that specific row.
DELETE FROM books
WHERE title = 'My way'
AND published_year = 2026;

---

Expand Down
Binary file added task-2/data/flashcards.db
Binary file not shown.
25 changes: 25 additions & 0 deletions task-2/migrate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import fs from 'fs';
import Database from 'better-sqlite3';

const data = JSON.parse(fs.readFileSync('data/data.json', 'utf-8'));
const db = new Database('data/flashcards.db');

for (const deck of data.decks) {
db.prepare('INSERT INTO decks (name, description) VALUES (@name, @description)')
.run({
name: deck.name,
description: deck.description
});
}

for (const card of data.cards) {
db.prepare('INSERT INTO cards (question, answer, learned, deck_id) VALUES (@question, @answer, @learned, @deck_id)')
.run({
question: card.question,
answer: card.answer,
learned: card.learned ? 1 : 0,
deck_id: card.deckId
});
}

db.close();
Loading