1.Лёгкая
Что такое суррогатный ключ (surrogate key)?
- AКлюч, используемый только в представлениях
- BКлюч, ссылающийся на другую таблицу
- CИскусственный идентификатор без бизнес-смысла, например автоинкрементный id
- DКлюч из реальных данных, например адрес электронной почты
2.Лёгкая
Для чего используется диаграмма «сущность — связь» (ER-диаграмма)?
- AДля моделирования сущностей, их атрибутов и связей при проектировании базы данных
- BДля показа того, как выполняется запрос
- CДля измерения производительности базы данных
- DДля перечисления пользователей базы данных
3.Лёгкая
Какие строки отбирает WHERE price BETWEEN 10 AND 20?
- AТолько строки с ценой, равной 10 или 20
- BСтроки с ценой вне диапазона от 10 до 20
- CСтроки с ценой больше 10 и меньше 20, без 10 и 20
- DСтроки с ценой от 10 до 20, включая 10 и 20
4.Средняя
Почему SELECT price * 2 AS double_price FROM t WHERE double_price > 10 в большинстве баз данных завершается ошибкой?
- AWHERE может сравнивать только текстовые столбцы
- BАрифметика в списке SELECT не допускается
- CWHERE вычисляется раньше списка SELECT, поэтому псевдонима ещё не существует
- DПсевдонимы не могут содержать подчёркивание
5.Средняя
Какой запрос выводит клиентов, которые ни разу не размещали заказ?
- ASELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
- BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- CSELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 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 — это:
- AКопия таблицы на диске
- BТип индекса
- CЭкран клиента базы данных для просмотра таблиц
- DСохранённый запрос, который ведёт себя как виртуальная таблица
7.Сложная
Два дежурных врача каждый проверяют, что другой ещё на дежурстве, а затем оба одновременно снимаются с дежурства. Какую аномалию здесь всё ещё допускает изоляция снимков (snapshot isolation)?
- AНеповторяемое чтение в пределах одной транзакции
- BГрязное чтение
- CАсимметрию записи (write skew)
- DГрязную запись
8.Сложная
Запрос FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.status = 'paid' неожиданно теряет клиентов без заказов. Почему?
- AВ соединении нужно использовать USING вместо ON
- BУсловие WHERE на o отбрасывает строки, заполненные NULL, превращая соединение во внутреннее
- CLEFT JOIN никогда не сохраняет строки без совпадений
- Dstatus — зарезервированное слово
Ответы
- 1. C · Искусственный идентификатор без бизнес-смысла, например автоинкрементный id
- 2. A · Для моделирования сущностей, их атрибутов и связей при проектировании базы данных
- 3. D · Строки с ценой от 10 до 20, включая 10 и 20
- 4. C · WHERE вычисляется раньше списка SELECT, поэтому псевдонима ещё не существует
- 5. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 6. D · Сохранённый запрос, который ведёт себя как виртуальная таблица
- 7. C · Асимметрию записи (write skew)
- 8. B · Условие WHERE на o отбрасывает строки, заполненные NULL, превращая соединение во внутреннее
Полные пошаговые решения: занимайтесь этой темой на examproblems.com.