- •Лабораторная работа №6 по курсу “Компьютерные информационные технологии” запросы в access
- •Виды и способы создания запросов
- •Создание запросов с помощью Мастера
- •Изменение запросов с помощью Конструктора
- •Запросы с условиями выборки
- •Запросы с групповыми операциями
- •Перекрестные запросы
- •Запросы на изменение базы данных
- •Параметрические запросы
- •Sql-запросы
- •Выборка данных с помощью sql-запросов. КомандаSelect
- •Sql-запросы для выборки данных из нескольких таблиц
- •Sql-запросы с вычисляемыми полями
- •Sql-запросыcгрупповыми операциями
- •Sql-запросы на изменение базы данных Запросы на обновление
- •Запросы на удаление
- •Параметрические sql-запросы
- •Создание sql-запросов. Задания для самостоятельного выполнения
- •Приложение данные для добавления в базу данных
- •Данные для добавления в таблицу Рабочие
Sql-запросы на изменение базы данных Запросы на обновление
Общий вид таких запросов следующий:
UPDATEтаблица
SET поле=значение
WHEREусловия
Пример 9.11.Создать запрос для выполнения следующей операции: для всех каменщиков и штукатуров, имеющих разряд не ниже пятого, установить шифр объекта П80 (аналогичная задача решалась в примере 7.1).
UPDATE Рабочие
SET [Шифр объекта] = "П100"
WHERE ((Профессия="штукатур") OR (Профессия="каменщик")) AND (Разряд>=5);
Пример 9.12.Создать запрос для выполнения следующей операции: снять всех рабочих с объектов заказчика “Автозавод”.
UPDATE Объекты INNER JOIN Рабочие ON Объекты.[Шифр объекта]=
Рабочие.[Шифр объекта]
SET Рабочие.[Шифр объекта] = Null
WHERE (Объекты.Заказчик="Автозавод");
Здесь требуется изменять значения поля Шифр объекта в таблице Рабочие, но при этом используется информация из таблицы Объекты, где указаны названия заказчиков. Поэтому в команде используется раздел INNERJOIN(связь между таблицами), и перед именами полей указываются имена таблиц. ЗначениеNull, присваиваемое полю Шифр объекта, обозначает, что это поле становится пустым. Важно понимать, что значениеNull– это не то же самое, что пустая строка (“”).
Запросы на удаление
Общий вид таких запросов следующий:
DELETE FROM таблица WHERE условие
Пример 9.13.Создать запрос для удаления данных обо всех рабочих, имеющих разряд не выше второго и не имеющих допуска к работам на высоте (аналогичная задача решалась в примере 7.1).
DELETE
FROM Рабочие
WHERE (Разряд<=2) AND ([Допуск на высоту]=False);
Параметрические sql-запросы
Как и в QBE-запросах, вместо конкретных величин в параметрическихSQL-запросах указываются тексты сообщений (подсказок), которые должны выводиться на экран при выполнении запроса. Эти подсказки заключаются в квадратные скобки.
Пример 9.14.Создать запрос для получения списка рабочих заданной профессии, имеющих разряд не ниже заданного. В списке, получаемом в результате выполнения запроса, должны быть указаны табельные номера, фамилии и разряды рабочих. Профессия и разряд, должны вводиться пользователем при выполнении запроса (эта же задача решалась в примере 8.1).
SELECT [Табельный номер], Фамилия, Разряд
FROM Рабочие
WHERE (Профессия=[Укажите профессию]) AND (Разряд>=[Укажите разряд]);
При выполнении этого запроса на экран будут выводиться подсказки Укажите профессиюиУкажите разряд.
Создание sql-запросов. Задания для самостоятельного выполнения
Для создания SQL-запроса “с нуля” (т.е. без предварительного созданияQBE-запроса) необходимо выполнить следующее.
Перейти на вкладку Запросы. Нажать кнопкуСоздать.
Выбрать команду Конструктор. НажатьOK. На экран выводится пустой бланк для созданияQBE-запроса, а также окноДобавление таблицы.
Закрыть окно Добавление таблицы.
Выбрать команду Вид – Режим SQL.
В появившемся пустом окне ввести текст SQL-запроса. Сохранить запрос.
Для выполнения запроса нажать кнопку Запуск(с восклицательным знаком), или выбрать командуВид – Режим таблицы, или закрыть запрос и выполнить его нажатием кнопкиОткрыть.
Предлагается самостоятельно создать следующие SQL-запросы (не создавая предварительноQBE-запросы):
а) список всех объектов, представляющих собой жилые дома или офисы. Для каждого объекта должны указываться все данные, имеющиеся в таблице Объекты. Список объектов должен быть упорядочен по названию заказчика, а для каждого заказчика – по шифру объекта;
б) список всех рабочих, занятых на объектах, где заказчиком является автозавод. Для каждого рабочего указывается табельный номер, фамилия, профессия, шифр объекта. Список должен быть упорядочен по фамилиям рабочих (если есть однофамильцы – то по табельному номеру);
в) то же, что в задании б), но для произвольного заказчика. Название заказчика должно вводиться пользователем при выполнении запроса;
г) список всех объектов. Для каждого объекта должны указываться все данные, имеющиеся в таблице Объекты, а также количество дней, оставшихся до окончания строительства. Для вычисления количества дней до конца строительства использовать формулу: [дата окончания]-date()(здесьdate()– стандартная функция, возвращающая текущую дату);
д) то же, что в задании г), но только для объектов, у которых до окончания строительства остается не более 30 дней;
е) список всех объектов. Для каждого объекта указывается его шифр, заказчик, вид объекта и количество занятых рабочих. Список должен быть отсортирован по шифрам объектов (по алфавиту);
ж) повышение стоимости контракта на 20% для всех объектов – офисов. Указание: в разделеSETиспользовать выражение примерно следующего вида: [Стоимость контракта] = [Стоимость контракта]*1,2;
з) удаление данных об указанном рабочем (фамилия рабочего должна вводиться пользователем).