Создайте базу данных test_guru
CREATE DATABASE test_guru;
DROP TABLE IF EXISTS questions; DROP TABLE IF EXISTS tests; DROP TABLE IF EXISTS categories;
Таблицу categories с атрибутом title
CREATE TABLE categories (
id serial,
title varchar(255),
PRIMARY KEY(id)
);
Таблицу tests в которой должны быть атрибуты title, level, внешний ключ к таблице categories
CREATE TABLE tests (
id serial,
title varchar(255),
level int,
category_id int,
FOREIGN KEY(category_id) REFERENCES categories(id),
PRIMARY KEY(id)
);
Таблицу questions в которой должен быть атрибут body и внешний ключ к таблице tests
CREATE TABLE questions (
id serial,
body varchar(255),
test_id int,
FOREIGN KEY(test_id) REFERENCES tests(id),
PRIMARY KEY(id)
);
Создайте 3 строки в таблице categories
INSERT INTO categories (title)
VALUES
('html'),
('css'),
('js');
Создайте 5 строк в таблице tests (хотя бы 3 из них должны иметь отличное от NULL значение в атрибуте внешнего ключа к таблице categories)
INSERT INTO tests (title, level, category_id)
VALUES
('HTML LEVEL 1', 1, 1),
('HTML LEVEL 2', 2, 1),
('HTML LEVEL 2', 3, 1),
('CSS LEVEL 1', 1, 2),
('CSS LEVEL 2', 2, 2),
('CSS LEVEL 2', 3, 2),
('JS LEVEL 1', 1, 3),
('JS LEVEL 2', 2, 3),
('JS LEVEL 2', 3, 3);
Создайте 5 строк в таблице questions
INSERT INTO questions (body, test_id)
VALUES
('Tag of Header ?', 1),
('Tag of Header ? Level 2', 2),
('Tag of Header ? Level 3', 3),
('Media query for adaptive ?', 2),
('Media query for adaptive ? Level 2', 2),
('Media query for adaptive ? Level 3', 3);
Выберите все тесты с уровнем 2 и 3
SELECT title
FROM tests
WHERE level = 1 OR level = 2;
Выберите все вопросы для определённого теста
SELECT body
FROM questions
WHERE test_id = 1;
Обновите атрибуты title и level для строки из таблицы tests с помощью одного запроса
UPDATE tests
SET
title = 'HTML LEVEL 4',
level = 4
WHERE id = 1;
Удалите все вопросы для конкретного теста с помощью одного запроса
DELETE FROM questions
WHERE test_id = 1;
С помощью JOIN выберите названия всех тестов и названия их категорий
SELECT tests.title as Title, categories.title as Category
FROM tests
INNER JOIN categories ON tests.category_id = categories.id;
С помощью JOIN выберите содержание всех вопросов (атрибут body) и названия связанных с ними тестов
SELECT questions.body as question, tests.title
FROM questions
INNER JOIN tests ON tests.id = questions.test_id;