Создание простого запроса на выборку
Если вам нужно выбрать определенные данные из одного или нескольких источников, можно воспользоваться запросом на выборку. Запрос на выборку позволяет получить только необходимые сведения, а также помогает объединять информацию из нескольких источников. В качестве источников данных для запросов на выборку можно использовать таблицы и другие такие же запросы. В этом разделе вкратце рассматриваются запросы на выборку и предлагаются пошаговые инструкции по их созданию с помощью Мастера запросов либо в Конструктор.
Если вы хотите узнать больше о принципах работы запросов на примере базы данных Northwind, ознакомьтесь со статьей Общие сведения о запросах.
В этой статье
Общие сведения
Преимущества запросов
Запрос позволяет выполнять перечисленные ниже задачи.
-
Просматривать значения только из полей, которые вас интересуют. При открытии таблицы отображаются все поля. Вы можете сохранить запрос, который выдает лишь некоторые из них.
Примечание: Запрос только возвращает данные, но не сохраняет их. При сохранении запроса вы не сохраняете копию соответствующих данных.
-
Объединять данные из нескольких источников. В таблице обычно можно увидеть только те сведения, которые в ней хранятся. Запрос позволяет выбрать поля из разных источников и указать, как именно нужно объединить информацию.
-
Использовать выражения в качестве полей. Например, в роли поля может выступить функция, возвращающая дату, а с помощью функции форматирования можно управлять форматом значений из полей в результатах запроса.
-
Просматривать записи, которые отвечают указанным вами условиям. При открытии таблицы отображаются все записи. Вы можете сохранить запрос, который выдает лишь некоторые из них.
Основные этапы создания запроса на выборку
Вы можете создать запрос на выборку с помощью мастера или конструктора запросов. Некоторые элементы недоступны в мастере, однако их можно добавить позже из конструктора. Хотя это разные способы, основные этапы аналогичны.
-
Выберите таблицы или запросы, которые хотите использовать в качестве источников данных.
-
Укажите поля из источников данных, которые хотите включить в результаты.
-
Также можно задать условия, которые ограничивают набор возвращаемых запросов записей.
Создав запрос на выборку, запустите его, чтобы посмотреть результаты. Чтобы выполнить запрос на выборку, откройте его в режиме таблицы. Сохранив запрос, вы сможете использовать его позже (например, в качестве источника данных для формы, отчета или другого запроса).
Создание запроса на выборку с помощью мастера запросов
Мастер позволяет автоматически создать запрос на выборку. При использовании мастера вы не полностью контролируете все детали процесса, однако таким способом запрос обычно создается быстрее. Кроме того, мастер иногда обнаруживает в запросе простые ошибки и предлагает выбрать другое действие.
Подготовка
Дополнительную информацию о создании отношений между таблицами можно найти в статье Руководство по связям между таблицами.
Использование мастера запросов
-
На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов.
-
В диалоговом окне Новый запрос выберите пункт Простой запрос и нажмите кнопку ОК.
-
Теперь добавьте поля.
Для каждого поля выполните два указанных ниже действия.
-
В разделе Таблицы и запросы щелкните таблицу или запрос, содержащие поле.
-
В разделе Доступные поля дважды щелкните поле, чтобы добавить его в список Выбранные поля. Если вы хотите добавить в запрос все поля, нажмите кнопку с двумя стрелками вправо (>>).
-
Добавив в запрос все необходимые поля, нажмите кнопку Далее.
-
-
Если вы не добавили ни одного числового поля (поля, содержащего числовые данные), перейдите к действию 9. При добавлении числового поля вам потребуется выбрать, что именно вернет запрос: подробности или итоговые данные.
Выполните одно из указанных ниже действий.
-
Если вы хотите просмотреть отдельные записи, выберите пункт подробный и нажмите кнопку Далее. Перейдите к действию 9.
-
Если вам нужны итоговые числовые данные, например средние значения, выберите пункт
итоговый и нажмите кнопку Итоги.
-
-
В диалоговом окне Итоги укажите необходимые поля и типы итоговых данных. В списке будут доступны только числовые поля.
Для каждого числового поля выберите одну из перечисленных ниже функций.
-
Sum — запрос вернет сумму всех значений, указанных в поле.
-
Avg — запрос вернет среднее значение поля.
-
Min — запрос вернет минимальное значение, указанное в поле.
-
Max — запрос вернет максимальное значение, указанное в поле.
-
-
Если вы хотите, чтобы в результатах запроса отобразилось число записей в источнике данных, установите соответствующий флажок Подсчет числа записей в (название источника данных).
-
Нажмите ОК, чтобы закрыть диалоговое окно Итоги.
-
Если вы не добавили в запрос ни одного поля даты и времени, перейдите к действию 9. Если вы добавили в запрос поля даты и времени, мастер запросов предложит вам выбрать способ группировки значений даты. Предположим, вы добавили в запрос числовое поле («Цена») и поле даты и времени («Время_транзакции»), а затем в диалоговом окне Итоги указали, что хотите отобразить среднее значение по числовому полю «Цена». Поскольку вы добавили поле даты и времени, вы можете подсчитать итоговые величины для каждого уникального значения даты и времени, например для каждого месяца, квартала или года.
Выберите период, который хотите использовать для группировки значений даты и времени, а затем нажмите кнопку Далее.
Примечание: В режиме конструктора для группировки значений по периодам можно использовать выражения, однако в мастере доступны только указанные здесь варианты.
-
На последней странице мастера задайте название запроса, укажите, хотите ли вы открыть или изменить его, и нажмите кнопку Готово.
Если вы решили открыть запрос, он отобразит выбранные данные в режиме таблицы. Если вы решили изменить запрос, он откроется в режиме конструктора.
К началу страницы
Создание запроса в режиме конструктора
В режиме конструктора можно вручную создать запрос на выборку. В этом режиме вы полнее контролируете процесс создания запроса, однако здесь легче допустить ошибку и необходимо больше времени, чем в мастере.
Создание запроса
Действие 1. Добавьте источники данных
При использовании режима конструктора для добавления источников данных вы добавляете источники данных и поля в отдельных шагах. Однако вы всегда можете добавить дополнительные источники позже.
-
На вкладке Создание в группе Другое нажмите кнопку Конструктор запросов.
-
Дважды щелкните каждый источник данных, который вы хотите использовать, или выберите каждый источник данных, а затем нажмите кнопку Добавить.
Автоматическое соединение
Если между добавляемыми источниками данных уже заданы отношения, они автоматически добавляются в запрос в качестве соединений. Соединения определяют, как именно следует объединять данные из связанных источников. Access также автоматически создает соединение между двумя таблицами, если они содержат поля с совместимыми типами данных и одно из них — первичный ключ.
Вы можете настроить соединения, добавленные приложением Access. Access выбирает тип создаваемого соединения на основе отношения, которое ему соответствует. Если Access создает соединение, но для него не определено отношение, Access добавляет внутреннее соединение.
Если приложение Access при добавлении источников данных автоматически создало соединения правильных типов, вы можете перейти к действию 3 (добавление выводимых полей).
Повторное использование одного источника данных
В некоторых случаях вы хотите присоединиться к двум копиям одной и той же таблицы или запроса, которые называются самосоединение, объединяя записи из той же таблицы, если в Объединенных полях есть совпадающие значения. Например, предположим, что у вас есть таблица Employees, в которой поле «подчиняется» для записи каждого сотрудника отображает его идентификатор своего руководителя вместо имени. Вы можете использовать самосоединение для отображения имени руководителя в записи каждого сотрудника.
При добавлении источника данных во второй раз Access присвоит имени второго экземпляра окончание «_1». Например, при повторном добавлении таблицы «Сотрудники» ее второй экземпляр будет называться «Сотрудники_1».
Действие 2. Соедините связанные источники данных
Если источники данных, добавленные в запрос, уже имеют отношения, Access автоматически создает внутреннее соединение для каждой связи. Если целостность данных применяется, Access также отображает «1» над линией соединения, чтобы показать, какая таблица находится на стороне «один» в отношение «один-ко-многим» и символ бесконечности (∞), чтобы показать, какая таблица находится на стороне «многие».
Если вы добавили в запрос другие запросы и не создали между ними отношения, Access не создает автоматических соединений ни между ними, ни между запросами и таблицами, которые не связаны между собой. Если Access не создает соединения при добавлении источников данных, как правило, их следует создать вручную. Источники данных, которые не соединены с другими источниками, могут привести к проблемам в результатах запроса.
Кроме того, можно сменить тип соединения с внутреннего на внешнее соединение, чтобы запрос включал больше записей.
Добавление соединения
-
Чтобы создать соединение, перетащите поле из одного источника данных в соответствующее поле в другом источнике.
Access добавит линию между двумя полями, чтобы показать, что они соединены.
Изменение соединения
-
Дважды щелкните соединение, которое требуется изменить.
Откроется диалоговое окно Параметры соединения.
-
Ознакомьтесь с тремя вариантами в диалоговом окне Параметры соединения.
-
Выберите нужный вариант и нажмите кнопку ОК.
После создания соединений можно добавить выводимые поля: они будут содержать данные, которые должны отображаться в результатах.
Действие 3. Добавьте выводимые поля
Вы можете легко добавить поле из любого источника данных, добавленного в действии 1.
-
Для этого перетащите поле из источника в верхней области окна конструктора запросов вниз в строку Поле бланка запроса (в нижней части окна конструктора).
При добавлении поля таким образом Access автоматически заполняет строку Таблица в таблице конструктора в соответствии с источником данных поля.
Совет: Чтобы быстро добавить все поля в строку «Поле» бланка запроса, дважды щелкните имя таблицы или запроса в верхней области, чтобы выделить все поля в нем, а затем перетащите их все сразу вниз на бланк.
Использование выражения в качестве выводимого поля
Вы можете использовать выражение в качестве выводимого поля для вычислений или создания результатов запроса с помощью функции. В выражениях могут использоваться данные из любых источников запроса, а также функции, например Format или InStr, константы и арифметические операторы.
-
В пустом столбце таблицы запроса щелкните строку Поле правой кнопкой мыши и выберите в контекстном меню пункт Масштаб.
-
В поле Масштаб введите или вставьте необходимое выражение. Перед выражением введите имя, которое хотите использовать для результата выражения, а после него — двоеточие. Например, чтобы обозначить результат выражения как «Последнее обновление», введите перед ним фразу Последнее обновление:.
Примечание: С помощью выражений можно выполнять самые разные задачи. Их подробное рассмотрение выходит за рамки этой статьи. Дополнительные сведения о создании выражений см. в статье Создание выражений.
Действие 4. Укажите условия
Этот этап является необязательным.
С помощью условий можно ограничить количество записей, которые возвращает запрос, выбирая только те из них, значения полей в которых отвечают заданным критериям.
Определение условий для выводимого поля
-
В таблице конструктора запросов в строке Условие отбора поля, значения в котором вы хотите отфильтровать, введите выражение, которому должны удовлетворять значения в поле для включения в результат. Например, чтобы включить в запрос только записи, в которых в поле «Город» указано «Рязань», введите Рязань в строке Условие отбора под этим полем.
Различные примеры выражений условий для запросов можно найти в статье Примеры условий запроса.
-
Укажите альтернативные условия в строке или под строкой Условие отбора.
Когда указаны альтернативные условия, запись включается в результаты запроса, если значение соответствующего поля удовлетворяет любому из указанных условий.
Условия для нескольких полей
Условия можно задать для нескольких полей. В этом случае для включения записи в результаты должны выполняться все условия в соответствующей строке Условия отбора либо Или.
Настройка условий на основе поля, которое не включается в вывод
Вы можете добавить в запрос поле, но не включать его значения в выводимые результаты. Это позволяет использовать содержимое поля для ограничения результатов, но при этом не отображать его.
-
Добавьте поле в таблицу запроса.
-
Снимите для него флажок в строке Показывать.
-
Задайте условия, как для выводимого поля.
Действие 5. Рассчитайте итоговые значения
Этот этап является необязательным.
Вы также можете вычислить итоговые значения для числовых данных. Например, может потребоваться просмотреть среднюю цену или общие продажи.
Для расчета итоговых значений в запросе используется строка Итого. По умолчанию строка Итого не отображается в режиме конструктора.
-
Когда запрос открыт в конструкторе, на вкладке «Конструктор» в группе «Показать или скрыть» нажмите кнопку Итоги.
Access отобразит строку Итого на бланке запроса.
-
Для каждого необходимого поля в строке Итого выберите нужную функцию. Набор доступных функций зависит от типа данных в поле.
Дополнительные сведения о функциях строки «Итого» в запросах см. в статье Суммирование или подсчет значений в таблице с помощью строки «Итого».
Действие 6. Просмотрите результаты
Чтобы увидеть результаты запроса, на вкладке «Конструктор» нажмите кнопку Выполнить. Access отобразит результаты запроса в режиме таблицы.
Чтобы вернуться в режим конструктора и внести в запрос изменения, щелкните Главная > Вид > Конструктор.
Настраивайте поля, выражения или условия и повторно выполняйте запрос, пока он не будет возвращать нужные данные.
К началу страницы
Создание простого запроса на выборку
Если вам нужно выбрать определенные данные из одного или нескольких источников, можно воспользоваться запросом на выборку. Запрос на выборку позволяет получить только необходимые сведения, а также помогает объединять информацию из нескольких источников. В качестве источников данных для запросов на выборку можно использовать таблицы и другие такие же запросы. В этом разделе вкратце рассматриваются запросы на выборку и предлагаются пошаговые инструкции по их созданию с помощью Мастера запросов либо в Конструктор.
Если вы хотите узнать больше о принципах работы запросов на примере базы данных Northwind, ознакомьтесь со статьей Общие сведения о запросах.
В этой статье
Общие сведения
Когда возникает потребность в каких-то данных, редко бывает необходимо все содержимое одной таблицы. Например, если вам нужна информация из таблицы контактов, как правило, речь идет о конкретной записи или только о номере телефона. Иногда бывает необходимо объединить данные сразу из нескольких таблиц, например совместить информацию о клиентах со сведениями о заказчиках. Для выбора необходимых данных используются запросы на выборку.
Запрос на выборку — это объект базы данных, который показывает сведения в Режим таблицы. Запрос не хранит данные, но содержит данные, которые хранятся в таблицах. В запросе можно отобразить данные из одной или нескольких таблиц, из других запросов или из двух сочетаний.
Преимущества запросов
Запрос позволяет выполнять перечисленные ниже задачи.
-
Просматривать значения только из полей, которые вас интересуют. При открытии таблицы отображаются все поля. Вы можете сохранить запрос, который выдает лишь некоторые из них.
Примечание: Запрос только возвращает данные, но не сохраняет их. При сохранении запроса вы не сохраняете копию соответствующих данных.
-
Объединять данные из нескольких источников. В таблице обычно можно увидеть только те сведения, которые в ней хранятся. Запрос позволяет выбрать поля из разных источников и указать, как именно нужно объединить информацию.
-
Использовать выражения в качестве полей. Например, в роли поля может выступить функция, возвращающая дату, а с помощью функции форматирования можно управлять форматом значений из полей в результатах запроса.
-
Просматривать записи, которые отвечают указанным вами условиям. При открытии таблицы отображаются все записи. Вы можете сохранить запрос, который выдает лишь некоторые из них.
Основные этапы создания запроса на выборку
Вы можете создать запрос на выборку с помощью мастера или конструктора запросов. Некоторые элементы недоступны в мастере, однако их можно добавить позже из конструктора. Хотя это разные способы, основные этапы аналогичны.
-
Выберите таблицы или запросы, которые хотите использовать в качестве источников данных.
-
Укажите поля из источников данных, которые хотите включить в результаты.
-
Также можно задать условия, которые ограничивают набор возвращаемых запросов записей.
Создав запрос на выборку, запустите его, чтобы посмотреть результаты. Чтобы выполнить запрос на выборку, откройте его в режиме таблицы. Сохранив запрос, вы сможете использовать его позже (например, в качестве источника данных для формы, отчета или другого запроса).
Создание запроса на выборку с помощью мастера запросов
Мастер позволяет автоматически создать запрос на выборку. При использовании мастера вы не полностью контролируете все детали процесса, однако таким способом запрос обычно создается быстрее. Кроме того, мастер иногда обнаруживает в запросе простые ошибки и предлагает выбрать другое действие.
Подготовка
Если вы используете поля из источников данных, которые не связаны между собой, мастер запросов предлагает создать между ними отношения. Он откроет окно отношений, однако если вы внесете какие-то изменения, то вам потребуется перезапустить мастер. Таким образом, перед запуском мастера имеет смысл сразу создать все отношения, которые потребуются вашему запросу.
Дополнительную информацию о создании отношений между таблицами можно найти в статье Руководство по связям между таблицами.
Использование мастера запросов
-
На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов.
-
В диалоговом окне Новый запрос выберите пункт Простой запрос и нажмите кнопку ОК.
-
Теперь добавьте поля. Вы можете добавить до 255 полей из 32 таблиц или запросов.
Для каждого поля выполните два указанных ниже действия.
-
В разделе Таблицы и запросы щелкните таблицу или запрос, содержащие поле.
-
В разделе Доступные поля дважды щелкните поле, чтобы добавить его в список Выбранные поля. Если вы хотите добавить в запрос все поля, нажмите кнопку с двумя стрелками вправо (>>).
-
Добавив в запрос все необходимые поля, нажмите кнопку Далее.
-
-
Если вы не добавили ни одного числового поля (поля, содержащего числовые данные), перейдите к действию 9. При добавлении числового поля вам потребуется выбрать, что именно вернет запрос: подробности или итоговые данные.
Выполните одно из указанных ниже действий.
-
Если вы хотите просмотреть отдельные записи, выберите пункт подробный и нажмите кнопку Далее. Перейдите к действию 9.
-
Если вам нужны итоговые числовые данные, например средние значения, выберите пункт итоговый и нажмите кнопку Итоги.
-
-
В диалоговом окне Итоги укажите необходимые поля и типы итоговых данных. В списке будут доступны только числовые поля.
Для каждого числового поля выберите одну из перечисленных ниже функций.
-
Sum — запрос вернет сумму всех значений, указанных в поле.
-
Avg — запрос вернет среднее значение поля.
-
Min — запрос вернет минимальное значение, указанное в поле.
-
Max — запрос вернет максимальное значение, указанное в поле.
-
-
Если вы хотите, чтобы в результатах запроса отобразилось число записей в источнике данных, установите соответствующий флажок Подсчет числа записей в (название источника данных).
-
Нажмите ОК, чтобы закрыть диалоговое окно Итоги.
-
Если вы не добавили в запрос ни одного поля даты и времени, перейдите к действию 9. Если вы добавили в запрос поля даты и времени, мастер запросов предложит вам выбрать способ группировки значений даты. Предположим, вы добавили в запрос числовое поле («Цена») и поле даты и времени («Время_транзакции»), а затем в диалоговом окне Итоги указали, что хотите отобразить среднее значение по числовому полю «Цена». Поскольку вы добавили поле даты и времени, вы можете подсчитать итоговые величины для каждого уникального значения даты и времени, например для каждого месяца, квартала или года.
Выберите период, который хотите использовать для группировки значений даты и времени, а затем нажмите кнопку Далее.
Примечание: В режиме конструктора для группировки значений по периодам можно использовать выражения, однако в мастере доступны только указанные здесь варианты.
-
На последней странице мастера задайте название запроса, укажите, хотите ли вы открыть или изменить его, и нажмите кнопку Готово.
Если вы решили открыть запрос, он отобразит выбранные данные в режиме таблицы. Если вы решили изменить запрос, он откроется в режиме конструктора.
К началу страницы
Создание запроса в режиме конструктора
В режиме конструктора можно вручную создать запрос на выборку. В этом режиме вы полнее контролируете процесс создания запроса, однако здесь легче допустить ошибку и необходимо больше времени, чем в мастере.
Создание запроса
Действие 1. Добавьте источники данных
При использовании режима конструктора для добавления источников данных вы добавляете источники данных и поля в отдельных шагах. Однако вы всегда можете добавить дополнительные источники позже.
-
На вкладке Создание в группе Другое нажмите кнопку Конструктор запросов.
-
Дважды щелкните каждый источник данных, который вы хотите использовать, или выберите каждый источник данных, а затем нажмите кнопку Добавить.
Автоматическое соединение
Если между добавляемыми источниками данных уже заданы отношения, они автоматически добавляются в запрос в качестве соединений. Соединения определяют, как именно следует объединять данные из связанных источников. Access также автоматически создает соединение между двумя таблицами, если они содержат поля с совместимыми типами данных и одно из них — первичный ключ.
Вы можете настроить соединения, добавленные приложением Access. Access выбирает тип создаваемого соединения на основе отношения, которое ему соответствует. Если Access создает соединение, но для него не определено отношение, Access добавляет внутреннее соединение.
Если приложение Access при добавлении источников данных автоматически создало соединения правильных типов, вы можете перейти к действию 3 (добавление выводимых полей).
Повторное использование одного источника данных
В некоторых случаях вы хотите присоединиться к двум копиям одной и той же таблицы или запроса, которые называются самосоединение, объединяя записи из той же таблицы, если в Объединенных полях есть совпадающие значения. Например, предположим, что у вас есть таблица Employees, в которой поле «подчиняется» для записи каждого сотрудника отображает его идентификатор своего руководителя вместо имени. Вы можете использовать самосоединение для отображения имени руководителя в записи каждого сотрудника.
При добавлении источника данных во второй раз Access присвоит имени второго экземпляра окончание «_1». Например, при повторном добавлении таблицы «Сотрудники» ее второй экземпляр будет называться «Сотрудники_1».
Действие 2. Соедините связанные источники данных
Если источники данных, добавленные в запрос, уже имеют отношения, Access автоматически создает внутреннее соединение для каждой связи. Если целостность данных применяется, Access также отображает «1» над линией соединения, чтобы показать, какая таблица находится на стороне «один» в отношение «один-ко-многим» и символ бесконечности (∞), чтобы показать, какая таблица находится на стороне «многие».
Если вы добавили в запрос другие запросы и не создали между ними отношения, Access не создает автоматических соединений ни между ними, ни между запросами и таблицами, которые не связаны между собой. Если Access не создает соединения при добавлении источников данных, как правило, их следует создать вручную. Источники данных, которые не соединены с другими источниками, могут привести к проблемам в результатах запроса.
Кроме того, можно сменить тип соединения с внутреннего на внешнее соединение, чтобы запрос включал больше записей.
Добавление соединения
-
Чтобы создать соединение, перетащите поле из одного источника данных в соответствующее поле в другом источнике.
Access добавит линию между двумя полями, чтобы показать, что они соединены.
Изменение соединения
-
Дважды щелкните соединение, которое требуется изменить.
Откроется диалоговое окно Параметры соединения.
-
Ознакомьтесь с тремя вариантами в диалоговом окне Параметры соединения.
-
Выберите нужный вариант и нажмите кнопку ОК.
После создания соединений можно добавить выводимые поля: они будут содержать данные, которые должны отображаться в результатах.
Действие 3. Добавьте выводимые поля
Вы можете легко добавить поле из любого источника данных, добавленного в действии 1.
-
Для этого перетащите поле из источника в верхней области окна конструктора запросов вниз в строку Поле бланка запроса (в нижней части окна конструктора).
При добавлении поля таким образом Access автоматически заполняет строку Таблица в таблице конструктора в соответствии с источником данных поля.
Совет: Чтобы быстро добавить все поля в строку «Поле» бланка запроса, дважды щелкните имя таблицы или запроса в верхней области, чтобы выделить все поля в нем, а затем перетащите их все сразу вниз на бланк.
Использование выражения в качестве выводимого поля
Вы можете использовать выражение в качестве выводимого поля для вычислений или создания результатов запроса с помощью функции. В выражениях могут использоваться данные из любых источников запроса, а также функции, например Format или InStr, константы и арифметические операторы.
-
В пустом столбце таблицы запроса щелкните строку Поле правой кнопкой мыши и выберите в контекстном меню пункт Масштаб.
-
В поле Масштаб введите или вставьте необходимое выражение. Перед выражением введите имя, которое хотите использовать для результата выражения, а после него — двоеточие. Например, чтобы обозначить результат выражения как «Последнее обновление», введите перед ним фразу Последнее обновление:.
Примечание: С помощью выражений можно выполнять самые разные задачи. Их подробное рассмотрение выходит за рамки этой статьи. Дополнительные сведения о создании выражений см. в статье Создание выражений.
Действие 4. Укажите условия
Этот этап является необязательным.
С помощью условий можно ограничить количество записей, которые возвращает запрос, выбирая только те из них, значения полей в которых отвечают заданным критериям.
Определение условий для выводимого поля
-
В таблице конструктора запросов в строке Условие отбора поля, значения в котором вы хотите отфильтровать, введите выражение, которому должны удовлетворять значения в поле для включения в результат. Например, чтобы включить в запрос только записи, в которых в поле «Город» указано «Рязань», введите Рязань в строке Условие отбора под этим полем.
Различные примеры выражений условий для запросов можно найти в статье Примеры условий запроса.
-
Укажите альтернативные условия в строке или под строкой Условие отбора.
Когда указаны альтернативные условия, запись включается в результаты запроса, если значение соответствующего поля удовлетворяет любому из указанных условий.
Условия для нескольких полей
Условия можно задать для нескольких полей. В этом случае для включения записи в результаты должны выполняться все условия в соответствующей строке Условия отбора либо Или.
Настройка условий на основе поля, которое не включается в вывод
Вы можете добавить в запрос поле, но не включать его значения в выводимые результаты. Это позволяет использовать содержимое поля для ограничения результатов, но при этом не отображать его.
-
Добавьте поле в таблицу запроса.
-
Снимите для него флажок в строке Показывать.
-
Задайте условия, как для выводимого поля.
Действие 5. Рассчитайте итоговые значения
Этот этап является необязательным.
Вы также можете вычислить итоговые значения для числовых данных. Например, может потребоваться просмотреть среднюю цену или общие продажи.
Для расчета итоговых значений в запросе используется строка Итого. По умолчанию строка Итого не отображается в режиме конструктора.
-
Когда запрос открыт в конструкторе, на вкладке «Конструктор» в группе «Показать или скрыть» нажмите кнопку Итоги.
Access отобразит строку Итого на бланке запроса.
-
Для каждого необходимого поля в строке Итого выберите нужную функцию. Набор доступных функций зависит от типа данных в поле.
Дополнительные сведения о функциях строки «Итого» в запросах см. в статье Суммирование или подсчет значений в таблице с помощью строки «Итого».
Действие 6. Просмотрите результаты
Чтобы увидеть результаты запроса, на вкладке «Конструктор» нажмите кнопку Выполнить. Access отобразит результаты запроса в режиме таблицы.
Чтобы вернуться в режим конструктора и внести в запрос изменения, щелкните Главная > Вид > Конструктор.
Настраивайте поля, выражения или условия и повторно выполняйте запрос, пока он не будет возвращать нужные данные.
К началу страницы
Создание запросов в базе данных Access 2007
2.4. Microsoft Access 2007
2.4.5. Создание запросов и поиск информации в базе данных
В СУБД Access 2007 можно создавать queries для отображения требуемых полей из записей одной или нескольких таблиц.
В СУБД Access 2007 применяются различные типы запросов: на выборку, на обновление, на добавление, на удаление, перекрестный query, выполнение вычислений, создание таблиц. Наиболее распространенным является query на выборку. Применяются два типа запросов: query по образцу (QBE) и query на основе структурированного языка запросов (SQL).
Запросы на выборку используются для отбора требуемой пользователю информации, содержащейся в нескольких таблицах. Они создаются только для связанных таблиц. Queries могут основываться как на нескольких таблицах, так и существующих запросах. СУБД Access 2007 включает такие средства создания запросов, как Мастер и Конструктор.
Кроме того, в СУБД Access 2007 существует множество средств для поиска и отображения информации, которая хранится в базе данных. Данные в таблицах можно отсортировать на основе любого поля или комбинации полей. Для извлечения из базы данных необходимых записей можно отфильтровать таблицу, применив средства фильтрации.
На скриншоте (рисунок 1) средства сортировки и фильтрации выделены скругленным прямоугольником красного цвета.
Рис. 1.
Рассмотрим создание запроса на выборку с помощью Конструктора
Для создания нового пустого запроса в режиме конструктора надо щелкнуть на пиктограмме Конструктор запросов (рисунок 2).
Рис. 2.
Откроется активное окно диалога Добавление таблицы (рисунок 3) на фоне неактивного окна «Запрос1». В этом окне можно выбрать таблицы и queries для создания новых запросов.
Рис. 3.
В окне Добавление таблицы следует выбрать несколько таблиц из представленного списка таблиц, на основе которых будет проводиться выбор данных, и щелкнуть на кнопке Добавить. После этого закрыть окно Добавление таблицы, а окно «Запрос1» станет активным (рисунок 4).
Рис. 4.
Окно Конструктора состоит из двух частей – верхней и нижней. В верхней части окна размещается схема данных запроса, которая содержит список связанных таблиц. В нижней части окна находится Бланк построения запроса QBE, в котором каждая строка выполняет определенную функцию.
Переместим имена полей с таблиц-источников в Бланк. Из таблицы Группы студентов переместим поле Название в первое поле Бланка, из таблицы Студенты переместим поле Фамилии во второе поле, а из таблицы Успеваемость переместим поле Оценка в третье поле и из таблицы Дисциплины переместим поле Название в четвертое поле Бланка запросов.
При необходимости можно задать принцип сортировки (по возрастанию или по убыванию) результатов запроса. В строке «Вывод на экран» автоматически устанавливается флажок просмотра информации.
Условия ограниченного поиска или критерий поиска информации вводится в строке «Условия» отбора и строке «Или». Например, введем критерий поиска — «5/A» в строке «Условия» для поля Оценка. В этом случае в результате выполнения запроса на экране будут отображаться все фамилии студентов, которые получили оценку 5/A (рисунок. 5).
Рис. 5.
Далее надо закрыть окно запроса Запрос1, появится окно диалога Сохранить, ответить — Да и ввести имя запроса, например «Успеваемость студентов». Для запуска запроса дважды щелкнем на query «Успеваемость студентов», откроется таблица с результатами выполненного запроса (рис. 6).
Рис. 6.
Далее создаем параметрический query или query с параметрами. Создаем этот query также как и предыдущий, в режиме конструктора, но только в строке Условия отбора для поля Фамилия введем условие отбора в виде приглашения в квадратных скобках, например [Введите фамилию]. В этом случае в результате выполнения запроса на экране будет отображаться фамилия студента и все дисциплины, по которым он получил оценку.
Закрыть окно запроса на выборку. На вопрос о сохранении изменения ответить — Да и ввести имя запроса, например «Параметрический query». Запустим Параметрический query, дважды щелкнув на нем. В открывшемся на экране окне диалога «Введите значение параметра» надо ввести фамилию студента, информацию об успеваемости которого необходимо получить (рис. 8).
Рис. 7.
Затем надо щелкнуть на кнопке ОК, откроется таблица с результатами выполненного запроса (рис. 8).
Рис. 8.
В некоторых случаях для создания запросов можно использовать Мастер запросов. После создания запросов на выборку информации из БД Access 2007 можно приступать к формированию форм.
Далее >>> Раздел: 2.4.6. Создание форм для ввода данных в таблицы базы данных Access 2007
Как создать запрос к базе данных Microsoft Access
Создание запросов к базе данных, это все равно, что отправка приказа на другом языке.
Поэтому начнем с того, что разберемся с минимальным набором команд в языке запросов, а так же создадим пару запросов.
Язык запросов и условия отбора.
Отправляя запрос к базе данных пользователь обычно указывает имена полей которые должны отобразиться в запросе, а так же критерии, по которым отбираются данные в таблицу запроса.
Это все равно, что дать библиотекарю задачу подобрать книжки на какую-то тематику, — тема будет критерием, раздел или стеллаж будет полем в котором будет осуществляться поиск.
В условии отбора так же необходимо указать степень соответствия критерия содержанию ячейки базы данных.
Like равно
> больше
< меньше
>= больше или равно
<= меньше или равно
<> неравно
Так же нужны логические функции:
AND – (И) если нужно, чтобы выполнялись сразу несколько условий
OR – (ИЛИ) если нужно чтобы выполнялось хоть одно условие
NOT – (НЕ) если нужно отобрать записи, исключив подходящие по критерию
Пример условия отбора к полю дата поступления может быть таким
Like 12.12.2016 — будут отобраны строчки таблицы в которых дата будет 12. 12.2016.
<> 12.12.2016 — будут отобраны строчки таблицы в которых дата будет 11.12.2016 и раньше, 13.12.2016 и позже.
> 12.12.2016 — будет отобраны строки в которых дата начинается с 13.12.2016.
Если нам нужно усложнить отбор, то можно использовать логические функции И, ИЛИ и НЕ.
К примеру, если мы хотим выбрать дату поступления товара с 10.10.2015 до 12.12.2016, то если мы запишем >=10.10.2015, то будут отобраны даты и позже 12.12.2016, поэтому используем логическую функцию И.
>=10.10.2015 AND <= 12.12.2016
Как создавать запрос с помощью конструктора
1. Нажимаем на вкладку «Создать», а затем на кнопку «Конструктор запросов».
(Рисунок 1)
2. В окне «Добавление таблицы» выбираем таблицу и нажимаем «Добавить», а затем «Закрыть».
(Рисунок 2)
3. Выбираем имя таблицы или таблиц.
(Рисунок 3)
4. Выбираем имена столбцов, которые нам нужно получить в отчете о запросе.
(Рисунок 4)
5. Пишем условие выбора к полям (столбцам) таблицы, указывая критерий по которому будет производиться отбор.
(Рисунок 5)
6. Нажимаем серый крестик, чтобы закрыть конструктор запросов, если нужно записываем название запроса, нажимаем «ок»
(Рисунок 6)
7. Дважды кликаем на запросе, чтобы увидеть таблицу с отчетом о результатах запроса.
(Рисунок 7)
Пример запроса.
Поиск товаров поступивших 12.09.2015 или в диапазоне дат между 01.01.2016 и 12.12.2016.
Простой запрос, может пригодиться, если нужно отобрать данные о товарах для распродажи.
(Рисунок 8)
Если запрос не работает
1. Запрос введен правильно, но не работает, то либо таких данных нет, либо тип данных в данном столбце – текстовый.
2. Команды в запросе введены слитно, без пробелов.
3. Если очень много текста, а критерий точно задать нельзя, то можно использовать * (звездочку), которая означает любое количество символов. Так можно в тексте найти человека по фамилии *Иванов*. Так как поиск осуществляется по кодам символов, то текст должен полностью соответствовать. По запросу Like *Иванов* в итоговую таблицу попадут все Ивановичи, Ивановы, Поливановы, так как мы задали маску по которой будут отбираться записи (строчки таблицы) и легко видеть, что в фамилии Иванович есть некоторое количество символов после Иванов, а в фамилии Поливанов, есть некоторое количество символов до Иванов. Так же следует обратить внимание на кавычки, так как звездочки должны стоять до и после кавычек обозначающих, что внутри них текст — Like *”Иванов”*
4. Выбор типа запроса осуществляется на ленте конструктора — запрос на удаление, добавление, создание таблицы.
(Рисунок 9)
Еще записи по теме
Выполнение запросов к базам данных
Выполнение запросов к базам данных
C помощью запросов можно:
занести одинаковые данные одновременно для группы объектов;
производить копирование данных из одного поля в другое для группы объектов;
произвести выборку данных из базы в соответствии с заданными условиями;
и т. д.
Для выполнения запросов к базе данных не с карты, а по введенным условиям отбора надо:
Войти в режим информации, для этого нажать на панели инструментов кнопку .
Сделать активным слой, по которому надо получить информацию или нажать и удерживать клавиши Ctrl+Shift.
Сделать щелчок левой кнопкой мыши на объекте активного слоя, в открывшемся окне семантической информации выбрать вкладку Запрос.
Убедиться в том, что количество записей в базе соответствует количеству объектов на карте. Для обновления числа записей надо нажать кнопку .
Примечание Несоответствие количеству записей и объектов в базе может быть в следующих случаях:
при начале работы с базой данных, т. е. когда графические объекты уже нанесены на карту, а записи в базе данных еще не созданы (автоматически запись создается при штучном занесении данных), тогда в заголовке окна семантической информации имеется надпись Нет данных;
при удалении графических объектов (или группы объектов), в этом случае ZuluGIS не удаляет записи в подключенной семантической базе данных для сохранения целостности данных в СУБД на случай отмены операции удаления.
При необходимости очистить поля запроса с помощью кнопки .
Написать условия запроса, удобней всего использовать кнопку . Для внесения изменений используется оператор ИЗМЕНИТЬ/CHANGETO (см. дальше).
Если запрос должен производиться не по всей базе, а по выделенной группе объектов, то утопить кнопку (группа предварительно должна быть выделена).
Для выполнения запроса нажать кнопку .
Условия запроса
Любая запись в строке запроса поля БД интерпретируется как условие соответствия значения выбранного поля значению, введенному в строке. На одной строке может быть записано несколько условий, которые отделяются друг от друга запятой: <Выражение 1>,< Выражение 2>,< Выражение3>. Если условия записаны сразу в нескольких полях запроса, то при формировании строк ответа эти условия объединяются логической функцией И (AND).
При записи условий в системе ZuluGIS можно использовать константы, идентификаторы, функции, операторы.
Рисунок 533. Окно семантической информации. Вкладка Запрос
Идентификаторы
Это поля базы данных. При этом каждое поле имеет свой псевдоним, который можно использовать при написании запросов. Например, F4 + F5, т.е. выбрать те записи, у которых значение поля равно сумме полей с псевдонимами F4 и F5.
Константы
Используют для сравнения со значениями в полях таблиц, могут быть строковыми, числовыми. Тип константы (значение, с которым необходимо сравнивать значения в поле таблицы) должен совпадать с типом данных в этом поле. Т. е., если поле является числовым, то и сравнивать нужно с числом. В противном случае возникает сообщение о несоответствии типов.
Функции
Встроенные функции системы, такие как суммирование, нахождение минимального, максимального значения и т. д. Следует учитывать, что такие функции, как нахождение среднего, минимального или максимального значения можно применять только к числовым полям. В противном случае появляется сообщение о несоответствии типов.
Операторы
Арифметические операции: +, -, *, /.
Операции сравнения: =,<,>,<=,>=.
Логические операции: AND, OR, NOT.
Запрос к базе данных набирается в виде условий отбора соответствующих полей. Для числовых полей условие отбора может содержать просто число (при проверке на равенство), а также операторы сравнения (> – больше, < – меньше, >= – больше либо равно, <= – меньше либо равно, <> – не равно).
Для символьных полей возможно использование маски поиска, с применением оператора * (например, маске *Невск* соответствует «Невский проспект» и «Невская улица»).
Для открытия списка функций и операторов надо нажать кнопку .
Операторы и функции могут отображаться как на русском, так и на английском языке. Для того, чтобы настроить язык отображения надо в окне семантической информации сделать щелчок правой кнопкой мыши, в появившемся контекстном меню выбрать пункт Язык ключевых слов и выбрать нужный язык.
Рисунок 534. Выбор языка для отображения операторов
Операторы и функции, использующиеся при написании запросов, описаны в таблице
ниже:
Таблица 6.
Оператор | Пояснение | |||
---|---|---|---|---|
НЕ (NOT), И (AND), ИЛИ (OR) | Логическое НЕ , И, ИЛИ. | |||
ИЗМЕНИТЬ (CHANGETO) | Оператор обновления данных. Значение поля в выборке будет изменено на значение, указанное в параметре этого оператора. Например, в результате запроса вида ИЗМЕНИТЬ Воронежская, в указанном поле будет внесено Воронежская. Данный оператор по умолчанию применяется ко всей базе данных! Если требуется внести данные определенным объектам, то их предварительно необходимо выделить. Операция изменения отката (возврата) НЕ ИМЕЕТ!
| |||
ПУСТО (BLANK) | Логический оператор. Принимает значение истина если поле пусто. Может использоваться для поиска полей в которых отсутствуют данные. | |||
, | Запятая, оператор разделения условий. | |||
ЧИСЛО (COUNT) | Оператор подсчета количества записей, удовлетворяющих остальным условиям. Результат запроса появится в закладке Статистика. С помощью него возможно подсчитать количество домов на определенной улице, количество трубопроводов определенного диаметра, количество отключенных потребителей и т.д. | |||
СРЕДНЕЕ (AVG) | Оператор подсчета среднего значения поля. Результат запроса появится в закладке Статистика. | |||
СУММА (SUM) | Оператор подсчета суммы значений. Результат запроса появится в закладке Статистика. | |||
МАКС (MAX) | Оператор подсчета максимального значения поля. Результат запроса появится в закладке Статистика. | |||
МИН (MIN) | Оператор подсчета минимального значения поля. Результат запроса появится в закладке Статистика. |
Так же помимо приведенных выше операторов и функций существуют дополнительные параметры:
Таблица 7.
Оператор | Пояснение |
---|---|
ТИП (TYPE) | Параметр возвращает объекты, относящиеся к заданному типу (ID объекта). Результат запроса появится в закладке Ответ. Записывается в виде ТИП =X, где X номер типа в структуре слоя. |
РЕЖИМ (MODE) | Параметр возвращает объекты, относящиеся к заданному режиму объекта. Результат запроса появится в закладке Ответ. Записывается в виде РЕЖИМ =Y, где Y порядковый номер режима в структуре слоя. |
ДЛИНА (LENGTH) | Параметр возвращает длину объекта, взятую с карты. Используется при локальной системе координат. Результат запроса появится в закладке Ответ. Для внесения длинны в определенное поле оператор используется совместно с оператором ИЗМЕНИТЬ. |
ПЕРИМЕТР (PERIMETER) | Параметр возвращает периметр объекта, взятый с карты. Используется при локальной системе координат. Результат запроса появится в закладке Ответ. Для внесения периметра в определенное поле оператор используется совместно с оператором ИЗМЕНИТЬ. |
ПЛОЩАДЬ (AREA) | Параметр возвращает площадь объекта, взятую с карты. Используется при локальной системе координат. Результат запроса появится в закладке Ответ. Для внесения площади в определенное поле оператор используется совместно с оператором ИЗМЕНИТЬ. |
ДЛИНА_СФ (LENGTH_SPH) | Параметр возвращает длину объекта, взятую с карты. Используется при географической системе координат. Результат запроса появится в закладке Ответ. |
ПЕРИМЕТР_СФ (PERIMETER_SPH) | Параметр возвращает периметр объекта, взятый с карты. Используется при географической системе координат. Результат запроса появится в закладке Ответ. |
ПЛОЩАДЬ_СФ (AREA_SPH) | Параметр возвращает длину объекта, взятую с карты. Используется при географической системе координат. Результат запроса появится в закладке Ответ. |
ТЕКСТ (TEXT) | Параметр возвращает текстовое значение объекта. Данный оператор может использоваться в том случае, если например имеется слой с высотными отметками в виде текстовых объектов и требуется их значения перенести в семантическую базу данных. Для этого в базе должно быть создано поле для отметок и в нем выполнен запрос вида ИЗМЕНИТЬ ТЕКСТ. |
Электронный учебник по OpenOffice
Упражнение 1. Откройте базу данных.
Задание: откройте базу данных, созданную на предыдущем уроке.
Упражнение 2. Создание запроса.
Задание: создайте запрос, содержащий следующую информацию: ФАМИЛИЯ, ГРУППА и ОЦЕНКИ ЗА ЗАЧЕТЫ.
Если вы хотите, чтобы в отчете присутствовала и информация о классе, в котором учится ученик, т.е. использовать информацию сразу из двух таблиц, можно составить запрос.
1. В окне выберите вкладку Запросы. 2. В окне Задачи выберете Создать запрос в режиме дизайна. 3. На переднем плане вы увидите окно диалога {Добавление таблицы}. 4. Поочередно выделите каждую из таблиц и нажмите кнопку Добавить (или дважды щелкните по названию каждой таблицы). 5. Закройте окно диалога {Добавление таблицы}. 6. Перетащите имя поля ФАМИЛИЯ, ГРУППА из списка полей таблицы АНКЕТА во вторую клетку строки Поле бланка запроса (в нижней половине окна). Вместо перетаскивания можно использовать двойной щелчок мыши по имени поля. 7. Таким же образом перетащите в следующие ячейки строки Поле имена ЗАЧЕТ №1, ЗАЧЕТ №2, ЗАЧЕТ №3 из списка полей таблицы ИНФОРМАТИКА-ЗАЧЕТЫ. 8. Сохраните запрос под именем Списки. 9. Выполните команду Запрос — Выполнить запрос. Просмотрите список учащихся.Упражнение 3. Сортировка в запросе.
Задание: отсортируйте имеющийся список по классам.
1. Вернитесь в режим конструктора запроса. 2. Щелкните мышью в строке Сортировка под именем поля ГРУППА. 3. Появится кнопка, раскрывающая список возможных сортировок, выберите По возрастанию. 4. Закройте запрос.Упражнение 4 . Создание запроса по образцу с условиями.
Задание: подготовьте список отличников, т.е. учащихся, сдавших все зачеты на отлично.
В этом случае должны выполняться условия: и за первый зачет пятерка, и за второй, и за третий.
1. В окне выберите вкладку Запросы. Нажмите кнопку Создать. Выберите Режим дизайна. 2. В окне диалога выберите имеющиеся таблицы по порядку. 3. Перетащите все поля из списка полей таблицы информатика-зачеты в первую строку бланка запроса. 4. Если вы не хотите, чтобы результаты запросов выводились на экран, снимите флажок и в строке Вывод на экран под именами полей, отражающих результаты зачетов. 5. В строке критерии отбора под именем каждого поля-зачета проставьте «5». В этом случае, когда вы размещаете условия в одной строке, между этими условиями устанавливается союз ”и”, т.е. эти условия должны выполняться одновременно. 6. Сохраните запрос под именем ОТЛИЧНИКИ. 7. Выполните запрос. Таблица должна содержать список отличников с указанием класса. 8. Закройте запрос.Упражнение 5. Использование союза ИЛИ при создании запроса.
Задание: подготовьте список двоечников. Подготовьте списки тех учащихся, которые имеют двойки. В этом случае должно выполняться условие: или за первый зачет двойка, или за второй, или за третий (т.е. хотя бы одна двойка). 1. Создайте новый запрос, добавьте две таблицы: АНКЕТА и ИНФОРМАТИКА-ЗАЧЕТЫ. 2. Перетащите в первую строку бланка запроса имена полей ФИО, ГРУППА, ЗАЧЕТ №1, ЗАЧЕТ №2, ЗАЧЕТ №3. 3. Понятно, что условием должна быть двойка; когда двойка стоит не сразу за все три зачета, а хотя бы за один. Т.е. условия должны быть соединены союзом “ИЛИ”. В этом случае условия располагают не в одной, а в разных строках. 4. Сохраните запрос под именем Двоечники. 5. Выполните запрос. Закройте запрос.Упражнение 6. Создание нового поля в запросе.
Задание: подсчитайте сумму баллов за зачеты. 1. В окне выберете вкладку Запросы. Нажмите кнопку Создать. Выберете Режим Дизайна. 2. В окне диалога выберете имеющиеся таблицы и закройте окно диалога. 3. Перетащите нужные поля из списка полей в первую строку бланка запроса. 4.Постройте выражение: «Зачет №1» + «Зачет №2» + «Зачет №3» 5. Создайте ПСЕВДОНИМ Сумма. 6. В строке Сортировка выберете По убыванию. 7. Сохраните запрос под именем Список1. 8. Выполните запрос.Как правильно выполнить длинный запрос к активной базе данных?
Мы используем SQL Server 2012 EE, но в настоящее время у нас нет возможности запускать запросы на зеркале R/O, хотя это моя долгосрочная цель, хотя я обеспокоен тем, что могу столкнуться с нижеприведенной проблемой и в этом сценарии, так как зеркало также будет обновлять данные, которые я запрашиваю.
У меня есть представление, которое объединяет несколько таблиц из двух баз данных и используется для выставления счетов из существующих данных. Три из этих таблиц также активно обновляются текущими транзакциями. Запуск отчета, который использовал это представление, раньше не был проблемой, но теперь наша база данных становится намного больше, и я столкнулся с некоторыми проблемами тайм-аута. Сначала запрос был тайм-аут, поэтому я установил тайм-аут команды на 0 и повторно запустил запрос, который привязал все 4 CPUs 100% в течение 90 минут, а затем убил его. В то время не было никаких проблем с активными транзакциями. Я просмотрел запрос и обнаружил, что поле, к которому я присоединялся, не было индексировано, поэтому создал индекс для этого поля, повторил отчет, который затем закончился через три минуты, и все CPUs были заняты, но совсем не привязаны. Оба раза запрашивался один и тот же объем данных. Я решил, что проблема решена. Конечно, позже мой босс запустил аналогичный запрос, возможно, с некоторыми дополнительными данными, но, вероятно, не намного больше, и наши текущие транзакции начали отсчитывать время 100%, пока его запрос выполнялся. За это время у меня не было возможности увидеть использование CPU.
Итак, у меня есть два вопроса:
Учитывая, что я должен использовать живую и активную базу данных, как правильно выполнить длинный запрос R/O, чтобы активные транзакции все еще могли продолжаться? Я рассматриваю возможность отсутствия замка, но надеюсь, что есть лучшая стандартная практика.
И что может заставить sqlserver привязать 4 CPUs с 100% занятыми и не вызывать тайм-ауты живых транзакций, но когда мой босс запустил свой запрос, после того как я добавил индекс и мой запрос работал намного лучше, транзакции live update начали тайм-аут 100%?
Я знаю, что это не так уж много информации, чтобы продолжать. Я не очень хорошо знаком с профилированием sql и мониторингом производительности, но это поведение кажется довольно странным, и я надеюсь, что лучшая практика будет правильным обходным путем.
sql-server tsql command-timeoutПоделиться Источник Dave 03 октября 2014 в 14:52
2 ответа
- Как заставить этот запрос активной записи работать
В моей БД есть куча списков с разными названиями городов. Я пытаюсь сохранить в этой БД только те списки, которые имеют название города = X, и удалить все остальные города. Я пытаюсь выполнить следующий запрос активной записи: @unwanted_cities = Listing.where(‘city not in (?)’, Listing.where(‘city…
- Symfony 2: Глобальный Запрос К Базе Данных
Как бы я выполнил запрос к базе данных на каждой странице в Symfony2 bundle? Я пытаюсь создать онлайн-функциональность ВОЗ, но для этого требуется, чтобы запрос выполнялся глобально. Спасибо! 🙂
2
Поведение по умолчанию запросов SELECT
на уровне изоляции транзакций READ_COMMITTED
заключается в получении общих блокировок во время выполнения запроса для обеспечения требуемой согласованности данных (только чтение зафиксированных данных). Эти блокировки обычно выполняются на уровне строк и быстро снимаются во время выполнения запроса сразу после чтения каждой строки. Существуют также менее детализированные блокировки намерений на уровне страниц и таблиц, предотвращающие одновременное обновление данных по мере их чтения. В зависимости от особенностей плана выполнения могут даже существовать общие блокировки, удерживаемые на уровне таблицы на протяжении всего запроса, что предотвратит обновление таблицы во время выполнения запроса и приведет к блокировке читателей записывающими устройствами.
Установка параметра базы данных READ_COMMITTED_SNAPSHOT
приводит к тому, что SQL Server использует управление версиями строк вместо блокировки для обеспечения той же согласованности чтения. Хранилище версий строк поддерживается в базе данных tempdb, так что если строка, запрошенная запросом, изменилась с момента начала запроса, то вместо нее возвращается самая последняя зафиксированная версия строки. Такое поведение управления версиями строк позволяет избежать блокировки и эффективно обеспечивает моментальный снимок базы данных на уровне оператора в момент начала запроса. Читатели не блокируют писателей, а писатели не блокируют читателей. Не путайте параметр базы данных READ_COMMITTED_SNAPSHOT
с уровнем изоляции SNAPSHOT
(распространенная ошибка).
Недостатком установки READ_COMMITTED_SNAPSHOT
является дополнительное использование ресурсов. Дополнительные 14 байт накладных расходов на хранение для каждой строки возникают, как только опция базы данных включена. Обновления и удаления будут генерировать версии строк в базе данных tempdb. Эти версии требуют места в базе данных tempdb на время выполнения самого длинного запроса, а также накладных расходов на обслуживание хранилища версий. Также подумайте, есть ли у вас существующие приложения, которые зависят от поведения блокировки readers-block-writers. Несмотря на эти накладные расходы, преимущества параллелизма могут привести к повышению общей производительности в зависимости от рабочей нагрузки, обеспечивая при этом целостность чтения. См . http://technet.microsoft.com/en-us/library/ms188277.aspx для получения дополнительной информации.
Поделиться Dan Guzman 04 октября 2014 в 14:42
1
На самом деле я решил создавать моментальный снимок в начале каждого месяца для составления отчетов. Затем удалите его, когда он больше не нужен для отчетности. Это, кажется, работает нормально. Я мог бы сделать что-то подобное с восстановлением базы данных, но немного больше работы. Это позволяет не нуждаться во второй лицензии SQL EE и позволяет мне запускать отчеты без таблиц блокировки для живых транзакций.
Поделиться Dave 03 октября 2014 в 22:35
Похожие вопросы:
как выполнить запрос к набору данных?
у меня есть набор данных, который содержит любую базу данных. как выполнить любой запрос к этому набору данных ?
как правильно использовать подключение к базе данных
У меня есть программа Winforms, которая подключается к SQL Server 2008. Есть 100 пользователей, которые подключаются к этой базе данных и запустите поисковый запрос —> и обновите базу данных. Я…
Запрос Базы Данных С Учетом Регистра
Возможный Дубликат : mysql запрос с учетом регистра я работаю над сценарием PHP, который проверяет некоторые значения на те, что есть в базе данных. До сих пор я думал, что это работает правильно,…
Как заставить этот запрос активной записи работать
В моей БД есть куча списков с разными названиями городов. Я пытаюсь сохранить в этой БД только те списки, которые имеют название города = X, и удалить все остальные города. Я пытаюсь выполнить…
Symfony 2: Глобальный Запрос К Базе Данных
Как бы я выполнил запрос к базе данных на каждой странице в Symfony2 bundle? Я пытаюсь создать онлайн-функциональность ВОЗ, но для этого требуется, чтобы запрос выполнялся глобально. Спасибо! 🙂
Нужно выполнить запрос к базе данных при закрытии браузера
мне нужно выполнить запрос MySQL к базе данных, когда пользователь закрывает свой browser.i я разрабатываю приложение, где, когда пользователь входит в поле базы данных lo-gin_status имеет значение…
Mysql dump-Как выполнить длинный запрос с экранированием?
Я экспортирую базу данных roundcube MySQL с помощью Mysqldump , но, к сожалению, она терпит неудачу, когда я использую длинный запрос. Как я могу избежать этого, чтобы это сработало? туздышпр -Т…
Laravel Запрос К Базе Данных
Я пытаюсь написать запрос MySQL select с помощью конструктора запросов базы данных Laravel следующим образом: Выберите все проекты, в которых author_id проекта равно id пользователя или где group_id…
Запуск запроса базы данных в datastage без каких-либо входов или выходов
Относительно новый для datastage, вполне возможно, глупый вопрос. Из datastage я хочу запустить запрос базы данных к базе данных SQL Server. Запрос представляет собой запрос на удаление с жестко…
MySQL запрос: как можно было бы выполнить запрос к базе данных mysql с использованием Java?
У меня есть две таблицы в одной базе данных… как можно было бы выполнить запрос к базе данных mysql с использованием Java? Мне нужно сделать это, чтобы найти LIKE элементов USERNAME COLUMN в…
Как писать простые запросы
Как запросить базу данных SQL:
- Убедитесь, что у вас есть приложение для управления базой данных (например, MySQL Workbench, Sequel Pro).
- Если нет, загрузите приложение для управления базой данных и вместе с вашей компанией подключите вашу базу данных.
- Изучите свою базу данных и ее иерархию.
- Узнайте, какие поля есть в ваших таблицах.
- Начните писать SQL-запрос, чтобы получить желаемые данные.
Вы когда-нибудь слышали о компьютерном языке SQL? Возможно, вы слышали об этом в контексте анализа данных, но никогда не думали, что это применимо к вам как к маркетологу.Или вы, возможно, подумали: «Это действительно для , действительно опытных пользователей данных . Я никогда не смогу этого сделать».
Что ж, более ошибаюсь! Самые успешные маркетологи руководствуются данными, и одна из наиболее важных составляющих работы с данными — это возможность быстро собирать данные из баз данных. SQL оказался одним из лучших и самых популярных инструментов для этого.
SQL — это язык структурированных запросов, который используется, когда у компаний есть тонны данных, которыми они хотят легко и быстро манипулировать. Если ваша компания уже хранит данные в базе данных, вам может потребоваться изучить SQL для доступа к данным. Но не волнуйтесь — вы находитесь в нужном месте, чтобы начать!
Прежде чем мы начнем, убедитесь, что у вас есть приложение для управления базой данных, которое позволит вам извлекать данные из вашей базы данных. Некоторые варианты включают MySQL Workbench или Sequel Pro. Начните с загрузки одного из этих вариантов, а затем поговорите со своей компанией о том, как подключиться к вашей базе данных. Выбранный вами вариант будет зависеть от серверной части вашего продукта, поэтому проконсультируйтесь со своей командой разработчиков, чтобы убедиться, что вы выбрали правильный.
Давайте прыгнем прямо.
Зачем нужен SQL?
Прелесть SQL в том, что любой, кто работает в компании, хранящей данные в реляционной базе данных, может его использовать. (И, скорее всего, ваш.)
Если вы работаете в компании-разработчике программного обеспечения и хотите получить данные об использовании своих клиентов, вы можете сделать это с помощью SQL. Если вы работаете в компании электронной торговли, у которой есть данные о покупках клиентов, вы можете использовать SQL, чтобы узнать, какие клиенты какие продукты покупают. Конечно, это лишь некоторые из многих-многих примеров.
Подумайте об этом так: вы когда-нибудь открывали в Excel очень большой набор данных только для того, чтобы ваш компьютер зависал или даже выключался? SQL позволяет вам получить доступ только к определенным частям ваших данных за раз, поэтому вам не нужно загружать данные в CSV, манипулировать ими и, возможно, перегружать Excel. Другими словами, SQL заботится об анализе данных, который вы, возможно, привыкли делать в Excel. (Если вы хотите немного подробнее изучить этот аспект SQL, вот статья в блоге, с которой вы можете начать.)
Как писать простые SQL-запросы
Понять иерархию вашей базы данных
Прежде чем вы начнете, важно привыкнуть к вашей базе данных и ее иерархии.Если у вас есть несколько баз данных данных, вам нужно сосредоточить внимание на том, где находятся данные, с которыми вы хотите работать.
Например, представим, что мы работаем с несколькими базами данных о людях в Соединенных Штатах. Введите запрос «ПОКАЗАТЬ БАЗЫ ДАННЫХ;». Наши результаты могут показать, что у вас есть несколько баз данных для разных мест, включая одну для Новой Англии.
В вашей базе данных у вас будут разные таблицы, содержащие данные, с которыми вы хотите работать. Используя тот же пример выше, допустим, мы хотим выяснить, какая информация содержится в одной из баз данных.Если мы воспользуемся запросом «ПОКАЗАТЬ ТАБЛИЦЫ в Новой Англии;», мы обнаружим, что у нас есть таблицы для каждого штата Новой Англии: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland и people_vermont.
Наконец, вам нужно выяснить, какие поля находятся в таблицах. Поля — это определенные фрагменты данных, которые вы можете извлечь из своей базы данных. Например, если вы хотите получить чей-то адрес, имя поля может быть не просто «адресом» — оно может быть разделено на address_city, address_state, address_zip. Чтобы в этом разобраться, воспользуйтесь запросом «Describe people_massachusetts;». Это предоставит список всех данных, которые вы можете получить с помощью SQL.
Давайте быстро рассмотрим иерархию на примере Новой Англии:
- Наша база данных: NewEngland.
- Наши таблицы в этой базе данных: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland и people_vermont.
- Наши поля в таблице people_massachusetts включают: address_city, address_state, address_zip, hair_color, first_name и last_name.
Теперь, чтобы научиться писать простой SQL-запрос, давайте воспользуемся следующим примером:
Кто эти люди с рыжими волосами в Массачусетсе, родившиеся в 2003 году, в алфавитном порядке?
ВЫБРАТЬ
SELECT выбирает поля, которые вы хотите отобразить на диаграмме. Это конкретная информация, которую вы хотите извлечь из своей базы данных. В приведенном выше примере мы хотим найти человек , которые соответствуют остальным критериям.
Вот наш SQL-запрос:
ВЫБРАТЬ
first_name,
last_name
ИЗ
FROM определяет таблицу, из которой вы хотите извлечь данные. В предыдущем разделе мы обнаружили, что существует шесть таблиц для каждого из шести штатов Новой Англии: people_connecticut, people_maine, people_massachusetts, people_newhampshire, people_rhodeisland и people_vermont. Поскольку мы ищем людей конкретно в Массачусетсе, мы будем извлекать данные из этой конкретной таблицы.
Вот наш SQL-запрос:
ВЫБРАТЬ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
WHERE позволяет вам фильтровать ваш запрос, чтобы быть более конкретным. В нашем примере мы хотим отфильтровать наш запрос, чтобы он включал только людей с рыжими волосами, родившихся в 2003 году. Начнем с фильтра рыжих волос.
Вот наш SQL-запрос:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
hair_color могло быть частью вашего первоначального оператора SELECT, если бы вы хотели посмотреть на всех людей в Массачусетсе вместе с их конкретным цветом волос.Но если вы хотите отфильтровать только человек с рыжими волосами, вы можете сделать это в операторе WHERE.
И
AND позволяет добавлять дополнительные критерии к оператору WHERE. Помните, что мы хотим фильтровать людей с рыжими волосами в дополнение к людям, родившимся в 2003 году. Поскольку наше выражение WHERE основано на критериях рыжих волос, как мы можем фильтровать и по конкретному году рождения?
Вот где на помощь приходит оператор AND. В этом случае оператор AND является свойством даты, но это не обязательно. (Примечание. Уточняйте формат дат с командой разработчиков продукта, чтобы убедиться, что он указан в правильном формате.)
Вот наш SQL-запрос:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
AND
Дата рождения AND BETWEEN ‘2003-01-01’ 2003-12-31 ‘
ЗАКАЗАТЬ В
Когда вы создаете SQL-запросы, вам не нужно экспортировать данные в Excel.Расчет и организация должны выполняться в рамках запроса. Вот тут-то и пригодятся функции «ORDER BY» и «GROUP BY». Сначала мы рассмотрим наши SQL-запросы с функциями ORDER BY и затем GROUP BY соответственно. Затем мы кратко рассмотрим разницу между ними.
Предложение ORDER BY позволяет выполнять сортировку по любому из полей, указанных в операторе SELECT. В этом случае будем заказывать по фамилии.
Вот наш SQL-запрос:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
AND
Дата рождения AND BETWEEN ‘2003-01-01’ 2003-12-31 ‘
ЗАКАЗАТЬ ПО
фамилия
;
ГРУППА ПО
«GROUP BY» похожа на «ORDER BY», но объединяет сходные данные.Например, если у вас есть дубликаты в ваших данных, вы можете использовать «GROUP BY» для подсчета количества дубликатов в ваших полях.
Вот ваш SQL-запрос:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
AND
Дата рождения AND BETWEEN ‘2003-01-01’ 2003-12-31 ‘
ГРУППА ПО
фамилия
;
ЗАКАЗ VS.
ГРУППА BYЧтобы ясно показать вам разницу между оператором «ORDER BY» и оператором «GROUP BY», давайте ненадолго выйдем за пределы нашего примера с Массачусетсом и рассмотрим очень простой набор данных. Ниже приведен список идентификационных номеров и имен четырех сотрудников.
Если бы мы использовали оператор ORDER BY в этом списке, имена сотрудников были бы отсортированы в алфавитном порядке. Результат будет выглядеть так:
Если бы мы использовали оператор GROUP BY, подсчет сотрудников производился бы на основе того, сколько раз они появлялись в исходной таблице.Обратите внимание, что Петр дважды появлялся в исходной таблице. Результат будет выглядеть так:
Со мной так далеко? Хорошо. Вернемся к создаваемому нами SQL-запросу о рыжеволосых людях из Массачусетса, родившихся в 2003 году.
ПРЕДЕЛ
В зависимости от количества данных, имеющихся в вашей базе данных, выполнение запросов может занять много времени. Это может быть неприятно, если вы обнаружите, что долго ждете выполнения запроса, с которого действительно не хотели начинать.Если вы хотите протестировать наш запрос, отлично подойдет функция LIMIT, поскольку она позволяет ограничить количество получаемых результатов.
Например, если мы подозреваем, что в Массачусетсе есть миллионы людей с рыжими волосами, мы можем протестировать наш запрос с помощью LIMIT, прежде чем запускать его полностью, чтобы убедиться, что мы получаем нужную информацию. Скажем, например, мы хотим видеть только первых 100 человек.
Вот наш SQL-запрос:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
AND
Дата рождения AND BETWEEN ‘2003-01-01’ 2003-12-31 ‘
ЗАКАЗАТЬ ПО
фамилия
LIMIT
100
;
Вот и все по основам!
Чувствуете себя хорошо? Вот несколько других способов поднять ваши SQL-запросы на ступеньку выше.
Бонус: расширенные советы по SQL
Теперь, когда вы освоили создание SQL-запроса, давайте рассмотрим некоторые другие приемы, которые вы можете использовать, чтобы поднять его на ступеньку выше, начиная со звездочки.
*
Когда вы добавляете звездочку к одному из запросов SQL, она сообщает запросу, что вы хотите включить все столбцы данных в результаты. В примере, который мы использовали, у нас было только два имени столбца: first_name и last_name. Но предположим, что у нас есть данные объемом 15 столбцов, которые мы хотим видеть в наших результатах — было бы довольно сложно ввести все 15 имен столбцов в операторе SELECT.Вместо этого, если вы замените имена этих столбцов звездочкой, запрос будет знать, что все столбцы нужно включить в результаты.
Вот как будет выглядеть SQL-запрос:
ВЫБЕРИТЕ
*
ИЗ
people_massachusetts
ГДЕ
hair_color = «red»
И
дата рождения МЕЖДУ ‘2003-01-01’ И ‘2003-12-31 ‘
ЗАКАЗАТЬ ПО
фамилия
LIMIT
100
;
ПОСЛЕДНИЕ 30 ДНЕЙ
Когда я начал регулярно использовать SQL, я обнаружил, что один из моих постоянных запросов включал попытку выяснить, какие люди совершили действие или выполнили определенный набор критериев в течение последних 30 дней. Поскольку этот тип запросов был очень полезен для меня, я хотел поделиться с вами этой возможностью.
Давайте представим, что сегодня 1 декабря 2014 г. Вы, , могли бы создать эти параметры , сделав интервал Birth_date между 1 ноября 2014 г. и 30 ноября 2014 г. Этот SQL-запрос будет выглядеть так:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
AND
Дата рождения И Дата рождения BETWEEN ‘2014-11-01’ 2014-11-01 ‘ 2014-11-30 ‘
ЗАКАЗАТЬ ПО
фамилия
LIMIT
100
;
Но это потребовало бы размышлений о том, какие даты охватывают последние 30 дней, и это означало бы, что вам придется постоянно обновлять этот запрос. Вместо этого, чтобы даты автоматически охватывали последние 30 дней независимо от того, какой это день, вы можете ввести это в поле AND: Birth_date> = (DATE_SUB (CURDATE (), INTERVAL 30.
)(Примечание: вам нужно перепроверить этот синтаксис со своей командой разработчиков продукта, потому что он может отличаться в зависимости от программного обеспечения, которое вы используете для получения запросов SQL.)
Таким образом, ваш SQL-запрос будет выглядеть так:
ВЫБЕРИТЕ
first_name,
last_name
FROM
people_massachusetts
ГДЕ
hair_color = «red»
AND
Дата рождения> = (DATE_SUB) (CURDATE_DATE (CURD) 30))
ЗАКАЗАТЬ ПО
фамилия
LIMIT
100
;
СЧЕТ
В некоторых случаях вам может потребоваться подсчитать, сколько раз появляется критерий поля. Например, предположим, вы хотите подсчитать, сколько раз появляются разные цвета волос у людей, которых вы подсчитываете из Массачусетса. В этом случае вам пригодится COUNT, так что вам не придется вручную складывать количество людей с разными цветами волос или экспортировать эту информацию в Excel.
Вот как будет выглядеть этот SQL-запрос:
ВЫБЕРИТЕ
цвет_ волос,
КОЛИЧЕСТВО (цвет_ волос)
ОТ
people_massachusetts
И
дата рождения МЕЖДУ ‘2003-01-01’ И ‘2003-12-31’
ГРУППА ПО
цвет волос
;
ПРИСОЕДИНЯЙТЕСЬ
Может быть, в какой-то момент вам понадобится получить доступ к информации из двух разных таблиц в одном SQL-запросе.В SQL для этого можно использовать предложение JOIN. (Для тех из вас, кто знаком с формулами Excel, это похоже на то, как вы использовали бы формулу ВПР, когда вам нужно объединить информацию из двух разных листов в Excel. )
Например, предположим, что у нас есть одна таблица, в которой содержатся данные об идентификаторах пользователей всех жителей Массачусетса и их датах рождения. Предположим, у нас также есть полностью отдельная таблица, в которой есть данные об идентификаторах пользователей всех жителей Масачусетса и их цвете волос. Если мы хотим выяснить цвет волос жителей Массачусетса, родившихся в 2003 году, нам потребуется получить доступ к информации из обеих таблиц и объединить их.Это работает, потому что обе таблицы имеют совпадающий столбец: идентификаторы пользователей жителей Массачусетса.
Поскольку мы вызываем поля из двух разных таблиц, наш оператор SELECT также немного изменится. Вместо того, чтобы просто перечислять поля, которые мы хотим включить в наши результаты, нам нужно указать, из какой таблицы они берутся. (Примечание: здесь может пригодиться функция звездочки, поэтому ваш запрос включает обе таблицы в ваши результаты.)
Чтобы указать поле из определенной таблицы, все, что нам нужно сделать, это объединить имя таблицы с именем поля. Например, в нашем операторе SELECT будет сказано «table.field» — с точкой, разделяющей имя таблицы и имя поля.
Давайте посмотрим, как это выглядит в действии.
В этом случае мы предполагаем несколько вещей:
- Таблица дат рождения в Массачусетсе включает следующие поля: first_name, last_name, user_id, Birthdate
- Таблица цветов волос Массачусетса включает следующие поля: user_id, hair_color
Таким образом, ваш SQL-запрос будет выглядеть так:
ВЫБРАТЬ
Birthdate_massachusetts. first_name,
Birthdate_massachusetts. фамилия
ИЗ
Birthdate_massachusetts ПРИСОЕДИНЯЙТЕСЬ 31 ‘
ЗАКАЗАТЬ ПО
фамилия
;
Этот запрос соединит две таблицы с помощью поля user_id, которое появляется как в таблице Birthdate_massachusetts, так и в таблице haircolor_massachusetts. Тогда вы сможете увидеть таблицу людей, родившихся в 2003 году с рыжими волосами.
Поздравляем: вы готовы приступить к работе со своими собственными SQL-запросами! Хотя с SQL вы можете сделать гораздо больше, я надеюсь, что этот обзор основ оказался для вас полезным, чтобы вы могли запачкать руки. Обладая прочным основанием, вы сможете лучше ориентироваться в SQL и работать над некоторыми из более сложных примеров.
Какие данные вы хотите получать с помощью SQL?
Создать простой запрос выбора
Если вы хотите выбрать определенные данные из одного или нескольких источников, вы можете использовать запрос выбора.Запрос на выборку помогает получить только те данные, которые вам нужны, а также помогает объединить данные из нескольких источников данных. Вы можете использовать таблицы и другие запросы на выборку в качестве источников данных для запроса на выборку. В этом разделе представлен обзор запросов на выборку и приведены шаги по созданию запроса на выборку с помощью мастера запросов или в режиме конструктора.
Если вы хотите использовать образец базы данных Northwind, чтобы узнать больше о том, как работают запросы, см. Статью Введение в запросы.
В этой статье
Обзор
Когда вы хотите использовать данные, вы редко хотите использовать все данные из одной таблицы.Например, если вы хотите использовать данные из таблицы контактов, вы обычно хотите просмотреть одну конкретную запись или, может быть, только номер телефона. Иногда вам нужно объединить данные из нескольких таблиц, например объединить информацию о клиенте с информацией о заказе. Чтобы выбрать данные, которые вы хотите использовать, вы используете запрос выбора.
Запрос на выборку — это объект базы данных, который показывает информацию в режиме таблицы. Запрос не хранит данные, он отображает данные, которые хранятся в таблицах.Запрос может отображать данные из одной или нескольких таблиц, из других запросов или из их комбинации.
Преимущества использования запроса
Запрос позволяет:
Просматривайте данные только из тех полей, которые вам интересны. Когда вы открываете таблицу, вы видите все поля. Запрос — это удобный способ сохранить выборку полей.
Примечание: Запрос указывает только на данные, он не сохраняет данные.Когда вы сохраняете запрос, вы не сохраняете копию данных.
Объедините данные из нескольких источников данных. Таблица обычно отображает только те данные, которые она хранит. Запрос позволяет вам выбирать поля из различных источников и указывать, как следует комбинировать информацию.
Используйте выражения как поля. Например, вы можете использовать функцию Date в качестве поля или вы можете использовать функцию Format с полем для управления способом форматирования данных из поля в результатах запроса.
Просмотрите записи, соответствующие указанным вами критериям. Когда вы открываете таблицу, вы видите все записи. Запрос — это удобный способ сохранить выборку записей.
Основные шаги для создания запроса на выборку
Вы можете создать запрос на выборку с помощью мастера запросов или в режиме конструктора. Некоторые элементы дизайна недоступны при использовании мастера, но вы можете добавить эти элементы позже, используя представление «Дизайн».Хотя эти два метода несколько отличаются друг от друга, основные шаги по сути одинаковы:
Выберите таблицы или запросы, которые вы хотите использовать в качестве источников данных.
Укажите поля, которые вы хотите включить из источников данных.
При необходимости укажите критерии для ограничения записей, возвращаемых запросом.
После создания запроса на выборку вы запускаете его, чтобы увидеть результаты. Чтобы выполнить запрос на выборку, откройте его в режиме таблицы. Если вы сохраните запрос, вы можете повторно использовать его в любое время, например, в качестве источника данных для формы, отчета или другого запроса.
Используйте мастер запросов для создания запроса на выборку
Вы можете использовать мастер запросов для автоматического создания запроса на выборку. При использовании мастера у вас меньше контроля над деталями структуры запроса, но запрос обычно создается быстрее, чем если бы вы не использовали мастер.Более того, мастер может отловить некоторые простые ошибки дизайна и предложить вам выполнить другое действие.
Прежде чем начать
Если вы используете поля из источников данных, которые не связаны друг с другом, мастер запросов спросит вас, хотите ли вы создать отношения. Мастер открывает для вас окно Отношения , но вы должны перезапустить мастер, если вы редактируете какие-либо отношения. Поэтому перед запуском мастера рассмотрите возможность создания любых взаимосвязей, которые необходимы вашему запросу.
Дополнительные сведения о создании связей таблиц см. В статье «Руководство по связям таблиц».
Используйте мастер запросов
На вкладке Создать в группе Запросы щелкните Мастер запросов .
В диалоговом окне Новый запрос нажмите Мастер простых запросов , а затем нажмите ОК .
Затем вы добавляете поля. Вы можете добавить до 255 полей из 32 таблиц или запросов.
Для каждого поля выполните эти два шага:
В разделе Таблицы / запросы щелкните таблицу или запрос, содержащий поле.
В разделе Доступные поля дважды щелкните поле, чтобы добавить его в список Выбранные поля .Если вы хотите добавить все поля в свой запрос, нажмите кнопку с двойной стрелкой вправо (>>).
Когда вы добавили все нужные поля, нажмите Далее .
Если вы не добавляли числовые поля (поля, содержащие числовые данные), перейдите к шагу 9. Если вы добавили какие-либо числовые поля, мастер спросит, хотите ли вы, чтобы запрос возвращал подробные или сводные данные.
Выполните одно из следующих действий:
Если вы хотите просмотреть отдельные записи, нажмите Деталь , а затем нажмите Далее . Переходите к шагу 9.
Если вы хотите просмотреть сводные числовые данные, например средние, щелкните Сводка , а затем нажмите Параметры сводки .
В диалоговом окне Параметры сводки укажите, какие поля вы хотите суммировать, и как вы хотите суммировать данные.Перечислены только числовые поля.
Для каждого числового поля выберите одну из следующих функций:
Sum Запрос возвращает сумму всех значений поля.
Avg Запрос возвращает среднее значение поля.
Мин. Запрос возвращает наименьшее значение поля.
Макс. Запрос возвращает наибольшее значение поля.
Если вы хотите, чтобы результаты запроса включали счетчик записей в источнике данных, установите соответствующий флажок Счетчик записей в имени источника данных .
Нажмите ОК , чтобы закрыть диалоговое окно «Параметры сводки » .
Если вы не добавляли поле даты / времени в запрос, перейдите к шагу 9. Если вы добавили поле даты и времени в запрос, мастер запросов спросит вас, как вы хотите сгруппировать значения даты. Например, предположим, что вы добавили числовое поле («Цена») и поле даты / времени («Transaction_Time») в свой запрос, а затем указали в диалоговом окне Параметры сводки , что вы хотите увидеть среднее значение числовое поле «Цена». Поскольку вы включили поле даты / времени, вы можете рассчитать сводные значения для каждого уникального значения даты / времени, для каждого дня, для каждого месяца, для каждого квартала или для каждого года.
Выберите период времени, который вы хотите использовать для группировки значений даты / времени, а затем нажмите Далее .
Примечание. В представлении «Дизайн» можно использовать выражение для группировки по любому желаемому периоду времени, но мастер предлагает только эти варианты.
На последней странице мастера дайте запросу заголовок, укажите, хотите ли вы открыть или изменить запрос, а затем нажмите Готово .
Если вы решите открыть запрос, он отобразит выбранные данные в режиме таблицы. Если вы решите изменить запрос, он откроется в режиме конструктора.
Верх страницы
Создание запроса в представлении «Дизайн»
Вы можете использовать представление «Дизайн», чтобы вручную создать запрос на выборку.Когда вы используете представление «Дизайн», у вас больше контроля над деталями дизайна запроса, но легче делать ошибки в дизайне, и это может занять больше времени, чем использование мастера.
Создать запрос
Шаг 1. Добавьте источники данных
При использовании представления «Дизайн» для добавления источников данных вы добавляете источники данных и поля отдельными шагами. Однако вы всегда можете добавить больше источников данных позже, если захотите.
На вкладке Создать в группе Другой щелкните Конструктор запросов .
Дважды щелкните каждый источник данных, который вы хотите использовать, или выберите каждый источник данных, а затем щелкните Добавить .
Автоматическое соединение
Когда вы добавляете источники данных, если между ними уже определены отношения, эти отношения автоматически добавляются в запрос как объединения. Объединения определяют, как следует объединять данные из связанных источников. Access также автоматически создает соединение между двумя таблицами, если у них есть поля с совместимыми типами данных, а одно поле является первичным ключом.
Возможно, вы захотите настроить объединения, создаваемые Access. Access определяет, какой тип соединения нужно создать, на основе отношения, которое представляет соединение. Если Access создает соединение, но нет определенной связи, Access создает внутреннее соединение.
Если Access автоматически создает правильные объединения при добавлении источников данных, можно перейти к шагу 3: добавление полей вывода.
Использовать один и тот же источник данных несколько раз
В некоторых случаях вы хотите объединить две копии одной и той же таблицы или запроса, что называется самосоединением, которое объединяет записи из одной и той же таблицы при наличии совпадающих значений в объединенных полях. Например, предположим, что у вас есть таблица «Сотрудники», в которой в поле ReportsTo для каждой записи сотрудника отображается идентификатор его или ее руководителя вместо имени. Вместо этого вы можете использовать самообъединение, чтобы отображать имя менеджера в записи каждого сотрудника.
При добавлении источника данных во второй раз Access добавляет _1 к имени второго экземпляра. Например, если вы дважды добавили таблицу «Сотрудники», второй экземпляр будет называться «Сотрудники_1».
Шаг 2. Объедините связанные источники данных
Если источники данных, которые вы добавляете в запрос, уже имеют отношения, Access автоматически создает внутреннее соединение для каждой связи.Если ссылочная целостность обязательна, Access также отображает цифру «1» над линией соединения, чтобы показать, какая таблица находится на стороне «один» в отношении «один ко многим», и символ бесконечности ( ∞ ), чтобы показать, какая таблица является на стороне «многих».
Если вы добавляете запросы в свой запрос и не создавали отношения между этими запросами, Access не создает автоматически объединения между этими запросами или между запросами и таблицами, которые не связаны. Если Access не создает объединения при добавлении источников данных, обычно вам следует добавлять их самостоятельно.Источники данных, которые не присоединены к какому-либо другому источнику данных, могут вызвать проблемы с результатами запроса.
Вы также можете изменить тип соединения с внутреннего на внешнее, чтобы ваш запрос включал больше записей.
Добавить соединение
Чтобы добавить соединение, перетащите поле из одного источника данных в соответствующее поле другого источника данных.
Access отображает линию между двумя полями, чтобы показать, что соединение было создано.
Изменить соединение
Дважды щелкните объединение, которое нужно изменить.
Откроется диалоговое окно «Свойства соединения » .
В диалоговом окне «Свойства соединения » просмотрите три параметра.
Выберите вариант, который хотите использовать, а затем нажмите ОК .
После того, как объединения готовы, вы добавляете поля вывода — поля, которые содержат данные, которые вы хотите видеть в результатах запроса.
Шаг 3. Добавьте поля вывода
Вы можете легко добавить поле из любого источника данных, добавленного на шаге 1.
Чтобы добавить поле, перетащите поле из источника данных в верхней панели окна дизайна запроса вниз в строку Поле сетки дизайна в нижней панели окна дизайна запроса.
Когда вы добавляете поле таким образом, Access автоматически заполняет строку Таблица сетки проекта, чтобы отразить источник данных поля.
Совет: Если вы хотите быстро добавить все поля в строку поля в сетке конструктора запроса, дважды щелкните имя таблицы или запроса на верхней панели, чтобы выделить все поля в этом источнике, а затем перетащите их все вниз, чтобы дизайнерская сетка одновременно.
Использовать выражение в качестве поля вывода
Если вы хотите выполнить вычисления или использовать функцию для создания вывода запроса, вы можете использовать выражение в качестве поля вывода. Выражение может использовать данные из любого источника данных запроса, а также функции, такие как Format или InStr, а также может содержать константы и арифметические операторы.
В пустом столбце сетки конструктора запроса щелкните правой кнопкой мыши строку Поле , а затем выберите Масштаб в контекстном меню.
В поле Zoom введите или вставьте выражение. Перед выражением укажите имя, которое вы хотите использовать для вывода выражения, после чего поставьте двоеточие. Например, если вы хотите, чтобы выражение было помечено как «Последнее обновление», вы должны начать свое выражение с Последнее обновление: .
Примечание. С помощью выражений можно делать самые разные вещи.Подробное объяснение выражений выходит за рамки данной статьи. Дополнительные сведения о создании выражения см. В статье Создание выражения.
Шаг 4: Укажите критерии
Это необязательный шаг.
Вы используете критерии для ограничения записей, возвращаемых вашим запросом, на основе того, соответствуют ли значения полей указанным вами критериям.
Задайте критерии для поля вывода
В сетке конструктора запроса в строке Критерии поля, значения которого вы хотите ограничить, введите выражение, которому должны удовлетворять значения поля, чтобы его можно было включить в результаты. Например, если вы хотите ограничить запрос, чтобы только записи, в которых значение поля Город — Лас-Вегас, введите Лас-Вегас в строке Критерии под этим полем.
Многие примеры критериев запроса для различных типов данных см. В статье Примеры критериев запроса.
Укажите любые альтернативные критерии в строке или ниже строки критериев .
Если вы укажете альтернативные критерии, значение поля может соответствовать любому из перечисленных критериев и быть включено в результат запроса.
Критерии нескольких полей
Вы можете использовать критерии с несколькими полями. Когда вы это сделаете, все критерии в данной строке Criteria или или должны быть истинными, чтобы запись была включена.
Укажите критерии, используя поле, которое вы не хотите выводить
Вы можете добавить поле в свой проект запроса и не включать данные поля в выходные данные запроса. Вы делаете это, если хотите использовать значения поля для ограничения результатов запроса, но не хотите видеть значения полей.
Добавьте поле в сетку дизайна.
Снимите флажок в строке Показать для поля.
Задайте критерии, как для поля вывода.
Шаг 5: Обобщение данных
Это необязательный шаг.
Возможно, вы захотите суммировать данные, особенно если ваши данные числовые.Например, вы можете захотеть увидеть среднюю цену или общий объем продаж.
Для суммирования данных в запросе используется строка Итого . По умолчанию строка Всего не отображается в представлении «Дизайн».
Открыв запрос в представлении «Дизайн», на вкладке «Конструктор» в группе «Показать / скрыть» щелкните Итоги .
Access отображает строку Всего в сетке конструктора запроса.
Для каждого поля, которое вы хотите суммировать, выберите функцию из списка в строке Итого .Доступные функции зависят от типа данных поля.
Чтобы узнать больше о функциональности строки итогов в запросах, см. Статью Суммирование или подсчет значений в таблице со строкой итогов.
Шаг 6.
Просмотрите результатыЧтобы просмотреть результаты запроса, на вкладке «Конструктор» нажмите Выполнить . Access отображает результаты вашего запроса в режиме таблицы.
Чтобы внести дальнейшие изменения в запрос, щелкните Домашняя страница > Вид > «Дизайн» , чтобы вернуться в режим «Дизайн».
Измените поля, выражения или критерии и повторно запустите запрос, пока он не вернет нужные данные.
Верх страницы
Научитесь писать базовые запросы SQL
По сути, язык SQL позволяет нам извлекать данные из таблиц данных и манипулировать ими. В этой статье мы поймем и получим возможность писать фундаментальные SQL-запросы. Сначала мы взглянем на основные понятия, которые нам нужно знать, чтобы писать запросы к базе данных.
Что такое T-SQL?
SQL является сокращением слов языка структурированных запросов и используется для запросов к базам данных. Transact-SQL (T-SQL) язык — это расширенная реализация SQL для Microsoft SQL Server. В этой статье мы будем использовать стандарты T-SQL в примерах.
Что такое реляционная база данных?
Проще говоря, мы можем определить реляционную базу данных как логическую структуру, в которой хранятся таблицы данных, которые могут относятся друг к другу.
Что такое таблица данных?
Таблица — это объект базы данных, который позволяет нам хранить данные по столбцам и строкам. Мы можем сказать, что таблицы данных являются основными объектами баз данных, потому что они содержат данные в реляционных базах данных.
Предположим, что у нас есть таблица, в которой содержатся подробные данные об учащихся урока истории. Он формируется в следующих столбцы.
Имя: Имя студента
SurName: Фамилия ученика
Урок: Выбранный урок
Возраст: Студенческий возраст
PassMark: Проходной балл
Мы будем использовать эту таблицу в наших демонстрациях в этой статье.Имя этой таблицы данных — Студент.
Наш первый запрос: инструкция SELECT
Оператор SELECT можно описать как начальную или нулевую точку SQL-запросов. В SELECT Оператор используется для извлечения данных из таблиц данных. В SELECT синтаксис оператора, сначала мы указываем имена столбцов и разделяем их запятой, если мы используем один столбец, который мы не используйте запятую в операторах SELECT.На втором этапе мы записываем предложение FROM и как наконец, мы указываем имя таблицы. Когда мы рассматриваем приведенный ниже пример, он извлекает данные из Имя и Surname , синтаксис оператора SELECT будет следующим:
ВЫБРАТЬ Имя , SurName ОТ Студента |
Если мы хотим получить данные только из столбца Name , синтаксис оператора SELECT будет как ниже:
Совет: Мы можем легко попробовать все эти примеры в этой статье сами в скрипте SQL поверх этого связь.После перехода к ссылку, нам нужно очистить панель запросов и выполнить образцы запросов.
Знак звездочки ( * ) обозначает все столбцы таблицы. Если мы рассмотрим приведенный ниже пример, Оператор SELECT возвращает все столбцы таблицы Student .
- Наконечник:
- Наша основная цель — как можно скорее получить результаты SQL-запросов с наименьшими ресурсами. расход и минимальное время исполнения.По возможности, мы должны избегать использования знака звездочки (*) в SELECT операторов. Этот тип использования приводит к увеличению затрат на ввод-вывод, ЦП и сеть. Как результат, если нам не нужны все столбцы таблицы в наших запросах, мы можем отказаться от использования знака звездочки и использовать только необходимые столбцы
Фильтрация данных: пункт WHERE
WHERE Предложение используется для фильтрации данных в соответствии с заданными условиями.После WHERE , мы должны определить условие фильтрации. В следующем примере извлекаются студенты чей возраст старше 20 лет.
ВЫБРАТЬ * ОТ Студент ГДЕ Возраст> = 20 |
Оператор LIKE — это логический оператор, который позволяет применять специальный шаблон фильтрации к WHERE условие в SQL-запросах. Знак процента (% ) является основным подстановочным знаком для использования в качестве соединение с оператором LIKE . С помощью следующего запроса мы получим студентов имена которых начинаются с символа J .
ВЫБРАТЬ * ОТ Студента ГДЕ ИМЯ КАК ‘J%’ |
IN Оператор позволяет нам применять несколько фильтров значений к предложению WHERE .В Следующий запрос извлекает данные учащихся, которые брали уроки римской истории и европейской истории.
ВЫБРАТЬ * ОТ Студента ГДЕ Урок («Римская история», «Европейская история») |
Оператор BETWEEN фильтрует данные, которые попадают в определенное начальное и конечное значение. В следующий запрос возвращает данные для студентов, чьи оценки равны и больше 40 и меньше и равны 60.
ВЫБРАТЬ * ОТ Студента ГДЕ PassMark МЕЖДУ 40 И 60 |
Сортировка данных: ORDER BY Statement
Оператор ORDER BY помогает нам отсортировать данные в соответствии с указанным столбцом. Набор результатов данные можно сортировать по возрастанию или убыванию. ASC ключевое слово сортирует данные по возрастанию order, а ключевое слово DESC сортирует данные в порядке убывания.Следующий запрос сортирует данные учащихся в порядке убывания в соответствии с выражениями столбца PassMark.
ВЫБРАТЬ * ОТ Студента ЗАКАЗАТЬ ПО PassMark DESC |
По умолчанию оператор ORDER BY сортирует данные в порядке возрастания. Следующий пример демонстрирует использование по умолчанию оператора ORDER BY .
ВЫБРАТЬ * ОТ Студента ЗАКАЗАТЬ ПО PassMark |
Устранение повторяющихся данных: пункт DISTINCT
Предложение DISTINCT используется для удаления повторяющихся данных из указанных столбцов, чтобы результат set заполняется только отдельными (разными) значениями. В следующем примере мы получим Урок данные столбца, однако при этом мы будем извлекать только отдельные значения с помощью пункт DISTINCT
ВЫБРАТЬ * ОТ Студент ГДЕ Возраст> = 20 |
Как мы видим, предложение DISTINCT удалило несколько значений, и эти значения добавлены к результат устанавливается только один раз.
Викторина
В этом разделе мы можем проверить наши знания.
Вопрос — 1:
Напишите запрос, в котором указаны имя и фамилия учащихся, возраст которых от 22 до 24 лет.
Ответ:
ВЫБЕРИТЕ Имя, SurName ОТ Студента ГДЕ Возраст МЕЖДУ 22 И 24 |
Вопрос — 2:
Напишите запрос, который показывает имена и возраст учащихся в порядке убывания, которые изучают римский язык и древнюю историю.
Ответ:
ВЫБЕРИТЕ Имя, SurName, Возраст ОТ Студента ГДЕ урок («Римская история», «Древняя история») ЗАКАЗАТЬ ПО возрасту DESC |
Заключение
В этой статье мы узнали, как мы можем писать базовые SQL-запросы, а также продемонстрировали использование запросов на простых примерах.
Эсат Эркеч — специалист по SQL Server, который начал свою карьеру более 8 лет назад в качестве разработчика программного обеспечения. Он является сертифицированным экспертом по решениям Microsoft SQL Server.Большая часть его карьеры была сосредоточена на администрировании и разработке баз данных SQL Server. В настоящее время он интересуется администрированием баз данных и бизнес-аналитикой. Вы можете найти его в LinkedIn.
Посмотреть все сообщения от Esat Erkec
Последние сообщения от Esat Erkec (посмотреть все)Access 2016: разработка простого запроса
Урок 8: Разработка простого запроса
/ ru / access2016 / записи-сортировки и фильтрации / контент /
Введение
Реальная сила реляционной базы данных заключается в ее способности быстро извлекать , а анализировать ваши данные путем выполнения запроса. Запросы позволяют извлекать информацию из одной или нескольких таблиц на основе набора определенных вами условий поиска. В этом уроке вы узнаете, как создать простой запрос с одной таблицей .
В этом руководстве мы будем использовать образец базы данных. Если вы хотите продолжить, вам необходимо загрузить нашу образец базы данных Access 2016. Чтобы открыть пример, вам потребуется установить Access 2016 на вашем компьютере.
Посмотрите видео ниже, чтобы узнать больше о разработке простого запроса в Access.
Что такое запросы?
Запросы— это способ поиска и компиляции данных из одной или нескольких таблиц. Выполнить запрос — это как задать подробный вопрос вашей базы данных. Когда вы создаете запрос в Access, вы определяете конкретные условия поиска , чтобы найти именно те данные, которые вам нужны.
Как используются запросы?
Запросы намного мощнее, чем простой поиск или фильтры, которые вы можете использовать для поиска данных в таблице. Это связано с тем, что запросы могут извлекать информацию из нескольких таблиц . Например, если вы можете использовать поиск в таблице клиентов, чтобы найти имя одного клиента в вашей компании, или фильтр в таблице заказов для просмотра только заказов, размещенных за последнюю неделю, ни один из них не позволит вам просмотреть оба клиенты и заказы сразу. Однако вы можете легко выполнить запрос , чтобы найти имя и номер телефона каждого клиента, который совершил покупку в течение последней недели.Хорошо продуманный запрос может предоставить информацию, которую вы, возможно, не сможете узнать, просто изучив данные в ваших таблицах.
Когда вы запускаете запрос, результаты представляются вам в виде таблицы, но когда вы создаете ее, вы используете другое представление. Это называется представлением «Дизайн запроса» , и оно позволяет увидеть, как составлен ваш запрос.
Нажмите кнопки в интерактивном меню ниже, чтобы узнать, как перемещаться в представлении «Дизайн запроса » .
Однотабличные запросы
Давайте познакомимся с процессом построения запроса, построив самый простой запрос из возможных : запрос с одной таблицей.
Мы запустим запрос к таблице Customers нашей базы данных пекарни. Допустим, в нашей пекарне проводится особое мероприятие, и мы хотим пригласить наших клиентов, которые живут поблизости, потому что они, скорее всего, придут. Это означает, что нам нужно увидеть список всех клиентов, которые живут рядом, а только этих клиентов.
Мы хотим найти наших клиентов, которые проживают в городе Raleigh , поэтому мы будем искать «Raleigh» в поле City. Некоторые клиенты, живущие в пригороде, живут довольно близко, и мы бы хотели их пригласить.Мы добавим их почтовый индекс 27513 в качестве еще одного критерия.
Если вам кажется, что это немного похоже на применение фильтра, вы правы. Запрос с одной таблицей — это на самом деле просто расширенный фильтр , применяемый к таблице.
Чтобы создать простой запрос с одной таблицей:
- Перейдите на вкладку Создать на ленте и найдите группу Запросы .
- Щелкните команду Query Design .
- Доступ переключится на представление Конструктор запросов .В появившемся диалоговом окне Показать таблицу выберите таблицу, для которой нужно выполнить запрос. Мы выполняем запрос к нашим клиентам, поэтому выберем таблицу Customers .
- Щелкните Добавить , затем щелкните Закрыть .
- Выбранная таблица появится в виде небольшого окна на панели Object Relationship . В окне таблицы дважды щелкните имена полей , которые вы хотите включить в свой запрос. Они будут добавлены в сетку дизайна в нижней части экрана.В нашем примере мы хотим отправить приглашения клиентам, которые проживают в определенном районе, поэтому мы включим Первое Имя , Фамилия , Уличный адрес , Город и Почтовый индекс. поля.
- Задайте критерии поиска , щелкнув ячейку в строке Критерии: каждого поля, которое нужно отфильтровать. При вводе критериев в несколько полей в строке «Критерии:» в запрос будут включены только результаты, соответствующие всем критериям.Если вы хотите установить несколько критериев, но не хотите, чтобы записи, отображаемые в ваших результатах, соответствовали всем из них, введите первый критерий в строке «Критерии:» и дополнительные критерии в строке или: и строках под ним. Поскольку мы хотим найти клиентов, которые проживают в Роли или с почтовым индексом 27513, мы введем «Роли» в поле Город и «27513» в строку или: почтового индекса . поле. Кавычки будут искать в этих полях точное соответствие .
- После того, как вы установили критерии, запустите запрос, щелкнув команду Выполнить на вкладке Design .
- Результаты запроса будут отображаться в представлении Datasheet запроса , которое выглядит как таблица. Если вы хотите, сохраните ваш запрос, щелкнув команду Сохранить на панели быстрого доступа. Когда будет предложено назвать его, введите желаемое имя и нажмите OK .
Теперь вы знаете, как создать простейший тип запроса, используя всего одну таблицу .На следующем уроке вы узнаете, как создать запрос, который использует нескольких таблиц .
Вызов!
- Откройте нашу базу данных практики.
- Создайте новый запрос.
- Выберите таблицу Клиенты , которую нужно включить в запрос.
- Добавьте следующие поля из таблицы Клиенты к вашему запросу:
Имя
Фамилия
Город
Почтовый индекс - Установите следующие критерии :
In поле Город , введите «Дарем» , чтобы получить только записи с Даремом в поле Город.
В поле Почтовый индекс введите «27514» в строке или: , чтобы получить записи, которые либо в Дареме, либо с почтовым индексом 27514. - Запустите запрос. Если вы ввели запрос правильно, в результаты будут включены клиенты, которые живут в Дареме ИЛИ с почтовым индексом 27514.
- Сохраните запрос с именем Клиенты, проживающие в Дареме .
/ ru / access2016 / designing-a-multtable-query / content /
Пример операторов SQL для извлечения данных из таблицы
Обзор
Structured Query Language (SQL) — это специализированный язык для обновления, удаления и запроса информации из базы данных.SQL — это стандарт ANSI и ISO, а также де-факто стандартный язык запросов к базам данных. Многие известные продукты для баз данных поддерживают SQL, в том числе продукты Oracle и Microsoft SQL Server. Он широко используется как в промышленности, так и в академических кругах, часто для огромных сложных баз данных.
В системе распределенной базы данных программа, которую часто называют «серверной частью» базы данных, постоянно выполняется на сервере, интерпретируя файлы данных на сервере как стандартную реляционную базу данных. Программы на клиентских компьютерах позволяют пользователям манипулировать этими данными, используя таблицы, столбцы, строки и поля.Для этого клиентские программы отправляют на сервер операторы SQL. Затем сервер обрабатывает эти операторы и возвращает наборы результатов клиентской программе.
Операторы SELECT
Оператор SELECT SQL извлекает записи из таблицы базы данных в соответствии с предложениями (например,
FROM
и WHERE
), которые определяют критерии. Синтаксис:
ВЫБРАТЬ столбец1, столбец2 ИЗ таблицы1, таблицы2 ГДЕ столбец2 = 'значение';
В приведенном выше операторе SQL:
- Предложение
SELECT
определяет один или несколько столбцов для извлечения; чтобы указать несколько столбцов, используйте запятую и пробел между именами столбцов. Чтобы получить все столбцы, используйте подстановочный знак*
(звездочка). - Предложение
FROM
определяет одну или несколько таблиц для запроса. При указании нескольких таблиц используйте запятую и пробел между именами таблиц. - Предложение
WHERE
выбирает только те строки, в которых указанный столбец содержит указанное значение. Значение заключено в одинарные кавычки (например,WHERE last_name = 'Vader'
). - Точка с запятой (
;
) - это признак конца инструкции.Технически, если вы отправляете в серверную часть только один оператор, терминатор оператора вам не нужен; если вы отправляете более одного, вам это нужно. Лучше всего включить его.
Примечание:
SQL не чувствителен к регистру (например, SELECT
совпадает с select
). Для удобства чтения некоторые программисты используют прописные буквы для команд и предложений и строчные для всего остального.
Примеры
Ниже приведены примеры операторов SQL SELECT
:
- Чтобы выбрать все столбцы из таблицы (
клиентов
) для строк, в которых столбецLast_Name
имеет значениеSmith
, вы должны отправить этот операторSELECT
на серверную часть:ВЫБРАТЬ * ОТ клиентов ГДЕ Фамилия = 'Смит';
Внутренняя часть сервера ответит с набором результатов, подобным этому:
+ --------- + ----------- + ------------ + | Cust_No | Фамилия | Имя | + --------- + ----------- + ------------ + | 1001 | Смит | Джон | | 2039 | Смит | Дэвид | | 2098 | Смит | Мэтью | + --------- + ----------- + ------------ + 3 ряда в наборе (0.05 сек)
- Для возврата только
Cust_No
иFirst_Name
столбцов, основанных на тех же критериях, что и выше, используйте этот оператор:ВЫБЕРИТЕ Cust_No, First_Name FROM Customers WHERE Last_Name = 'Smith';
Последующий набор результатов может выглядеть так:
+ --------- + ------------ + | Cust_No | Имя | + --------- + ------------ + | 1001 | Джон | | 2039 | Дэвид | | 2098 | Мэтью | + --------- + ------------ + 3 ряда в наборе (0. 05 сек)
Чтобы предложение WHERE
находило неточные совпадения, добавьте оператор сопоставления с образцом LIKE
. Оператор LIKE
использует подстановочный знак %
(символ процента) для сопоставления нуля или более символов, а символ подчеркивания ( _
) подстановочный знак, соответствующий ровно одному символу. Например:
- Для выбора столбцов
First_Name
иNickname
из таблицыFriends
для строк, в которыхПсевдоним
столбец содержит строку «мозг», используйте эту инструкцию:ВЫБЕРИТЕ Имя, Псевдоним ОТ друзей, ГДЕ Псевдоним LIKE '% brain%';
Последующий набор результатов может выглядеть так:
+ ------------ + ------------ + | Имя | Ник | + ------------ + ------------ + | Бен | Brainiac | | Глен | Peabrain | | Стивен | Nobrainer | + ------------ + ------------ + 3 ряда в наборе (0. 03 сек)
- Чтобы запросить ту же таблицу и получить все столбцы для строк, в которых значение столбца
First_Name
начинается с любой буквы и заканчивается на «en», используйте этот оператор:SELECT * FROM Friends WHERE First_Name LIKE '_en';
Результат может выглядеть так:
+ ------------ + ------------ + ----------- + | Имя | Фамилия | Ник | + ------------ + ------------ + ----------- + | Бен | Смит | Brainiac | | Джен | Питерс | Горошек | + ------------ + ------------ + ----------- + 2 ряда в наборе (0.03 сек)
- Если вместо этого вы использовали подстановочный знак
%
(например,'% en'
) в приведенном выше примере набор результатов может выглядеть так:+ ------------ + ------------ + ----------- + | Имя | Фамилия | Ник | + ------------ + ------------ + ----------- + | Бен | Смит | Brainiac | | Глен | Джонс | Peabrain | | Джен | Питерс | Горошек | | Стивен | Гриффин | Nobrainer | + ------------ + ------------ + ----------- + 4 ряда в наборе (0. 05 сек)
Дополнительные сведения о SQL
Чтобы узнать больше о программировании на языке SQL, студенты, преподаватели и сотрудники Университета Индианы могут загрузить материалы для самостоятельного изучения из курса ИТ-обучения.
Для широкой публики доступны различные интерактивные учебные пособия, такие как w3schools.com SQL Руководство.
SQL Server Простые запросы SELECT
В этой серии уроков вы узнаете, как запрашивать Microsoft SQL Server с помощью оператора SQL SELECT.Прочитав этот урок, вы сможете:
- Определить все таблицы в базе данных SQL Server SSMS (SQL Server Management Studio).
- Узнайте, как составлять список столбцов таблицы.
- Для просмотра столбцов, создания текстовых и математических результатов и установки различных значений используйте оператор SQL SELECT.
- Изучите некоторые методы отладки ваших команд и исправления ошибок.
Важно! Пожалуйста, следуйте примерам из вашей базы данных и выполняйте их. Если вы еще этого не сделали, подпишитесь на мое Руководство по началу работы с SQL Server. Вы можете получить руководство по загрузке бесплатного программного обеспечения и образцов базы данных.
Общие сведения о вашей базе данныхПростой оператор выбора состоит из двух частей. Первая часть описывает, какие столбцы мы хотим просмотреть, а вторая часть - какую таблицу мы просматриваем. Оператор выбора выглядит так:
ВЫБРАТЬ ФАМИЛИ ОТ ЛИЦА
В этом примере LastName - это столбец, а Person - таблица.Столбцы идут после ключевого слова SELECT; тогда как перед таблицей стоит FROM.
Именование таблиц
Вам может быть интересно, почему таблица Person называется Person. Лицо в приведенном выше заявлении. Это связано со способом организации объектов на сервере. Базу данных можно рассматривать как серию вложенных контейнеров. Контейнеры:
- Сервер / экземпляр - экземпляр SQL Server, запущенный на компьютере.
- Базы данных - одна или несколько баз данных, созданных на экземпляре.
- Схемы - способ логически группировать таблицы и другие объекты базы данных.
Полное имя таблицы - [Сервер / Экземпляр]. [Имя базы данных]. [Схема]. [Имя таблицы]. Поэтому, если мы действительно хотим быть явными, мы могли бы использовать что-то вроде
ВЫБРАТЬ Фамилию ОТ [KAWLAPTOP \ SQLEXPRESS2014]. [AdventureWorks2012]. [Человек]. [Человек]
, чтобы сделать запрос. К счастью, мы обычно пишем запросы в контексте одной базы данных, поэтому нам нужно только указать схему и имя таблицы так:
ВЫБЕРИТЕ Фамилию ОТ Человека.Человек
А как насчет скобок []? Они используются, если в имени вашей таблицы есть пробел. Итак,
ВЫБРАТЬ Фамилию FROM Person.Person Таблица
будет ошибка
ВЫБРАТЬ [Фамилия] FROM Person. [Таблица людей]
В порядке. Мой совет? Если у вас есть возможность назвать свои собственные таблицы, не используйте пробелы, скобки уродливы! Если нужно, делайте то же, что и Oracle, и используйте символы подчеркивания. Person_Table намного легче читать, чем [Person Table], лично я предпочитаю PersonTable.
Использование обозревателя объектов
Чтобы писать запросы, вам нужно знать, какие таблицы и столбцы доступны в ваших базах данных. При использовании SSMS (SQL Server Management Studio) вы можете просто развернуть папку таблиц базы данных, чтобы перечислить все таблицы, найденные в вашей базе данных. Как только вы найдете таблицу, о которой хотите узнать больше, просто щелкните имя таблицы, чтобы развернуть ее, а затем папку столбцов, чтобы отобразить все столбцы.
Выполнение запросов в SSMS
Прежде чем мы зайдем слишком далеко, позвольте мне показать вам, как выполнить запрос в SSMS.На самом деле это действительно просто. После того, как вы запустили SQL Server Management Studio, вам нужно будет выбрать свою базу данных. Затем нажмите кнопку New Query , расположенную на верхней панели инструментов. Это отображает окно запроса справа. Вы можете вводить что угодно в этом окне, так как это, по сути, текстовый редактор. Вырежьте и вставьте или введите оператор SQL, затем нажмите Выполнить , чтобы запустить оператор. Результаты отображаются в нижней части окна, а любые сообщения, например об ошибках, отображаются на вкладке сообщений.
Выбрать несколько столбцов
Чтобы выбрать более одного столбца, просто разделите их запятой. Например,
ВЫБЕРИТЕ имя, фамилию ОТ ЛИЦА
в результате возвращает и имя, и фамилию. Если вам интересно, вы можете смешивать случай при написании запросов. Это
ВЫБЕРИТЕ имя, фамилию ОТ ЛИЦА
Работает так же хорошо, как
выберите FirstName, LastName от Персона
Совет! Обычно все ключевые слова пишутся с заглавной буквы.Некоторые администраторы баз данных считают, что команды, написанные таким образом, легче читать. Лично я этого не делаю, но для этого блога Я ПОПРОБУЮ. 🙂
Переименовать столбцы SQL
Вы можете переименовать столбцы, полученные в результате ваших операторов выбора. Для этого используйте оператор AS, например:
ВЫБЕРИТЕ LastName как SirName ОТ ЛИЦА
Результат отображается как «SirName», а не «LastName». Это приятная функция с точки зрения тщеславия, но она также пригодится, когда мы хотим вернуть результат вычисления и нам нужно дать ему имя.Например, предположим, что вы хотите вернуть LastName в верхнем регистре. Вы могли бы написать
ВЫБРАТЬ ВЕРХНИЙ (Фамилия) КАК SirName ОТ Заказчиков
UPPER известен как функция. SQL Server имеет множество функций, которые можно использовать для выполнения многих типов вычислений. Мы рассмотрим все их позже, а пока знайте, что вы можете связать несколько функций вместе, чтобы создать сложное выражение для вывода данных в том виде, в каком вам нужно это сделать.
Сложные выражения столбцов
Наша таблица сотрудников содержит отдельные поля для имени и фамилии.Предположим, отделу кадров нужно видеть полное имя в верхнем регистре. Как бы вы это сделали? Простой! Вы могли написать
ВЫБЕРИТЕ ВЕРХНИЙ (Имя) + '' + ВЕРХНИЙ (Фамилия) КАК полное имя ОТ ЛИЦА
Это утверждение может показаться сложным, но как только мы разберем его, вы увидите, что оно просто составлено из набора простых элементов.
- Как вы только что узнали, UPPER используется для возврата верхнего регистра столбца.
- + сообщает SQL объединить два значения вместе.
Все, что заключено в одинарные кавычки (‘), буквально отображается как есть. В нашем случае "" означает вывод одного пробела. Если вы прочитаете наше выражение на английском языке, оно будет выглядеть так: «Возьмите верхний регистр имени и добавьте его с пробелом, а затем добавьте к нему верхний регистр имени».
Делай математику с SQL!
Вы также можете заставить SQL выполнять за вас математические трюки. Он может выполнять довольно сложные арифметические операции, если вы ему позволите. Сегодня я покажу вам, как умножить два числа, но вы можете так же легко складывать, вычитать или делить.Позже мы сделаем это более активным, чтобы вы смогли пережить дни, проведенные в Алгебре II. 🙂 Вот несколько распространенных математических операторов, которые можно использовать в SQL:
- * Умножить
- / Разделить
- + добавить
- - вычесть
Воспользуемся таблицей OrderDetails и рассчитаем общую цену, умножив цену за единицу на количество.
ВЫБЕРИТЕ UnitPrice, OrderQty, UnitPrice * OrderQty КАК Итого ОТ Purchasing.PurchaseOrderDetail
Бит «UnitPrice * OrderQty» указывает умножение UnitPrice на количество.
Будьте отличны и отлаживайте
До сих пор мы использовали оператор select для извлечения всех записей в таблице независимо от того, повторяются некоторые значения или нет. При желании вы можете использовать ключевое слово DISTINCT для удаления дубликатов из результатов. Например, если вы хотите просто вернуть уникальный список должностей сотрудников, вы должны использовать этот оператор SQL:
ВЫБРАТЬ DISTINCT JobTitle ОТ HumanResources. Сотрудник
Оператор DISTINCT также работает более чем с одним столбцом.При желании вы можете получить четкий список должностей и полов, набрав
ВЫБРАТЬ ОТЛИЧИТЕЛЬНОЕ НАЗВАНИЕ РАБОТЫ, ПОЛ ОТ HumanResources. Сотрудник
! Общая информация : ключевое слово ALL является эквивалентом DISTINCT и является поведением по умолчанию. Вот почему мы не записываем это в свои заявления.
Поиск и исправление ошибок
Рано или поздно вы ошибетесь при вводе оператора select в командной строке, и компьютер закричит вам: «Синтаксическая ошибка!» или «Неверное имя столбца» Что делать? Просто помните, что оператор select состоит из двух основных частей: SELECT и FROM.В общем, база данных сначала проверяет, присутствуют ли эти ключевые слова, и если их нет, запускается синтаксическая ошибка.
Это просто причудливая фраза для выражения «вы неправильно написали ключевое слово или оно вышло из строя» (например, у вас есть Distinct перед Select, как в DISTINCT SELECT). После проверки ключевых слов выполняется проверка оператора, чтобы убедиться, что вы указали таблицу. Как только таблица известна, она может проверять столбцы. Таким образом, сначала нужно проверить ключевые слова, затем таблицы и, наконец, правильные столбцы.Внимательно прочтите каждый раз, когда отображается ошибка. Скорее всего, вы что-то неправильно написали. Компьютер сообщит вам, что вы написали с ошибкой в кавычках; Ваша задача - затем найти и исправить орфографические ошибки.
Упражнения SQL Select
Важно практиковаться! Используйте образец базы данных, чтобы ответить на эти вопросы.
- Как найти все имена таблиц в базе данных AdventureWorks2012?
- Какие есть два способа получить имена всех столбцов в Person.Таблица лиц?
- Выберите JobTitle и BirthDate для всех сотрудников.
- Какой была бы UnitPrice каждой позиции PurchaseOrderDetail, если бы распродажа была вдвое меньше?
Ответы здесь
Поздравляем! Вы только что узнали, как использовать команду select для запроса базы данных. Следуют и другие руководства, и в них мы углубимся в некоторые области, которые мы сегодня не заметили, такие как математические операторы и функции. Помните! Я хочу напомнить вам, что если у вас есть другие вопросы, на которые вы хотите ответить, оставьте комментарий или напишите мне в Твиттере. Я здесь, чтобы помочь тебе.
SQL Server SELECT - запрос данных из одной таблицы
Резюме : это руководство знакомит вас с основами оператора SQL Server SELECT
, уделяя особое внимание тому, как выполнять запросы к одной таблице.
Basic SQL Server
SELECT
инструкцияТаблицы базы данных - это объекты, в которых хранятся все данные в базе данных. В таблице данные логически организованы в формате строк и столбцов, который похож на электронную таблицу.
В таблице каждая строка представляет собой уникальную запись, а каждый столбец представляет поле в записи. Например, таблица клиентов
содержит данные клиента, такие как идентификационный номер клиента, имя, фамилию, телефон, электронную почту и адрес, как показано ниже:
SQL Server использует схемы для логической группировки таблиц и других объектов базы данных. В нашей базе данных примера у нас есть две схемы: продаж
и производства
. Схема sales
группирует все таблицы, связанные с продажами, а схема production
группирует все таблицы, связанные с производством.
Для запроса данных из таблицы используйте оператор SELECT
. Ниже показана самая простая форма оператора SELECT
:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT select_list ИЗ schema_name.table_name;
В этом синтаксисе:
- Сначала укажите список столбцов, разделенных запятыми, из которых вы хотите запрашивать данные в предложении
SELECT
. - Во-вторых, укажите исходную таблицу и ее имя схемы в предложении
FROM
.
При обработке оператора SELECT
SQL Server сначала обрабатывает предложение FROM
, а затем предложение SELECT
, даже если предложение SELECT
появляется первым в запросе.
SQL Server
Примеры операторов SELECT
Давайте воспользуемся таблицей клиентов
в образце базы данных для демонстрации.
A) SQL Server
SELECT
- получить некоторые столбцы в примере таблицыСледующий запрос находит имя и фамилию всех клиентов:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT имя, фамилия ИЗ sales.customers;
Вот результат:
Результат запроса называется набором результатов.
Следующий оператор возвращает имена, фамилии и адреса электронной почты всех клиентов:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT имя, фамилия, электронное письмо ИЗ продажи.клиенты;
B) SQL Server
SELECT
- получить все столбцы из примера таблицы Чтобы получить данные из всех столбцов таблицы, вы можете указать все столбцы в списке выбора. Вы также можете использовать SELECT *
как сокращение, чтобы сэкономить время при вводе:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT * ИЗ sales.customers;
SELECT *
полезен для изучения столбцов и данных таблицы, с которой вы не знакомы.Это также полезно для специальных запросов.
Однако вы не должны использовать SELECT *
для реального производственного кода по следующим основным причинам:
- Во-первых,
SELECT *
часто извлекает больше данных, чем требуется вашему приложению для работы. Это приводит к передаче ненужных данных из SQL Server в клиентское приложение, что требует больше времени для передачи данных по сети и замедляет работу приложения. - Во-вторых, если в таблицу добавляется один или несколько новых столбцов,
SELECT *
просто извлекает все столбцы, которые включают недавно добавленные столбцы, которые не были предназначены для использования в приложении. Это могло привести к сбою приложения.
C) SQL Server
SELECT
- сортировка набора результатов Для фильтрации строк на основе одного или нескольких условий вы используете предложение WHERE
, как показано в следующем примере:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT * ИЗ sales.customers КУДА состояние = 'CA';
В этом примере запрос возвращает клиентов, которые находятся в Калифорнии.
Когда доступно предложение WHERE
, SQL Server обрабатывает предложения запроса в следующей последовательности: FROM
, WHERE
и SELECT
.
Чтобы отсортировать набор результатов по одному или нескольким столбцам, используйте предложение ORDER BY
, как показано в следующем примере:
Язык кода: SQL (язык структурированных запросов) (sql)
SELECT * ИЗ sales. customers КУДА состояние = 'CA' СОРТИРОВАТЬ ПО имя;
В этом примере предложение ORDER BY
сортирует клиентов по их именам в порядке возрастания.
В этом случае SQL Server обрабатывает предложения запроса в следующей последовательности: FROM
, WHERE
, SELECT
и ORDER BY
.
D) SQL Server
SELECT
- пример группировки строк в группы Чтобы сгруппировать строки в группы, вы используете предложение GROUP BY
. Например, следующая инструкция возвращает все города клиентов, расположенных в Калифорнии, и количество клиентов в каждом городе.
Язык кода: SQL (язык структурированных запросов) (sql)
ВЫБРАТЬ Город, СЧИТАТЬ (*) ИЗ продажи.клиенты КУДА состояние = 'CA' ГРУППА ПО город СОРТИРОВАТЬ ПО город;
В этом случае SQL Server обрабатывает предложения в следующей последовательности: FROM
, WHERE
, GROUP BY
, SELECT
и ЗАКАЗАТЬ
.