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

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

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

Имя: ____________________   Дата: ____________

1.Лёгкая

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

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

Какой оператор добавляет новый столбец в существующую таблицу?

  1. AALTER TABLE
  2. BUPDATE TABLE
  3. CINSERT COLUMN
  4. DCREATE COLUMN
3.Лёгкая

Какая агрегатная функция возвращает среднее значение числового столбца?

  1. ASUM
  2. BMEAN
  3. CAVG
  4. DMEDIAN
4.Средняя

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

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

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

  1. ASELECT customer_id FROM orders WHERE COUNT(*) > 0
  2. BSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  3. CSELECT DISTINCT COUNT(*) FROM orders
  4. DSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
6.Средняя

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

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

Почему SELECT dept, name, COUNT(*) FROM emp GROUP BY dept недопустим в стандартном SQL?

  1. Adept должен находиться внутри агрегатной функции
  2. Bname не группируется и не агрегируется, поэтому у него нет единственного значения в группе
  3. CCOUNT(*) нельзя использовать вместе с GROUP BY
  4. DВ GROUP BY нужно перечислить все столбцы таблицы
8.Сложная

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

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

Ответы

  1. 1. B · Строки с ценой от 10 до 20, включая 10 и 20
  2. 2. A · ALTER TABLE
  3. 3. C · AVG
  4. 4. D · WHERE вычисляется раньше списка SELECT, поэтому псевдонима ещё не существует
  5. 5. B · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
  6. 6. D · Никаких строк, потому что результат сравнения неизвестен
  7. 7. B · name не группируется и не агрегируется, поэтому у него нет единственного значения в группе
  8. 8. D · Условие WHERE на o отбрасывает строки, заполненные NULL, превращая соединение во внутреннее

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