Робочий аркуш «Бази даних і SQL» з відповідями

Безкоштовний робочий аркуш для друку «Бази даних і SQL»: 8 задач від легких до рівня іспиту, з ключем відповідей. Роздрукуйте його або збережіть як PDF.

Для викладачів: можна безкоштовно друкувати, копіювати й використовувати на заняттях. Кожен новий аркуш має нові значення і власні відповіді. Будемо вдячні за посилання на ExamProblems на сторінці вашого курсу.

Ім’я: ____________________   Дата: ____________

1.Легка

Що повертає CROSS JOIN?

  1. AЛише рядки, що не збігаються
  2. BЛише рядки, що збігаються за спільним ключовим стовпцем
  3. CКожну комбінацію рядків із двох таблиць
  4. DЛише рядки першої таблиці
2.Легка

Яка інструкція додає новий стовпець до наявної таблиці?

  1. AUPDATE TABLE
  2. BALTER TABLE
  3. CCREATE COLUMN
  4. DINSERT COLUMN
3.Легка

Що робить UNION з результатами двох запитів SELECT?

  1. AОб’єднує їх в один результат і видаляє дублікати рядків
  2. BЗ’єднує їх поруч за ключем
  3. CЗалишає лише рядки, що є в обох
  4. DЗалишає лише рядки, які є в першому запиті, але не в другому
4.Середня

Таблиця має рядки, де col дорівнює NULL. Які рядки повертає WHERE col = NULL?

  1. AУсі рядки таблиці
  2. BПомилку в кожній базі даних
  3. CЖодних рядків, бо результат порівняння невідомий
  4. DЛише рядки, де col дорівнює NULL, як і за IS NULL
5.Середня

Таблиця зберігає адресу клієнта в кожному рядку замовлення. Зміна адреси в одному рядку, але не в інших — це приклад:

  1. AАномалії видалення
  2. BАномалії вставлення
  3. CАномалії оновлення
  4. DФантомного читання
6.Середня

Який запит виводить клієнтів, які ніколи не робили замовлень?

  1. ASELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  2. BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
  3. CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  4. DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
7.Складна

Чому після customers LEFT JOIN orders для підрахунку замовлень кожного клієнта використовують COUNT(o.id), а не COUNT(*)?

  1. ACOUNT(*) ігнорує рядки зі значеннями NULL
  2. BCOUNT(*) не дозволено після з’єднання
  3. CCOUNT(o.id) рахує лише різних клієнтів
  4. DCOUNT(*) рахує рядок, заповнений NULL, як 1 для клієнтів без замовлень
8.Складна

Що обчислює SELECT day, SUM(amount) OVER (ORDER BY day) FROM sales?

  1. AНаростальний підсумок amount, упорядкований за day
  2. BПідсумок усіх сум у кожному рядку
  3. CОдин рядок на день лише з підсумком цього дня
  4. DСередню суму за день

Ключ відповідей

  1. 1. C · Кожну комбінацію рядків із двох таблиць
  2. 2. B · ALTER TABLE
  3. 3. A · Об’єднує їх в один результат і видаляє дублікати рядків
  4. 4. C · Жодних рядків, бо результат порівняння невідомий
  5. 5. C · Аномалії оновлення
  6. 6. C · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  7. 7. D · COUNT(*) рахує рядок, заповнений NULL, як 1 для клієнтів без замовлень
  8. 8. A · Наростальний підсумок amount, упорядкований за day

Повні покрокові розв’язки: тренуйте цю тему на examproblems.com.