- •Лабораторная работа №6 по курсу “Компьютерные информационные технологии” запросы в access
- •Виды и способы создания запросов
- •Создание запросов с помощью Мастера
- •Изменение запросов с помощью Конструктора
- •Запросы с условиями выборки
- •Запросы с групповыми операциями
- •Перекрестные запросы
- •Запросы на изменение базы данных
- •Параметрические запросы
- •Sql-запросы
- •Выборка данных с помощью sql-запросов. КомандаSelect
- •Sql-запросы для выборки данных из нескольких таблиц
- •Sql-запросы с вычисляемыми полями
- •Sql-запросыcгрупповыми операциями
- •Sql-запросы на изменение базы данных Запросы на обновление
- •Запросы на удаление
- •Параметрические sql-запросы
- •Создание sql-запросов. Задания для самостоятельного выполнения
- •Приложение данные для добавления в базу данных
- •Данные для добавления в таблицу Рабочие
Параметрические запросы
Пример 8.1.Создать запрос для получения списка рабочих заданной профессии, имеющих разряд не ниже заданного. В списке, получаемом в результате выполнения запроса, должны быть указаны табельные номера, фамилии и разряды рабочих. Профессия и разряд, должны вводиться пользователем при выполнении запроса.
Используя Конструктор, создать обычный запрос, содержащий поля Табельный номер,ФамилияиПрофессия(из таблицыРабочие).
Для поля Профессияв строкеУсловие отбораввести: [Укажите профессию]. Для поляРазрядв строкеУсловие отбораввести>=[Укажите разряд]. ЗдесьУкажите профессиюиУкажите разряд– подсказки, выводимые на экран при выполнении запроса. Они указываются в квадратных скобках.
Для поля Профессияснять флажокВывод на экран(так как в результате запроса должен быть получен список рабочих одной профессии, и выводить ее на экран для каждого рабочего не требуется). Описание запроса должно иметь примерно такой вид, как показано на рис.2.
Рисунок 2 – Создание перекрестного запроса
Сохранить запрос под именем Список рабочих по профессии и разряду. Выполнить запрос и убедиться в том, что он выполняется правильно.
Sql-запросы
SQL– стандартный язык управления базами данных, используемый в различных СУБД.
При построении любого QBE-запроса для него автоматически строится описание на языкеSQL, и наоборот (за исключением некоторыхSQL-запросов, которые не могут быть построены какQBE-запросы). Все запросы, рассмотренные выше, представляли собойQBE-запросы. Чтобы перейти от описания в видеQBE-запроса кSQL-запросу, необходимо открыть запрос в режиме Конструктора и выбрать командуВид – Режим SQL. Для возврата к описанию в видеQBE-запроса используется командаВид – Конструктор.
Обычно удобно сначала создать запрос в режиме QBE, а затем перейти в режимSQLи внести необходимые изменения. При изменении запроса в режимеSQLавтоматически изменяется его описание в режимеQBE(и наоборот).
При переходе в новую строку в любой команде SQLнеобходимо нажимать комбинацию клавишCTRL-ENTER (а не просто клавишуENTER). В конце команды языкаSQLвсегда ставится точка с запятой (;).
В данной работе предлагается изучить примеры SQL-запросов, приведенные в подразделах 9.1 – 9.6, и самостоятельно создатьSQL-запросы, указанные в разделе 9.7.
Выборка данных с помощью sql-запросов. КомандаSelect
Основная команда языка SQL– командаSELECT. Общий вид этой команды следующий:
SELECTполя
FROMтаблицы или запросы
WHEREусловия
ORDERBYполя для сортировки;
Здесь поля– имена полей, которые должны быть выведены на экран при выполнении запроса;таблицы или запросы– источники данных для запроса;условия– условия отбора данных;поля для сортировки– поля, по которым выполняется упорядочение данных в запросе.
Пример 9.1.Запрос для вывода списка всех рабочих. В списке должна содержаться вся информация о рабочих, кроме шифра объекта, на котором он работает (эта же задача решалась в примере 2.1).
SELECT [Табельный номер], Фамилия, [Имя и отчество], [Дата рождения], Профессия,
Разряд, [Дата приема на работу], [Допуск на высоту]
FROM Рабочие;
Из этого примера видно, что в случае, если в имени поля имеются пробелы (например, в имени Табельный номер), оно должно заключаться в квадратные скобки.
Пример 9.2.Получить список всех рабочих, имеющих разряд не ниже пятого и допуск к работе на высоте. Вывести фамилию, профессию, разряд.
SELECT Фамилия, Профессия, Разряд
FROM Рабочие
WHERE(Разряд>=5)AND([Допуск на высоту]=true);
Пример 9.3.Получить список всех каменщиков и штукатуров, имеющих разряд не ниже пятого. Вывести табельный номер, фамилию, профессию, разряд, допуск к работе на высоте. Список должен быть отсортированпо профессии и фамилии(т.е. список сортируется по профессии, а при одинаковой профессии – по фамилии).
SELECT [Табельный номер], Фамилия, Профессия, Разряд, [Допуск на высоту]
FROM Рабочие
WHERE ((Профессия="каменщик") OR (Профессия="штукатур")) AND (Разряд>=5)
ORDER BY Профессия, Фамилия;
Следует обратить внимание, что построить такой запрос в режиме QBEбыло бы достаточно сложно, так как список рабочих должен быть отсортирован по профессии и фамилии, а в запросе сначала указывается фамилия, затем - профессия. Если построить этот запрос в режимеQBEтак, как описывалось в примерах выше (ввести в отчет поля Табельный номер, Фамилия, Профессия и Допуск на высоту, для полей Фамилия и Профессия в строке Сортировка выбрать значение По возрастанию), то упорядочение в запросе будет выполнятьсянеправильно: записи будут упорядочиваться по фамилии, и только при одинаковой фамилии –по профессии. ИспользованиеSQL-запроса позволяет легко избежать этой проблемы.
Пример 9.4.Получить те же данные, что и в примере 9.4. Однако сортировка должна выполнятьсяпо профессии, разряду и фамилии. Это значит, что список рабочих сортируется по профессии; рабочие с одинаковой профессией сортируются по разряду (причем первыми указываются рабочие, имеющие более высокий разряд), а при одинаковой профессии и разряде – по фамилии.
SELECT [Табельный номер], Фамилия, Профессия, Разряд, [Допуск на высоту]
FROM Рабочие
WHERE ((Профессия="каменщик") OR (Профессия="штукатур")) AND (Разряд>=5)
ORDER BY Профессия, Разряд DESC, Фамилия;
Здесь DESCозначает, что сортировка по разряду выполняетсяпо убыванию(сначала указываются рабочие с более высоким разрядом).