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

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

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

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

1.Легка

Що робить GROUP BY у запиті?

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

Що таке потенційний ключ (candidate key)?

  1. AМінімальний набір стовпців, що однозначно ідентифікує кожен рядок
  2. BНабір стовпців, спільний для двох таблиць, що зв’язує їхні рядки
  3. CБудь-який стовпець, що містить значення NULL
  4. DСтовпець, що чекає, щоб стати зовнішнім ключем
3.Легка

Що гарантує обмеження UNIQUE на стовпці?

  1. AЖодні два рядки не мають однакового значення, відмінного від NULL, у цьому стовпці
  2. BЗначення стовпця відсортовані
  3. CСтовпець автоматично стає первинним ключем таблиці
  4. DСтовпець не можна змінити після вставлення
4.Середня

Який запит повертає кількість різних міст у таблиці customers?

  1. ASELECT COUNT(city) FROM customers GROUP BY city
  2. BSELECT SUM(DISTINCT city) FROM customers
  3. CSELECT DISTINCT COUNT(city) FROM customers
  4. DSELECT COUNT(DISTINCT city) FROM customers
5.Середня

Чому таблиця може мати лише один кластеризований індекс?

  1. AСтандарт SQL забороняє більше ніж один індекс на таблицю
  2. BРядки можна фізично зберігати лише в одному порядку
  3. CКластеризовані індекси можуть бути лише на первинному ключі
  4. DКластеризовані індекси займають забагато пам’яті
6.Середня

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

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

Що повертає такий запит: SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?

  1. AЛише студентів з найвищою оцінкою
  2. BСередню оцінку всіх студентів
  3. CСтудентів з оцінкою, вищою за середню оцінку
  4. DПомилку, бо підзапити не дозволені у WHERE
8.Складна

Таблиця має мільйон рядків і булевий стовпець is_active, що дорівнює TRUE для 95% з них. Чому оптимізатор може ігнорувати індекс на is_active для WHERE is_active = TRUE?

  1. AБільшість рядків відповідають умові, тож повне сканування таблиці дешевше за багато пошуків в індексі
  2. BІндекси не можна створювати на булевих стовпцях
  3. CІндекс трактує TRUE як NULL
  4. DОптимізатор ніколи не використовує індекси в реченнях WHERE

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

  1. 1. A · Об’єднує рядки з однаковими значеннями в групи, щоб агрегати обчислювалися для кожної групи
  2. 2. A · Мінімальний набір стовпців, що однозначно ідентифікує кожен рядок
  3. 3. A · Жодні два рядки не мають однакового значення, відмінного від NULL, у цьому стовпці
  4. 4. D · SELECT COUNT(DISTINCT city) FROM customers
  5. 5. B · Рядки можна фізично зберігати лише в одному порядку
  6. 6. B · Жодних рядків, бо результат порівняння невідомий
  7. 7. C · Студентів з оцінкою, вищою за середню оцінку
  8. 8. A · Більшість рядків відповідають умові, тож повне сканування таблиці дешевше за багато пошуків в індексі

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