Безкоштовний робочий аркуш для друку «Бази даних і SQL»: 8 задач від легких до рівня іспиту, з ключем відповідей. Роздрукуйте його або збережіть як PDF.
Для викладачів: можна безкоштовно друкувати, копіювати й використовувати на заняттях. Кожен новий аркуш має нові значення і власні відповіді. Будемо вдячні за посилання на ExamProblems на сторінці вашого курсу.
Ім’я: ____________________ Дата: ____________
1.Легка
Що робить GROUP BY у запиті?
AОб’єднує рядки з однаковими значеннями в групи, щоб агрегати обчислювалися для кожної групи
BВидаляє рядки зі значеннями NULL
CЗ’єднує дві таблиці за спільними стовпцями
DСортує рядки результату за абеткою
2.Легка
Що таке потенційний ключ (candidate key)?
AМінімальний набір стовпців, що однозначно ідентифікує кожен рядок
BНабір стовпців, спільний для двох таблиць, що зв’язує їхні рядки
CБудь-який стовпець, що містить значення NULL
DСтовпець, що чекає, щоб стати зовнішнім ключем
3.Легка
Що гарантує обмеження UNIQUE на стовпці?
AЖодні два рядки не мають однакового значення, відмінного від NULL, у цьому стовпці
BЗначення стовпця відсортовані
CСтовпець автоматично стає первинним ключем таблиці
DСтовпець не можна змінити після вставлення
4.Середня
Який запит повертає кількість різних міст у таблиці customers?
ASELECT COUNT(city) FROM customers GROUP BY city
BSELECT SUM(DISTINCT city) FROM customers
CSELECT DISTINCT COUNT(city) FROM customers
DSELECT COUNT(DISTINCT city) FROM customers
5.Середня
Чому таблиця може мати лише один кластеризований індекс?
AСтандарт SQL забороняє більше ніж один індекс на таблицю
BРядки можна фізично зберігати лише в одному порядку
CКластеризовані індекси можуть бути лише на первинному ключі
DКластеризовані індекси займають забагато пам’яті
6.Середня
Таблиця має рядки, де col дорівнює NULL. Які рядки повертає WHERE col = NULL?
AУсі рядки таблиці
BЖодних рядків, бо результат порівняння невідомий
CПомилку в кожній базі даних
DЛише рядки, де col дорівнює NULL, як і за IS NULL
7.Складна
Що повертає такий запит: SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?
AЛише студентів з найвищою оцінкою
BСередню оцінку всіх студентів
CСтудентів з оцінкою, вищою за середню оцінку
DПомилку, бо підзапити не дозволені у WHERE
8.Складна
Таблиця має мільйон рядків і булевий стовпець is_active, що дорівнює TRUE для 95% з них. Чому оптимізатор може ігнорувати індекс на is_active для WHERE is_active = TRUE?
AБільшість рядків відповідають умові, тож повне сканування таблиці дешевше за багато пошуків в індексі
BІндекси не можна створювати на булевих стовпцях
CІндекс трактує TRUE як NULL
DОптимізатор ніколи не використовує індекси в реченнях WHERE
Ключ відповідей
1. A · Об’єднує рядки з однаковими значеннями в групи, щоб агрегати обчислювалися для кожної групи
2. A · Мінімальний набір стовпців, що однозначно ідентифікує кожен рядок
3. A · Жодні два рядки не мають однакового значення, відмінного від NULL, у цьому стовпці
4. D · SELECT COUNT(DISTINCT city) FROM customers
5. B · Рядки можна фізично зберігати лише в одному порядку
6. B · Жодних рядків, бо результат порівняння невідомий
7. C · Студентів з оцінкою, вищою за середню оцінку
8. A · Більшість рядків відповідають умові, тож повне сканування таблиці дешевше за багато пошуків в індексі
Повні покрокові розв’язки: тренуйте цю тему на examproblems.com.