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

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

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

Имя: ____________________   Дата: ____________

1.Лёгкая

Что означает NULL в SQL?

  1. AЛогическое значение «ложь»
  2. BОтсутствующее или неизвестное значение
  3. CПустую строку
  4. DЧисло ноль в числовых столбцах
2.Лёгкая

Что делает UNION с результатами двух запросов SELECT?

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

Какое предложение в PostgreSQL и MySQL возвращает только первые 10 строк результата?

  1. AFIRST 10 ONLY
  2. BMAX 10
  3. CLIMIT 10
  4. DTOP ROWS 10
4.Средняя

Какой запрос возвращает число различных городов в таблице customers?

  1. ASELECT SUM(DISTINCT city) FROM customers
  2. BSELECT COUNT(city) FROM customers GROUP BY city
  3. CSELECT COUNT(DISTINCT city) FROM customers
  4. DSELECT DISTINCT COUNT(city) FROM customers
5.Средняя

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

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

Что делает GRANT SELECT ON employees TO alice?

  1. AДелает alice владельцем базы данных
  2. BКопирует таблицу employees пользователю alice
  3. CРазрешает пользователю alice читать таблицу employees
  4. DРазрешает alice изменять и удалять строки в таблице employees
7.Сложная

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

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

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

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

Ответы

  1. 1. B · Отсутствующее или неизвестное значение
  2. 2. B · Объединяет их в один результат и удаляет повторяющиеся строки
  3. 3. C · LIMIT 10
  4. 4. C · SELECT COUNT(DISTINCT city) FROM customers
  5. 5. D · Все строки из левой таблицы и соответствующие строки из правой, с NULL там, где соответствия нет
  6. 6. C · Разрешает пользователю alice читать таблицу employees
  7. 7. B · Подходит большинство строк, поэтому полное сканирование таблицы дешевле множества обращений к индексу
  8. 8. D · name не группируется и не агрегируется, поэтому у него нет единственного значения в группе

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