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

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

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

Имя: ____________________   Дата: ____________

1.Лёгкая

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

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

К какой части SQL относятся операторы CREATE, ALTER и DROP?

  1. AЯзык управления транзакциями (TCL)
  2. BЯзык манипулирования данными (DML)
  3. CЯзык определения данных (DDL)
  4. DЯзык управления доступом к данным (DCL)
3.Лёгкая

Какой оператор SQL изменяет значения в уже существующих строках?

  1. AINSERT
  2. BREPLACE COLUMN
  3. CUPDATE
  4. DMODIFY
4.Средняя

Почему у таблицы может быть только один кластеризованный индекс?

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

Что делает ROLLBACK TO SAVEPOINT s1?

  1. AОтменяет изменения, сделанные после точки сохранения s1, оставляя транзакцию открытой
  2. BУдаляет точку сохранения и все таблицы, изменённые с тех пор
  3. CЗавершает транзакцию и фиксирует всё
  4. DОтменяет всю транзакцию с самого начала
6.Средняя

Что возвращает INTERSECT, использованный между двумя запросами SELECT?

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

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

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

Почему после customers LEFT JOIN orders для подсчёта заказов клиента используют COUNT(o.id), а не COUNT(*)?

  1. ACOUNT(*) нельзя использовать после соединения
  2. BCOUNT(*) игнорирует строки со значениями NULL
  3. CCOUNT(o.id) считает только различных клиентов
  4. DCOUNT(*) считает заполненную NULL строку как 1 для клиентов без заказов

Ответы

  1. 1. D · Искусственный идентификатор без бизнес-смысла, например автоинкрементный id
  2. 2. C · Язык определения данных (DDL)
  3. 3. C · UPDATE
  4. 4. A · Строки могут физически храниться только в одном порядке
  5. 5. A · Отменяет изменения, сделанные после точки сохранения s1, оставляя транзакцию открытой
  6. 6. C · Строки, присутствующие в обоих результатах
  7. 7. C · Условие WHERE на o отбрасывает строки, заполненные NULL, превращая соединение во внутреннее
  8. 8. D · COUNT(*) считает заполненную NULL строку как 1 для клиентов без заказов

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