1.Лёгкая
Клиент может разместить много заказов, но каждый заказ принадлежит ровно одному клиенту. Какой это тип связи?
- AОдин ко многим
- BОдин к одному
- CМногие ко многим
- DНоль к нулю
2.Лёгкая
Что возвращает CROSS JOIN?
- AВсе сочетания строк двух таблиц
- BТолько строки первой таблицы
- CТолько строки, совпадающие по общему столбцу-ключу
- DТолько несовпадающие строки
3.Лёгкая
Что делает WHERE country IN ('NL', 'BE', 'DE')?
- AОставляет строки, в которых значение country содержит сразу все три кода
- BОставляет строки, в которых country нет в списке
- CСортирует строки в порядке списка
- DОставляет строки, в которых country равно любому значению из списка
4.Средняя
LEFT JOIN возвращает:
- AВсе строки из левой таблицы и соответствующие строки из правой, с NULL там, где соответствия нет
- BТолько соответствующие строки из обеих таблиц
- CСтроки, не имеющие соответствия ни в одной таблице
- DТолько все строки из правой таблицы
5.Средняя
В таблице есть строки, где col равен NULL. Какие строки возвращает WHERE col = NULL?
- AТолько строки, где col равен NULL, как при IS NULL
- BОшибку в любой базе данных
- CВсе строки таблицы
- DНикаких строк, потому что результат сравнения неизвестен
6.Средняя
Какой запрос возвращает количество заказов по каждому клиенту?
- ASELECT DISTINCT COUNT(*) FROM orders
- BSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
- CSELECT customer_id FROM orders WHERE COUNT(*) > 0
- DSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
7.Сложная
Какая оконная функция (window function) присваивает строкам в каждом разделе (partition) номера 1, 2, 3, ... без повторов?
- ARANK()
- BDENSE_RANK()
- CROW_NUMBER()
- DCOUNT()
8.Сложная
В таблице миллион строк и логический столбец is_active, равный TRUE для 95% строк. Почему оптимизатор может игнорировать индекс по is_active для WHERE is_active = TRUE?
- AОптимизатор никогда не использует индексы в предложениях WHERE
- BИндекс считает TRUE значением NULL
- CИндексы нельзя создавать по логическим столбцам
- DПодходит большинство строк, поэтому полное сканирование таблицы дешевле множества обращений к индексу
Ответы
- 1. A · Один ко многим
- 2. A · Все сочетания строк двух таблиц
- 3. D · Оставляет строки, в которых country равно любому значению из списка
- 4. A · Все строки из левой таблицы и соответствующие строки из правой, с NULL там, где соответствия нет
- 5. D · Никаких строк, потому что результат сравнения неизвестен
- 6. D · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- 7. C · ROW_NUMBER()
- 8. D · Подходит большинство строк, поэтому полное сканирование таблицы дешевле множества обращений к индексу
Полные пошаговые решения: занимайтесь этой темой на examproblems.com.