Базы данных и SQL: лист заданий с ответами

Бесплатный лист заданий для печати по теме «Базы данных и SQL»: 8 задач от простых до экзаменационного уровня, с ответами. Распечатайте его или сохраните как PDF.

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

Имя: ____________________   Дата: ____________

1.Лёгкая

Клиент может разместить много заказов, но каждый заказ принадлежит ровно одному клиенту. Какой это тип связи?

  1. AОдин ко многим
  2. BОдин к одному
  3. CМногие ко многим
  4. DНоль к нулю
2.Лёгкая

Что возвращает CROSS JOIN?

  1. AВсе сочетания строк двух таблиц
  2. BТолько строки первой таблицы
  3. CТолько строки, совпадающие по общему столбцу-ключу
  4. DТолько несовпадающие строки
3.Лёгкая

Что делает WHERE country IN ('NL', 'BE', 'DE')?

  1. AОставляет строки, в которых значение country содержит сразу все три кода
  2. BОставляет строки, в которых country нет в списке
  3. CСортирует строки в порядке списка
  4. DОставляет строки, в которых country равно любому значению из списка
4.Средняя

LEFT JOIN возвращает:

  1. AВсе строки из левой таблицы и соответствующие строки из правой, с NULL там, где соответствия нет
  2. BТолько соответствующие строки из обеих таблиц
  3. CСтроки, не имеющие соответствия ни в одной таблице
  4. DТолько все строки из правой таблицы
5.Средняя

В таблице есть строки, где col равен NULL. Какие строки возвращает WHERE col = NULL?

  1. AТолько строки, где col равен NULL, как при IS NULL
  2. BОшибку в любой базе данных
  3. CВсе строки таблицы
  4. DНикаких строк, потому что результат сравнения неизвестен
6.Средняя

Какой запрос возвращает количество заказов по каждому клиенту?

  1. ASELECT DISTINCT COUNT(*) FROM orders
  2. BSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
  3. CSELECT customer_id FROM orders WHERE COUNT(*) > 0
  4. DSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
7.Сложная

Какая оконная функция (window function) присваивает строкам в каждом разделе (partition) номера 1, 2, 3, ... без повторов?

  1. ARANK()
  2. BDENSE_RANK()
  3. CROW_NUMBER()
  4. DCOUNT()
8.Сложная

В таблице миллион строк и логический столбец is_active, равный TRUE для 95% строк. Почему оптимизатор может игнорировать индекс по is_active для WHERE is_active = TRUE?

  1. AОптимизатор никогда не использует индексы в предложениях WHERE
  2. BИндекс считает TRUE значением NULL
  3. CИндексы нельзя создавать по логическим столбцам
  4. DПодходит большинство строк, поэтому полное сканирование таблицы дешевле множества обращений к индексу

Ответы

  1. 1. A · Один ко многим
  2. 2. A · Все сочетания строк двух таблиц
  3. 3. D · Оставляет строки, в которых country равно любому значению из списка
  4. 4. A · Все строки из левой таблицы и соответствующие строки из правой, с NULL там, где соответствия нет
  5. 5. D · Никаких строк, потому что результат сравнения неизвестен
  6. 6. D · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  7. 7. C · ROW_NUMBER()
  8. 8. D · Подходит большинство строк, поэтому полное сканирование таблицы дешевле множества обращений к индексу

Полные пошаговые решения: занимайтесь этой темой на examproblems.com.