Лаба 2 Управление данными (Тихомирова)
.docxЛабораторная работа № 2
Создание запросов на выборку, удаление, обновление, добавление данных и формирование новых таблиц
Цель работы. Изучить способы создания запросов на выборку, удаление, обновление, добавление данных и формирование новых таблиц
Порядок выполнения
-
Создать запросы на выборку из одной таблицы
-
Создать запросы на выборку из нескольких таблиц
-
Создать запросы на обновление данных
-
Сформировать запрос на создание новой таблицы
-
Создать запросы на удаление записей
Основные используемые команды
Создание запроса: окно базы данных Запросы / Создать / Конструктор / …В окне "Добавление таблицы" выбрать имена таблиц или запросов / Добавить… / Закрыть.
Выбор типа запроса: Раскрывающийся список Тип запроса на панели инструментов или меню Запрос / …выбрать тип (выборка, обновление, добавление, удаление, создание таблицы)
Переход между режимами Конструктор, Режим SQL, Режим таблицы:
раскрывающийся список Вид на панели инструментов или меню Вид / Конструктор или Режим SQL.
Выполнение запроса: кнопка "!" (Запуск) на панели инструментов.
Запросы на выборку из одной и нескольких таблиц
Запрос 1.
Тип запроса: запрос на выборку всех полей из одной таблицы
Имя запроса: "ЗакупкиЗаМесяц".
Цель запроса: выбрать закупки за последний месяц
SQL-запрос:
SELECT Закупки.*
FROM Закупки
WHERE Закупки.ДатаРазмещения > Date()-30;
Пояснение к запросу:
ВЫБРАТЬ все поля
ИЗ таблицы Закупки
ГДЕ поле ДатаРазмещения имеет значение больше, чем текущая дата минус 30 дней
Запрос 2.
Тип запроса: запрос на выборку из одной таблицы
Имя запроса: "ТоварыОдногоТипа ".
Цель запроса: выбрать все товары заданного типа.
QBE-запрос:
SQL-запрос:
SELECT Товары.КодТовара, Товары.Марка, Товары.ОписаниеТовара,
Товары.Цена, Товары.КодТипа
FROM Товары
WHERE (((Товары.КодТипа)=1))
ORDER BY Товары.Марка;
Пояснение к запросу:
ВЫБРАТЬ поля КодТовара, Марка, .ОписаниеТовара,Цена, КодТипа
ИЗ таблицы Товары
ГДЕ поле КодТипа=1
СОРТИРОВАТЬ ПО полю Марка;
Запрос 3.
Тип запроса: запрос на выборку из двух таблиц
Имя запроса: "ЗакупкиСотрудника".
Цель запроса: Выбрать все закупки, оформленные данным сотрудником
QBE-запрос:
SQL-запрос:
SELECT DISTINCTROW Закупки.НомерЗаказа, Закупки.ОписаниеЗаказа,
Закупки.ДатаРазмещения, Сотрудники.Фамилия, Сотрудники.Имя
FROM Сотрудники RIGHT JOIN Закупки
ON Сотрудники.КодСотрудника = Закупки.КодСотрудника
WHERE (((Сотрудники.Фамилия)="Петров"))
ORDER BY Сотрудники.Фамилия, Сотрудники.Имя;
Пояснение к запросу:
ВЫБРАТЬ для НЕПОВТОРЯЮЩИХСЯ ЗАПИСЕЙ поля Закупки.НомерЗаказа,
Закупки.ОписаниеЗаказа, Закупки.ДатаРазмещения, Сотрудники.Фамилия, Сотрудники.Имя
ИЗ таблицы Сотрудники СВЯЗАННОЙ ПРАВОЙ ВНЕШНЕЙ СВЯЗЬЮ с таблицей Закупки ПО полям Сотрудники.КодСотрудника = Закупки.КодСотрудника
ГДЕ применяется условие отбора Сотрудники.Фамилия="Петров"
СОРТИРОВАТЬ ПО полям Сотрудники.Фамилия, Сотрудники.Имя;
Запрос 4.
Тип запроса: запрос на выборку из двух таблиц
Имя запроса: "ПоставщикиИЗакупки".
Цель запроса: Выбрать всех поставщиков из заданного города, у которых произведены закупки с заданным диапазоном дат размещения
QBE-запрос:
SQL-запрос:
SELECT Поставщики.Город, Поставщики.НазваниеПоставщика,
Закупки.ДатаРазмещения
FROM Поставщики INNER JOIN Закупки
ON Поставщики.КодПоставщика = Закупки.КодПоставщика
WHERE (Поставщики.Город='Москва') AND (Закупки.ДатаРазмещения Between #1/1/1999# And #1/1/2000#);
Пояснение к запросу:
ВЫБРАТЬ поля Поставщики.Город, Поставщики.НазваниеПоставщика,
Закупки.ДатаРазмещения
ИЗ таблицы Поставщики СВЯЗАННОЙ ВНУТРЕННЕЙ СВЯЗЬЮ с таблицей Закупки ПО полям Поставщики.КодПоставщика = Закупки.КодПоставщика
ГДЕ (значение поля Поставщики.Город совпадает с названием 'Москва') И
(значение поля Закупки.ДатаРазмещения лежит МЕЖДУ 1/1/1999 И 1/1/2000);
Запрос 5.
Тип запроса: запрос на выборку из трех таблиц
Имя запроса: "СделкиСТоваром".
Цель запроса: Выбрать первые 10% сделок с заданным товаром
QBE-запрос:
SQL-запрос:
SELECT TOP 10 PERCENT Сделки.ДатаОперации, Сделки.ОписаниеОперации, Товары.Марка, Типы.НазваниеТипа
FROM Типы RIGHT JOIN (Товары INNER JOIN Сделки ON Товары.КодТовара = Сделки.КодТовара) ON Типы.КодТипа = Товары.КодТипа
WHERE (((Типы.НазваниеТипа)="Колбасные изделия"))
ORDER BY Сделки.ДатаОперации;
Пояснение к запросу:
ВЫБРАТЬ ПЕРВЫЕ 10 ПРОЦЕНТОВ записей для полей Сделки.ДатаОперации, Сделки.ОписаниеОперации, Товары.Марка, Типы.НазваниеТипа
ИЗ таблицы Типы СВЯЗАННОЙ ПРАВОЙ ВНЕШНЕЙ СВЯЗЬЮ с таблицей (ТОвары СВЯЗАННОЙ ВНУТРЕННЕЙ СВЯЗЬЮ с таблицей Сделки ПО полям Товары.КодТовара = Сделки.КодТовара) ПО полям Типы.КодТипа = Товары.КодТипа
ГДЕ Типы.НазваниеТипа="Колбасные изделия"
СОРТИРОВАТЬ ПО Сделки.ДатаОперации;
Запросы на обновление
Запрос 6.
Тип запроса: запрос на обновление одной таблицы
Имя запроса: "ОбновитьЦены".
Цель запроса: обновить все цены товаров заданного типа, увеличив их на 10%
QBE-запрос:
SQL-запрос:
UPDATE Товары SET Товары.Цена =Товары.[Цена]*1.1
WHERE (((Товары.КодТипа)=1));
Пояснение:
ОБНОВИТЬ таблицу Товары,
УСТАНОВИТЬ при этом значение поляТовары.Цена равным Товары.[Цена]*1.1,
ГДЕ Товары.КодТипа=1;
Запрос на создание новой таблицы
Запрос 7.
Тип запроса: запрос на создание новой таблицы
Имя запроса: "НоваяТаблицаЗакупки".
Цель запроса: создание новой таблицы, содержащей сведения о закупках за последний месяц
QBE-запрос:
SQL-запрос:
SELECT Закупки.* INTO ЗакупкиАрхив
FROM Закупки
WHERE (((Закупки.ДатаРазмещения) >
Date()-30));
Пояснение:
<
ВЫБРАТЬ все поля и ПОМЕСТИТЬ В НОВУЮ ТАБЛИЦУ по имени ЗакупкиАрхив
ИЗ таблицы Закупки
ГДЕ значение поля ДатаРазмещения больше текущей даты минус 30 дней
>
Запросы на удаление
Запрос 8.
Тип запроса: запрос на удаление из одной таблицы
Имя запроса: "УдалитьСделки".
Цель запроса: Удалить все сделки с заданным диапазоном дат
QBE-запрос:
SQL-запрос:
DELETE Сделки.*, Сделки.ДатаОперации
FROM Сделки
WHERE Сделки.ДатаОперации Between #1/1/1996# And #1/1/1997#;
Пояснение:
<
УДАЛИТЬ все записи, использовать поле ДатаОперации
ИЗ таблицы Сделки,
ГДЕ ДатаОперации лежит между 1/1/1996 И 1/1/1997
>
Запрос 9.
Тип запроса: запрос на удаление из одной таблицы по результатам отбора из других таблиц
Имя запроса: "УдалитьЗакупкиПоАрхиву".
Цель запроса: Удалить все закупки в таблице Закупки, если они есть в таблице ЗакупкиАрхив
SQL-запрос:
DELETE Закупки.*, Закупки.ДатаРазмещения
FROM Закупки INNER JOIN ЗакупкиАрхив ON Закупки.КодЗаказа = ЗакупкиАрхив.КодЗаказа
WHERE (((Закупки.ДатаРазмещения)>Date()-30));
Если записи удаляются из одной таблицы, в запросе можно не указывать символ "*" (удаление значений всех полей), а можно указать только одно поле.
Если записи удаляются из одной таблицы (Закупки), связанной с другими (ЗакупкиАрхив), в запросе нужно указывать все поля таблицы (Закупки), из которой происходит удаление, введя символ "*".
Пояснение:
<
УДАЛИТЬ все записи, использовать поле ДатаРазмещения
ИЗ таблицы Закупки СВЯЗАННОЙ ВНУТРЕННЕЙ СВЯЗЬЮ
с таблицей ЗакупкиАрхив ПО полям Закупки.КодЗаказа = ЗакупкиАрхив.КодЗаказа
ГДЕ значение поля ДатаРазмещения больше текущей даты минус 30 дней
>
Запрос 10.
Тип запроса: Запрос на создание новой таблицы "НоваяТаблицаЗакупки"
Имя запроса: " ЗаказыЗаТекущийМесяц".
Цель запроса: Создать новую таблицу, содержащую сведения о закупках за текщий месяц.
SQL-запрос:
SELECT Закупки.НомерЗаказа,
Закупки.КодПоставщика,
Закупки.ДатаИсполнения
INTO НоваяТаблицаЗакупки
FROM Закупки
WHERE Format(Date(),"mmm") = Format([ДатаИсполнения],"mmm");
Вид таблицы просмотра результатов выполнения запроса
Содержание отчета
Привести созданные запросы к таблицам разрабатываемой базы данных в режиме QBE и в режиме SQL.
-
Запросы на выборку из одной и нескольких таблиц.
2.Запросы на обновление
3. Запросы на удаление
Контрольные вопросы
-
Для каких целей используются запросы?
-
Какие запросы является обновляемыми?
-
Как сформировать запросы на выборку, удаление, создание новых таблиц, обновление?
-
Какие ключевые слова используются в языке SQL для написания запросов?
-
Как записать условие отбора?