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

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

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

Имя: ____________________   Дата: ____________

1.Лёгкая

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

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

Что обозначает подстановочный символ % в шаблоне LIKE?

  1. AЛюбую одну цифру
  2. BРовно один символ в этой позиции строки
  3. CКонец строки
  4. DЛюбую последовательность из нуля или более символов
3.Лёгкая

Внешний ключ (foreign key) — это:

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

Какое утверждение о HAVING верно?

  1. AОно сортирует результаты
  2. BЕго нельзя использовать с GROUP BY
  3. CВ нём можно использовать агрегатные функции для фильтрации групп
  4. DОно должно стоять перед WHERE в операторе SELECT
5.Средняя

Таблица хранит адрес клиента в каждой строке заказа. Изменение адреса в одной строке, но не в остальных, — пример:

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

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

  1. ASELECT c.name FROM customers c LEFT 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 IS NOT NULL
  3. CSELECT c.name FROM customers c INNER 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 = NULL
7.Сложная

Как при многоверсионном управлении параллелизмом (MVCC) читающие транзакции могут не блокировать пишущие?

  1. AЗапись не допускается, пока активна хоть одна читающая транзакция
  2. BЧитающие напрямую читают незафиксированные данные
  3. CЧитающие видят согласованный снимок зафиксированных версий строк, а пишущие создают новые версии
  4. DЧитающие всегда ждут, пока все пишущие не зафиксируются
8.Сложная

Транзакция T1 блокирует строку A и ждёт строку B, а T2 блокирует строку B и ждёт строку A. Что делает типичная СУБД?

  1. AФиксирует обе транзакции одновременно
  2. BОбъединяет две транзакции в одну
  3. CОбнаруживает взаимоблокировку и прерывает одну из транзакций как жертву
  4. DПозволяет обеим транзакциям ждать, пока одна из них не завершится нормально

Ответы

  1. 1. B · Все сочетания строк двух таблиц
  2. 2. D · Любую последовательность из нуля или более символов
  3. 3. C · Столбец, ссылающийся на первичный ключ другой таблицы
  4. 4. C · В нём можно использовать агрегатные функции для фильтрации групп
  5. 5. A · Аномалии обновления
  6. 6. A · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  7. 7. C · Читающие видят согласованный снимок зафиксированных версий строк, а пишущие создают новые версии
  8. 8. C · Обнаруживает взаимоблокировку и прерывает одну из транзакций как жертву

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