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

УТС 4 семестр / 8391_Орещенко_лаб3

.doc
Скачиваний:
11
Добавлен:
08.08.2022
Размер:
79.87 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра АПУ

отчет

по лабораторной работе №3

по дисциплине «Система управления базами данных»

Тема: «Получение информации из БД в СУБД Access»

Студент гр. 8391

Орещенко Н.В.

Преподаватель

Белаш О.Ю.

Санкт-Петербург

2020

  1. Символ *

SELECT Предприятия.*

FROM Предприятия

WHERE (((Предприятия.[Город])="Санкт-Петербург"));

  1. Определим перечень городов, в которых находятся предприятия.

SELECT DISTINCT Город

FROM Предприятия;

  1. Обеспечим в таблице Предприятия, чтобы часть предприятий находились в одном городе, и выполним указанный запрос с использованием различных предикатов предложения SELECT инструкции SQL.

  2. Выведем информацию о двух самых дешевых заказах, а затем о двух самых дорогих заказах.

SELECT TOP 2 *

FROM Заказы

ORDER BY [Стоимость]

SELECT TOP 2 *

FROM Заказы

ORDER BY [Стоимость] DESC

  1. Выведем информацию о предприятиях, находящихся в каких-либо двух городах.

SELECT *

FROM Предприятия

WHERE [Город]='Санкт-Петербург' OR [Город]='Ростов-На-Дону'

  1. Выведем информацию о заказах, в шифре которых присутствуют две определенные буквы.

SELECT *

FROM Заказы

WHERE [Шифр заказа] LIKE '*ФФ*'

  1. Определим шифры заказов (с указанием шифров предприятий), дата отгрузки которых находится в определенном диапазоне.

SELECT [Шифр предприятия],[Шифр заказа]

FROM Выполнение

WHERE [Дата отгрузки] BETWEEN #05/01/20# AND #06/01/20#

  1. Определим шифры заказов (с указанием шифров предприятий), для которых не выполнена еще отгрузка.

SELECT [Шифр предприятия],[Шифр заказа]

FROM Выполнение

WHERE [Отметка о выполнении]=FALSE

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

SELECT *

FROM Заказы

WHERE ([Стоимость] BETWEEN 100 AND 100000) AND ([Объем] BETWEEN 1 AND 20)

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

SELECT *

FROM Заказы

WHERE ([Стоимость] >10000) OR ([Объем] > 5)

  1. Определим наименование, объем и плановую дату выполнения заказов, для которых не произведены еще все отгрузки.

SELECT [Наименование заказа] AS Наименование, [Объем], [Дата выполнения] AS [Плановая дата]

FROM Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа

WHERE [Отметка о выполнении]=FALSE

  1. Для предыдущего запроса выполним различные типы объединений (INNER JOIN, LEFT JOIN, RIGHT JOIN) и обоснуем разницу в результатах.

INNER JOIN – внутреннее соединение, при котором записи из двух таблиц соединяются и добавляются в результирующий набор только в том случае, если значения в связанных полях равны. LEFT JOIN – левое внешнее соединение, при котором все записи из таблицы, указанной в левой части предложения LEFT JOIN, включаются в результирующий набор, даже если в таблице, указанной в правой части, нет соответствующих им записей.

  1. Выведем информацию о выполненных заказах предприятиями определенного города (с указанием стоимости и объема этих заказов).

SELECT Предприятия.[Город], Заказы.*

FROM (Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]) INNER JOIN Предприятия ON Выполнение.[Шифр предприятия] = Предприятия.[Шифр предприятия]

WHERE Предприятия.[город] = 'Ростов-На-Дону'

  1. Выведем информацию о предприятиях, объединив столбцы Город, Адрес и Телефон. Созданному столбцу дадим новое имя.

SELECT ([Город] & '; ' & [Адрес] & '; ' & [Телефон]) AS [Данные о предприятии]

FROM Предприятия

  1. Подсчитаем среднюю стоимость и средний объем заказов с переименование столбцов в результирующем наборе.

SELECT (AVG([Стоимость])) AS [Средняя стоимость], (AVG(Объем)) AS [Средний объем]

FROM Заказы

  1. Вычислим среднюю цену одной единицы заказов.

SELECT (Стоимость/Объем) AS [Цена за единицу]

FROM Заказы

  1. Определим количество заказов, выполняемых каждым предприятием.

SELECT [Шифр предприятия], Count([Шифр заказа]) AS [Кол-во заказов]

FROM Выполнение

GROUP BY [Шифр предприятия];

  1. Определим количество предприятий, выполняющих каждый заказ.

SELECT [Шифр заказа], Count([Шифр предприятия]) AS [Кол-во предприятия]

FROM Выполнение

