"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Запрос к базе данных помогает получить из таблиц именно те сведения, которые нужны для решения задачи: выбрать отдельные поля, отобрать записи по условиям и упорядочить результат. Запрос на выборку не меняет исходные данные, а формирует результат по текущему содержимому таблиц. Запросы составляют в конструкторе или описывают на SQL — эти способы задают одну и ту же логику получения данных.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Запрос к базе данных — обращение, которое позволяет получить из таблиц нужные сведения, отобрав или обработав записи по заданным условиям. Он нужен, когда в базе много информации и для задачи требуется только её часть. В запросе можно указать, какие данные показать и по каким правилам их найти.
Запрос на выборку — запрос, который выводит записи, удовлетворяющие условию, не изменяя исходные данные. Например, он может показать список заказов за месяц, оставив таблицу заказов нетронутой. Это удобно для просмотра и анализа: одни и те же данные можно представлять разными выборками.
Условие отбора — выражение, задающее, какие записи должны попасть в результат запроса. Оно может сравнивать значение поля с числом, текстом или датой, например оставлять только товары дешевле указанной цены. Условия помогают сузить результат до записей, подходящих под конкретную задачу.
Язык SQL — язык для описания запросов к реляционным базам данных, то есть базам, где данные организованы в таблицы. В конструкторе пользователь выбирает поля и задаёт условия, а программа переводит эти действия в SQL-команду. Поэтому конструктор и SQL — два способа описать, какие данные получить и как их отобрать.
Запрос формируется на основе одной или нескольких таблиц: сначала выбирают источники данных, затем указывают поля, которые должны попасть в результат. Источники нужны потому, что программа должна знать, где искать сведения. Выбор полей уменьшает результат до нужных столбцов: если требуется фамилия и класс ученика, остальные поля можно не выводить. Когда данные распределены между связанными таблицами, запрос может обратиться к обеим и сопоставить относящиеся друг к другу записи.
Условия отбора оставляют в результате только те записи, значения полей которых соответствуют заданным требованиям. Это позволяет получить не все товары, а, например, только товары дешевле определённой суммы. Если нужно выполнение двух требований одновременно, задают совместные условия: запись проходит отбор, только когда удовлетворяет каждому из них. Если подходят разные варианты, условия задают как альтернативы; тогда достаточно совпадения с одним вариантом.
Сортировка упорядочивает записи результата по выбранным полям, например по фамилии или дате. Она нужна, чтобы список было легче читать и сравнивать, особенно если записей много. Направление сортировки можно выбрать, например от ранних дат к поздним или наоборот. При этом сортируется именно выдача запроса, а не порядок записей в исходной таблице.
Запрос можно создать в конструкторе или описать на SQL. Конструктор удобен тем, что позволяет выбирать источники, поля, условия и сортировку в наглядной форме. SQL записывает ту же задачу командами, поэтому его полезно знать для точной настройки и работы в разных системах. В обоих вариантах нужно решить, какие данные нужны и по каким правилам их отбирать.
Результат запроса представляет собой выборку, сформированную по текущим данным таблиц. Запрос обычно не сохраняет неизменный снимок: при новом выполнении он снова проверяет записи, и результат может измениться. Например, если цена товара изменилась, запись может перестать удовлетворять условию «не выше 500 рублей». Так запрос показывает не отдельную копию таблицы, а результат применения заданных правил к актуальным данным.
| Элемент | Что задаёт | Роль в результате |
|---|---|---|
| Источник данных | Таблицу или таблицы, из которых берутся сведения | Определяет доступные записи и поля |
| Поля результата | Столбцы, которые нужно вывести | Определяют состав результата |
| Условие отбора | Требования к значениям полей | Оставляет подходящие записи |
| Сортировка | Поле и направление упорядочивания | Задаёт порядок записей в результате |
Пользуйся таблицей как планом создания запроса: сначала проверь, откуда брать данные, затем выбери столбцы и реши, какие записи подходят. После этого настрой порядок вывода, если результат нужно отсортировать. Такая последовательность помогает не спутать отбор записей с выбором полей.
Условие: в таблице «Ученики» нужно вывести фамилии и классы всех учеников. Ограничивать список по какому-либо признаку не требуется, значит, условие отбора не нужно. Важно не включить в результат лишние столбцы, если задача просит только два поля.
Ответ: запрос покажет фамилию и класс каждого ученика. Если в таблице есть другие поля, например дата рождения, они в результат не попадут. Исходные данные при этом останутся без изменений.
Условие: из таблицы «Товары» нужно получить название и цену товаров, стоимость которых не выше 500 рублей. Здесь важно отдельно определить столбцы результата и отдельно ограничить список записей. Сравнение задаётся для числового поля цены, поэтому число 500 записывается как число, а не текст.
Ответ: запрос выведет названия и цены товаров стоимостью не выше 500 рублей. Товары дороже этой суммы не пройдут отбор, но останутся в исходной таблице. Если цена одного из товаров изменится, при следующем выполнении запроса результат будет сформирован заново.
Условие: в таблице «Заказы» нужно вывести номер, дату и сумму заказов за указанный период, расположив их от ранних дат к поздним. Границы периода задают условие отбора, а порядок записей — отдельную настройку сортировки. Их нельзя смешивать: даты определяют, какие заказы включить, сортировка — как показать подходящие.
Ответ: результат содержит номер, дату и сумму каждого заказа за заданный период, упорядоченные по дате. Если границы периода включены в условия сравнением «не раньше» и «не позже», заказы, совершённые в эти даты, тоже попадут в результат. Таблица «Заказы» при такой выборке не перестраивается и не изменяется.
Путать условие отбора с выбором полей — значит смешивать вопрос «какие записи нужны?» с вопросом «какие столбцы показать?». Такую путаницу допускают, когда оба действия настраивают одновременно в конструкторе. Проверь себя двумя вопросами: отбор ограничивает строки, а список полей определяет столбцы результата.
Текстовое значение без кавычек или числовое значение, записанное как текст, может быть понято программой не так, как задумано. Ошибка возникает, если не учитывать тип данных поля: числа сравниваются как числовые значения, а текст — как последовательность символов. Проверь тип поля и формат условия; например, число 500 указывай числом, а текстовое название заключай в кавычки, если этого требует используемая система.
Считать, что сортировка меняет данные в исходной таблице, — неверно: она упорядочивает только результат запроса. Это заблуждение появляется потому, что выданный список выглядит как переставленная таблица. Чтобы проверить себя, открой исходную таблицу отдельно и убедись, что настройка сортировки запроса не меняет хранящийся в ней порядок.
Ожидать от запроса неизменный снимок данных — значит забывать, что выборка обычно строится заново по текущему содержимому таблиц. Это легко предположить, если воспринимать результат как сохранённую копию. Проверь запрос после изменения исходной записи: если новая выборка пересчиталась, значит, она отражает актуальные данные.
Чтобы работать с запросами, нужно понимать устройство реляционной базы данных: таблицу, запись, поле и ключ. Запрос обращается к полям и записям, поэтому без этих понятий трудно определить, что именно выбирать. Ключ помогает различать записи и связывать данные из разных таблиц.
Запросы используют связи между таблицами, когда нужные сведения хранятся в разных местах. Благодаря связям можно получить совместный результат, например показать данные заказа вместе с именем покупателя. Это позволяет не дублировать одни и те же сведения в каждой таблице.
Выборки применяют при подготовке отчётов и форм: запрос помогает передать им только нужные данные и упорядочить их. Работа с запросами также подготавливает к изучению SQL и дальнейшей обработке баз данных. Понимание отбора и сортировки полезно везде, где нужно искать и представлять структурированную информацию.
Чем запрос отличается от таблицы?
Таблица хранит данные в полях и записях, а запрос задаёт правила, по которым из этих данных формируется результат. Он может показать только нужные столбцы и записи, например учеников одного класса. Запрос не обязательно хранит отдельную копию результата.
Изменяет ли запрос исходные данные?
Запрос на выборку не изменяет записи в исходных таблицах. Он только показывает результат, сформированный по заданным правилам. Существуют и другие виды запросов, предназначенные для изменения данных, но в этой теме речь идёт о выборке.
Как отобрать записи, удовлетворяющие нескольким условиям?
Нужно задать условия для нужных полей и определить, должны ли они выполняться одновременно или достаточно одного из них. Например, условие «дата не раньше начала периода и не позже его конца» ограничивает выборку двумя границами сразу. В конструкторе и SQL эти правила задаются разными способами.
Можно ли в запросе использовать несколько таблиц?
Да, если нужные сведения находятся в связанных таблицах. Тогда источниками запроса становятся обе таблицы, а связь между ними помогает сопоставить относящиеся друг к другу записи. Так можно, например, получить сведения о заказе и его покупателе.
Зачем нужен SQL, если запрос можно создать в конструкторе?
Конструктор позволяет задавать поля, условия и сортировку в наглядной форме, а SQL записывает те же правила в виде команд. Запрос, созданный в конструкторе, система обычно может представить как SQL-код. Знание SQL помогает точнее создавать запросы и работать с базами данных в разных программах.
§ 18. Запросы