На Горох
Информатика, 11 класс

§ 18. Запросы

"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 18. Запросы

Кратко о теме

Запрос к базе данных помогает получить из таблиц именно те сведения, которые нужны для решения задачи: выбрать отдельные поля, отобрать записи по условиям и упорядочить результат. Запрос на выборку не меняет исходные данные, а формирует результат по текущему содержимому таблиц. Запросы составляют в конструкторе или описывают на SQL — эти способы задают одну и ту же логику получения данных.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Запрос к базе данных — обращение, которое позволяет получить из таблиц нужные сведения, отобрав или обработав записи по заданным условиям. Он нужен, когда в базе много информации и для задачи требуется только её часть. В запросе можно указать, какие данные показать и по каким правилам их найти.

Запрос на выборку — запрос, который выводит записи, удовлетворяющие условию, не изменяя исходные данные. Например, он может показать список заказов за месяц, оставив таблицу заказов нетронутой. Это удобно для просмотра и анализа: одни и те же данные можно представлять разными выборками.

Условие отбора — выражение, задающее, какие записи должны попасть в результат запроса. Оно может сравнивать значение поля с числом, текстом или датой, например оставлять только товары дешевле указанной цены. Условия помогают сузить результат до записей, подходящих под конкретную задачу.

Язык SQL — язык для описания запросов к реляционным базам данных, то есть базам, где данные организованы в таблицы. В конструкторе пользователь выбирает поля и задаёт условия, а программа переводит эти действия в SQL-команду. Поэтому конструктор и SQL — два способа описать, какие данные получить и как их отобрать.

Как это устроено

Запрос формируется на основе одной или нескольких таблиц: сначала выбирают источники данных, затем указывают поля, которые должны попасть в результат. Источники нужны потому, что программа должна знать, где искать сведения. Выбор полей уменьшает результат до нужных столбцов: если требуется фамилия и класс ученика, остальные поля можно не выводить. Когда данные распределены между связанными таблицами, запрос может обратиться к обеим и сопоставить относящиеся друг к другу записи.

Условия отбора оставляют в результате только те записи, значения полей которых соответствуют заданным требованиям. Это позволяет получить не все товары, а, например, только товары дешевле определённой суммы. Если нужно выполнение двух требований одновременно, задают совместные условия: запись проходит отбор, только когда удовлетворяет каждому из них. Если подходят разные варианты, условия задают как альтернативы; тогда достаточно совпадения с одним вариантом.

Сортировка упорядочивает записи результата по выбранным полям, например по фамилии или дате. Она нужна, чтобы список было легче читать и сравнивать, особенно если записей много. Направление сортировки можно выбрать, например от ранних дат к поздним или наоборот. При этом сортируется именно выдача запроса, а не порядок записей в исходной таблице.

Запрос можно создать в конструкторе или описать на SQL. Конструктор удобен тем, что позволяет выбирать источники, поля, условия и сортировку в наглядной форме. SQL записывает ту же задачу командами, поэтому его полезно знать для точной настройки и работы в разных системах. В обоих вариантах нужно решить, какие данные нужны и по каким правилам их отбирать.

Результат запроса представляет собой выборку, сформированную по текущим данным таблиц. Запрос обычно не сохраняет неизменный снимок: при новом выполнении он снова проверяет записи, и результат может измениться. Например, если цена товара изменилась, запись может перестать удовлетворять условию «не выше 500 рублей». Так запрос показывает не отдельную копию таблицы, а результат применения заданных правил к актуальным данным.

Элементы запроса на выборку

ЭлементЧто задаётРоль в результате
Источник данныхТаблицу или таблицы, из которых берутся сведенияОпределяет доступные записи и поля
Поля результатаСтолбцы, которые нужно вывестиОпределяют состав результата
Условие отбораТребования к значениям полейОставляет подходящие записи
СортировкаПоле и направление упорядочиванияЗадаёт порядок записей в результате

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

Разбор задач

Вывести фамилии и классы всех учеников

Условие: в таблице «Ученики» нужно вывести фамилии и классы всех учеников. Ограничивать список по какому-либо признаку не требуется, значит, условие отбора не нужно. Важно не включить в результат лишние столбцы, если задача просит только два поля.

  1. Выбрать таблицу «Ученики» источником данных: она содержит нужные сведения.
  2. Добавить в поля результата «Фамилия» и «Класс», не выбирая остальные столбцы.
  3. Оставить условие отбора пустым, потому что нужны все записи таблицы.

Ответ: запрос покажет фамилию и класс каждого ученика. Если в таблице есть другие поля, например дата рождения, они в результат не попадут. Исходные данные при этом останутся без изменений.

Выбрать товары стоимостью не выше 500 рублей

Условие: из таблицы «Товары» нужно получить название и цену товаров, стоимость которых не выше 500 рублей. Здесь важно отдельно определить столбцы результата и отдельно ограничить список записей. Сравнение задаётся для числового поля цены, поэтому число 500 записывается как число, а не текст.

  1. Указать таблицу «Товары» источником данных.
  2. Добавить в результат поля «Название» и «Цена».
  3. Для поля «Цена» задать условие «меньше или равно 500».
  4. Проверить, что результат содержит только товары с подходящей ценой.

Ответ: запрос выведет названия и цены товаров стоимостью не выше 500 рублей. Товары дороже этой суммы не пройдут отбор, но останутся в исходной таблице. Если цена одного из товаров изменится, при следующем выполнении запроса результат будет сформирован заново.

Найти заказы за период и упорядочить по дате

Условие: в таблице «Заказы» нужно вывести номер, дату и сумму заказов за указанный период, расположив их от ранних дат к поздним. Границы периода задают условие отбора, а порядок записей — отдельную настройку сортировки. Их нельзя смешивать: даты определяют, какие заказы включить, сортировка — как показать подходящие.

  1. Выбрать таблицу «Заказы» источником данных.
  2. Включить в поля результата «Номер», «Дата» и «Сумма».
  3. Задать для даты две границы: не раньше начала периода и не позже его конца.
  4. Установить сортировку по полю «Дата» по возрастанию.
  5. Проверить, что в выдаче нет дат за пределами периода и что даты идут от ранних к поздним.

Ответ: результат содержит номер, дату и сумму каждого заказа за заданный период, упорядоченные по дате. Если границы периода включены в условия сравнением «не раньше» и «не позже», заказы, совершённые в эти даты, тоже попадут в результат. Таблица «Заказы» при такой выборке не перестраивается и не изменяется.

Типичные ошибки

Путать условие отбора с выбором полей — значит смешивать вопрос «какие записи нужны?» с вопросом «какие столбцы показать?». Такую путаницу допускают, когда оба действия настраивают одновременно в конструкторе. Проверь себя двумя вопросами: отбор ограничивает строки, а список полей определяет столбцы результата.

Текстовое значение без кавычек или числовое значение, записанное как текст, может быть понято программой не так, как задумано. Ошибка возникает, если не учитывать тип данных поля: числа сравниваются как числовые значения, а текст — как последовательность символов. Проверь тип поля и формат условия; например, число 500 указывай числом, а текстовое название заключай в кавычки, если этого требует используемая система.

Считать, что сортировка меняет данные в исходной таблице, — неверно: она упорядочивает только результат запроса. Это заблуждение появляется потому, что выданный список выглядит как переставленная таблица. Чтобы проверить себя, открой исходную таблицу отдельно и убедись, что настройка сортировки запроса не меняет хранящийся в ней порядок.

Ожидать от запроса неизменный снимок данных — значит забывать, что выборка обычно строится заново по текущему содержимому таблиц. Это легко предположить, если воспринимать результат как сохранённую копию. Проверь запрос после изменения исходной записи: если новая выборка пересчиталась, значит, она отражает актуальные данные.

Связь с другими темами

Чтобы работать с запросами, нужно понимать устройство реляционной базы данных: таблицу, запись, поле и ключ. Запрос обращается к полям и записям, поэтому без этих понятий трудно определить, что именно выбирать. Ключ помогает различать записи и связывать данные из разных таблиц.

Запросы используют связи между таблицами, когда нужные сведения хранятся в разных местах. Благодаря связям можно получить совместный результат, например показать данные заказа вместе с именем покупателя. Это позволяет не дублировать одни и те же сведения в каждой таблице.

Выборки применяют при подготовке отчётов и форм: запрос помогает передать им только нужные данные и упорядочить их. Работа с запросами также подготавливает к изучению SQL и дальнейшей обработке баз данных. Понимание отбора и сортировки полезно везде, где нужно искать и представлять структурированную информацию.

Что запомнить

  • Запрос позволяет получать нужные сведения из базы данных по заданным правилам.
  • Запрос на выборку не изменяет исходные записи.
  • Поля результата задают столбцы, а условия отбора — подходящие записи.
  • Сортировка определяет порядок записей в результате запроса.
  • Один запрос может использовать несколько связанных таблиц.
  • Конструктор запросов и SQL позволяют описывать одну и ту же задачу разными способами.

Частые вопросы по теме

Чем запрос отличается от таблицы?

Таблица хранит данные в полях и записях, а запрос задаёт правила, по которым из этих данных формируется результат. Он может показать только нужные столбцы и записи, например учеников одного класса. Запрос не обязательно хранит отдельную копию результата.

Изменяет ли запрос исходные данные?

Запрос на выборку не изменяет записи в исходных таблицах. Он только показывает результат, сформированный по заданным правилам. Существуют и другие виды запросов, предназначенные для изменения данных, но в этой теме речь идёт о выборке.

Как отобрать записи, удовлетворяющие нескольким условиям?

Нужно задать условия для нужных полей и определить, должны ли они выполняться одновременно или достаточно одного из них. Например, условие «дата не раньше начала периода и не позже его конца» ограничивает выборку двумя границами сразу. В конструкторе и SQL эти правила задаются разными способами.

Можно ли в запросе использовать несколько таблиц?

Да, если нужные сведения находятся в связанных таблицах. Тогда источниками запроса становятся обе таблицы, а связь между ними помогает сопоставить относящиеся друг к другу записи. Так можно, например, получить сведения о заказе и его покупателе.

Зачем нужен SQL, если запрос можно создать в конструкторе?

Конструктор позволяет задавать поля, условия и сортировку в наглядной форме, а SQL записывает те же правила в виде команд. Запрос, созданный в конструкторе, система обычно может представить как SQL-код. Знание SQL помогает точнее создавать запросы и работать с базами данных в разных программах.

Спросить по теме параграфа

§ 18. Запросы

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
11 класс
Учебник
"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.