GROUP BY [Шифр заказа];

  1. Определим количество предприятий в каких-либо двух городах (по отдельности для каждого города). Запрос создадим двумя способами: с ограничением числа выводящихся групп и с ограничением числа записей перед выполнением группировки.

SELECT [Город], Count([Название предприятия]) AS [Кол-во предприятий]

FROM Предприятия

GROUP BY [Город]

HAVING [Город] = 'Санкт-Петербург' OR [Город] = 'Москва'

SELECT [Город], Count([Название предприятия]) AS [Кол-во предприятий]

FROM Предприятия

WHERE [Город] = 'Санкт-Петербург' OR [Город] = 'Москва'

GROUP BY [Город]

  1. Определим количество невыполненных заказов каждым из предприятий.

SELECT [Шифр предприятия], Count([Шифр предприятия]) AS [Кол-во невыполн.]

FROM Выполнение

WHERE [Отметка о выполнении] = FALSE

GROUP BY [Шифр предприятия]

  1. Определим общую стоимость выполненных заказов каждым из предприятий с указанием названия и телефона предприятия.

SELECT Предприятия.[Название предприятия], Предприятия.[Телефон], Sum(Заказы.[Стоимость]) AS [Общая стоимость]

FROM Предприятия INNER JOIN (Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]) ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]

WHERE Выполнение.[Отметка о выполнении] = TRUE

GROUP BY Предприятия.[Название предприятия], Предприятия.[Телефон]

  1. Определим предприятия, которые не участвуют в выполнении заказов (с использованием подзапроса).

SELECT [Шифр предприятия]

FROM Предприятия

WHERE [Шифр предприятия] NOT IN

(SELECT [Шифр предприятия]

FROM Выполнение)

  1. Определим заказы, в выполнении которых принимают участие предприятия, находящиеся в определенном городе (с использованием подзапроса).

SELECT *

FROM Выполнение

WHERE [Шифр предприятия] IN

(SELECT [Шифр предприятия]

FROM Предприятия

Where [Город] = 'Санкт-Петербург')

  1. Определим предприятия с указанием города, где они располагаются, выполняющие хотя бы один заказ, стоимость которого не более определенной величины (с использованием подзапроса).

SELECT [Шифр предприятия], Город

FROM Предприятия

WHERE [Шифр предприятия] IN

(SELECT [Шифр предприятия]

FROM Выполнение

Where [Шифр заказа] IN

(SELECT[Шифр заказа]

From Заказы

WHERE [Стоимость] < 10000));

  1. Выведем адрес и телефон предприятия с запросом у пользователя шифра этого предприятия.

SELECT Адрес, Телефон

FROM Предприятия

WHERE [шифр предприятия] = [Введите, пожалуйста, шифр]

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

SELECT *

FROM Заказы

WHERE [Шифр заказа] LIKE '*' & [Введите буквы] & '*';

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

SELECT [Шифр заказа], Объем

FROM Заказы

WHERE [Шифр заказа] In

(SELECT [Шифр заказа]

FROM Выполнение

WHERE [Дата отгрузки] BETWEEN Дата1 AND Дата2);

  1. А) Запрос на создание таблицы. Создадим таблицу Невыполненные заказы с информацией о невыполненных заказах (шифры заказов) с указанием предприятия (шифр предприятия и телефон), выполнявшего заказ.

SELECT Выполнение.[Шифр заказа], Выполнение.[Шифр предприятия], Предприятия.Телефон INTO [Невыполненные заказы] FROM Предприятия INNER JOIN Выполнение ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия] WHERE Выполнение.[Отметка о выполнении]=False;

  1. Б) Запрос на добавление. Создадим запрос на добавление записей о невыполненных заказах из таблицы Выполнение в таблицу Невыполненные заказы.

INSERT INTO [Невыполненные заказы] ( [Шифр заказа], [Шифр предприятия], Телефон ) SELECT Выполнение.[Шифр заказа], Выполнение.[Шифр предприятия], Предприятия.Телефон

FROM Предприятия INNER JOIN Выполнение ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]

WHERE Выполнение.[Отметка о выполнении]=False;

  1. В) Запрос на обновление. Увеличим стоимость всех заказов на 10%, применяя запрос на обновление.

UPDATE Заказы SET Заказы.Стоимость = [Стоимость]*1.1;

  1. Г) Запорос на удаление. Удалим с помощью запроса на удаление из таблицы Невыполненные заказы какой-либо заказ, предполагая, что его выполнение завершено.

DELETE *

FROM [Невыполненные заказы]

WHERE [Невыполненные заказы].[Шифр заказа]='22ФФ99'

  1. Удалим с помощью запроса на удаление информацию о каком-либо заказе в таблице Заказы.

DELETE *

FROM Заказы

WHERE Стоимость=1100;

5