Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. -- С помощью SQL (DDL)--
  2. 1. Создайте базу данных test_guru
  3. CREATE DATABASE test_guru
  4.  
  5. 2. Таблицу categories с атрибутом title
  6. CREATE TABLE categories (
  7. id SERIAL PRIMARY KEY NOT NULL,
  8. title TEXT NOT NULL
  9. )
  10.  
  11. 3. Таблицу tests в которой должны быть атрибуты title, level, внешний ключ к таблице categories
  12. CREATE TABLE tests (
  13. id SERIAL PRIMARY KEY NOT NULL,
  14. title TEXT NOT NULL,
  15. level INTEGER NOT NULL,
  16. category_id INTEGER REFERENCES categories (id)
  17. )
  18.  
  19. 4. Таблицу questions в которой должен быть атрибут body и внешний ключ к таблице tests
  20. CREATE TABLE questions (
  21. id SERIAL PRIMARY KEY NOT NULL,
  22. body TEXT NOT NULL,
  23. test_id INTEGER REFERENCES tests (id)
  24. )
  25.  
  26. -- Выполните операции CRUD, JOIN --
  27. 1. Создайте 3 строки в таблице categories
  28. INSERT INTO categories(title)
  29. VALUES
  30. ('Разработчик'),
  31. ('Аналитик'),
  32. ('Тестировщик');
  33.  
  34. 2. Создайте 5 строк в таблице tests (хотя бы 3 из них должны иметь отличное от NULL значение в атрибуте внешнего ключа к таблице categories)
  35. INSERT INTO tests (title, level, category_id)
  36. VALUES
  37. ('Старший Разработчик', '2', (SELECT id FROM categories WHERE title = 'Разработчик')),
  38. ('Ведущий Разработчик', '4', (SELECT id FROM categories WHERE title = 'Разработчик')),
  39. ('Старший Аналитик', '1', (SELECT id FROM categories WHERE title = 'Аналитик')),
  40. ('Ведущий Аналитик', '3', (SELECT id FROM categories WHERE title = 'Аналитик')),
  41. ('Главный Тестировщик', '5', (SELECT id FROM categories WHERE title = 'Тестировщик'));
  42.  
  43. 3. Создайте 5 строк в таблице questions
  44. INSERT INTO questions (body, test_id)
  45. VALUES
  46. ('Какие бывают требования?', (SELECT id FROM tests WHERE title = 'Старший Аналитик')),
  47. ('Что такое миграции?', (SELECT id FROM tests WHERE title = 'Старший Разработчик')),
  48. ('Укажите основные элементы нотации BPMN?', (SELECT id FROM tests WHERE title = 'Ведущий Аналитик')),
  49. ('Какие основные принципы RoR?', (SELECT id FROM tests WHERE title = 'Ведущий Разработчик')),
  50. ('Какие бывают виды тестирования?', (SELECT id FROM tests WHERE title = 'Главный Тестировщик'));
  51.  
  52. 4. Выберите все тесты с уровнем 2 и 3
  53. SELECT * FROM tests WHERE level in (2, 3)
  54.  
  55. 5. Выберите все вопросы для определённого теста
  56. SELECT t2.title as "Тест",
  57. t1.body as "Вопрос"
  58. FROM questions t1
  59. JOIN tests t2
  60. ON t1.test_id = t2.id
  61. WHERE t2.title = 'Старший Аналитик'
  62.  
  63. 6. Обновите атрибуты title и level для строки из таблицы tests с помощью одного запроса
  64. UPDATE tests
  65. SET (title, level) = ('Главный Разработчик', 5)
  66. WHERE title = 'Ведущий Разработчик'
  67.  
  68. 7. Удалите все вопросы для конкретного теста с помощью одного запроса
  69. DELETE FROM questions
  70. WHERE test_id = (SELECT id FROM tests WHERE title = 'Старший Разработчик')
  71.  
  72. 8. С помощью JOIN выберите названия всех тестов и названия их категорий
  73. SELECT t1.title as "Тест", t2.title as "Категория"
  74. FROM tests t1
  75. JOIN categories t2
  76. on t1.category_id = t2.id
  77.  
  78. 9. С помощью JOIN выберите содержание всех вопросов (атрибут body) и названия связанных с ними тестов
  79. SELECT t1.title as "Тест", t2.body as "Вопрос"
  80. FROM tests t1
  81. JOIN questions t2
  82. on t1.id = t2.test_id
  83. ORDER BY t1.title
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement