Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- С помощью SQL (DDL)--
- 1. Создайте базу данных test_guru
- CREATE DATABASE test_guru
- 2. Таблицу categories с атрибутом title
- CREATE TABLE categories (
- id SERIAL PRIMARY KEY NOT NULL,
- title TEXT NOT NULL
- )
- 3. Таблицу tests в которой должны быть атрибуты title, level, внешний ключ к таблице categories
- CREATE TABLE tests (
- id SERIAL PRIMARY KEY NOT NULL,
- title TEXT NOT NULL,
- level INTEGER NOT NULL,
- category_id INTEGER REFERENCES categories (id)
- )
- 4. Таблицу questions в которой должен быть атрибут body и внешний ключ к таблице tests
- CREATE TABLE questions (
- id SERIAL PRIMARY KEY NOT NULL,
- body TEXT NOT NULL,
- test_id INTEGER REFERENCES tests (id)
- )
- -- Выполните операции CRUD, JOIN --
- 1. Создайте 3 строки в таблице categories
- INSERT INTO categories(title)
- VALUES
- ('Разработчик'),
- ('Аналитик'),
- ('Тестировщик');
- 2. Создайте 5 строк в таблице tests (хотя бы 3 из них должны иметь отличное от NULL значение в атрибуте внешнего ключа к таблице categories)
- INSERT INTO tests (title, level, category_id)
- VALUES
- ('Старший Разработчик', '2', (SELECT id FROM categories WHERE title = 'Разработчик')),
- ('Ведущий Разработчик', '4', (SELECT id FROM categories WHERE title = 'Разработчик')),
- ('Старший Аналитик', '1', (SELECT id FROM categories WHERE title = 'Аналитик')),
- ('Ведущий Аналитик', '3', (SELECT id FROM categories WHERE title = 'Аналитик')),
- ('Главный Тестировщик', '5', (SELECT id FROM categories WHERE title = 'Тестировщик'));
- 3. Создайте 5 строк в таблице questions
- INSERT INTO questions (body, test_id)
- VALUES
- ('Какие бывают требования?', (SELECT id FROM tests WHERE title = 'Старший Аналитик')),
- ('Что такое миграции?', (SELECT id FROM tests WHERE title = 'Старший Разработчик')),
- ('Укажите основные элементы нотации BPMN?', (SELECT id FROM tests WHERE title = 'Ведущий Аналитик')),
- ('Какие основные принципы RoR?', (SELECT id FROM tests WHERE title = 'Ведущий Разработчик')),
- ('Какие бывают виды тестирования?', (SELECT id FROM tests WHERE title = 'Главный Тестировщик'));
- 4. Выберите все тесты с уровнем 2 и 3
- SELECT * FROM tests WHERE level in (2, 3)
- 5. Выберите все вопросы для определённого теста
- SELECT t2.title as "Тест",
- t1.body as "Вопрос"
- FROM questions t1
- JOIN tests t2
- ON t1.test_id = t2.id
- WHERE t2.title = 'Старший Аналитик'
- 6. Обновите атрибуты title и level для строки из таблицы tests с помощью одного запроса
- UPDATE tests
- SET (title, level) = ('Главный Разработчик', 5)
- WHERE title = 'Ведущий Разработчик'
- 7. Удалите все вопросы для конкретного теста с помощью одного запроса
- DELETE FROM questions
- WHERE test_id = (SELECT id FROM tests WHERE title = 'Старший Разработчик')
- 8. С помощью JOIN выберите названия всех тестов и названия их категорий
- SELECT t1.title as "Тест", t2.title as "Категория"
- FROM tests t1
- JOIN categories t2
- on t1.category_id = t2.id
- 9. С помощью JOIN выберите содержание всех вопросов (атрибут body) и названия связанных с ними тестов
- SELECT t1.title as "Тест", t2.body as "Вопрос"
- FROM tests t1
- JOIN questions t2
- on t1.id = t2.test_id
- ORDER BY t1.title
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement