Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 2 Управление данными (Тихомирова)

.docx
Скачиваний:
13
Добавлен:
11.02.2015
Размер:
286.02 Кб
Скачать

Лабораторная работа № 2

Создание запросов на выборку, удаление, обновление, добавление данных и формирование новых таблиц

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

Порядок выполнения

  1. Создать запросы на выборку из одной таблицы

  2. Создать запросы на выборку из нескольких таблиц

  3. Создать запросы на обновление данных

  4. Сформировать запрос на создание новой таблицы

  5. Создать запросы на удаление записей

Основные используемые команды

Создание запроса: окно базы данных Запросы / Создать / Конструктор / …В окне "Добавление таблицы" выбрать имена таблиц или запросов / Добавить… / Закрыть.

Выбор типа запроса: Раскрывающийся список Тип запроса на панели инструментов или меню Запрос / …выбрать тип (выборка, обновление, добавление, удаление, создание таблицы)

Переход между режимами Конструктор, Режим 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.

  1. Запросы на выборку из одной и нескольких таблиц.

2.Запросы на обновление

3. Запросы на удаление

Контрольные вопросы

  1. Для каких целей используются запросы?

  2. Какие запросы является обновляемыми?

  3. Как сформировать запросы на выборку, удаление, создание новых таблиц, обновление?

  4. Какие ключевые слова используются в языке SQL для написания запросов?

  5. Как записать условие отбора?