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

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

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

Имя: ____________________   Дата: ____________

1.Лёгкая

Что такое суррогатный ключ (surrogate key)?

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

Для чего используется диаграмма «сущность — связь» (ER-диаграмма)?

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

Какие строки отбирает WHERE price BETWEEN 10 AND 20?

  1. AТолько строки с ценой, равной 10 или 20
  2. BСтроки с ценой вне диапазона от 10 до 20
  3. CСтроки с ценой больше 10 и меньше 20, без 10 и 20
  4. DСтроки с ценой от 10 до 20, включая 10 и 20
4.Средняя

Почему SELECT price * 2 AS double_price FROM t WHERE double_price > 10 в большинстве баз данных завершается ошибкой?

  1. AWHERE может сравнивать только текстовые столбцы
  2. BАрифметика в списке SELECT не допускается
  3. CWHERE вычисляется раньше списка SELECT, поэтому псевдонима ещё не существует
  4. DПсевдонимы не могут содержать подчёркивание
5.Средняя

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

  1. ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
  2. BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS 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 IS NOT NULL
6.Средняя

Представление (view) в SQL — это:

  1. AКопия таблицы на диске
  2. BТип индекса
  3. CЭкран клиента базы данных для просмотра таблиц
  4. DСохранённый запрос, который ведёт себя как виртуальная таблица
7.Сложная

Два дежурных врача каждый проверяют, что другой ещё на дежурстве, а затем оба одновременно снимаются с дежурства. Какую аномалию здесь всё ещё допускает изоляция снимков (snapshot isolation)?

  1. AНеповторяемое чтение в пределах одной транзакции
  2. BГрязное чтение
  3. CАсимметрию записи (write skew)
  4. DГрязную запись
8.Сложная

Запрос FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' неожиданно теряет клиентов без заказов. Почему?

  1. AВ соединении нужно использовать USING вместо ON
  2. BУсловие WHERE на o отбрасывает строки, заполненные NULL, превращая соединение во внутреннее
  3. CLEFT JOIN никогда не сохраняет строки без совпадений
  4. Dstatus — зарезервированное слово

Ответы

  1. 1. C · Искусственный идентификатор без бизнес-смысла, например автоинкрементный id
  2. 2. A · Для моделирования сущностей, их атрибутов и связей при проектировании базы данных
  3. 3. D · Строки с ценой от 10 до 20, включая 10 и 20
  4. 4. C · WHERE вычисляется раньше списка SELECT, поэтому псевдонима ещё не существует
  5. 5. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  6. 6. D · Сохранённый запрос, который ведёт себя как виртуальная таблица
  7. 7. C · Асимметрию записи (write skew)
  8. 8. B · Условие WHERE на o отбрасывает строки, заполненные NULL, превращая соединение во внутреннее

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