Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 1-13 3ий сем (Задания) / КИТ_лр6_access_запросы.doc
Скачиваний:
39
Добавлен:
15.06.2014
Размер:
967.17 Кб
Скачать
  1. Параметрические запросы

Пример 8.1.Создать запрос для получения списка рабочих заданной профессии, имеющих разряд не ниже заданного. В списке, получаемом в результате выполнения запроса, должны быть указаны табельные номера, фамилии и разряды рабочих. Профессия и разряд, должны вводиться пользователем при выполнении запроса.

  1. Используя Конструктор, создать обычный запрос, содержащий поля Табельный номер,ФамилияиПрофессия(из таблицыРабочие).

  2. Для поля Профессияв строкеУсловие отбораввести: [Укажите профессию]. Для поляРазрядв строкеУсловие отбораввести>=[Укажите разряд]. ЗдесьУкажите профессиюиУкажите разряд– подсказки, выводимые на экран при выполнении запроса. Они указываются в квадратных скобках.

  3. Для поля Профессияснять флажокВывод на экран(так как в результате запроса должен быть получен список рабочих одной профессии, и выводить ее на экран для каждого рабочего не требуется). Описание запроса должно иметь примерно такой вид, как показано на рис.2.

Рисунок 2 – Создание перекрестного запроса

  1. Сохранить запрос под именем Список рабочих по профессии и разряду. Выполнить запрос и убедиться в том, что он выполняется правильно.

  1. 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.

    1. Выборка данных с помощью 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означает, что сортировка по разряду выполняетсяпо убыванию(сначала указываются рабочие с более высоким разрядом).