Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №4 ИБД.docx
Скачиваний:
17
Добавлен:
04.06.2023
Размер:
362.86 Кб
Скачать

Переменные sql и временные таблицы.

Часто результаты запроса необходимо использовать в последующих запросах. Для этого полученные данные необходимо сохранить во временных структурах. Эту задачу решают переменные SQL и временные таблицы. Объявление переменной начинается с символа @, за которым следует имя переменной. Значения переменным присваиваются посредством оператора select с использованием оператора присваивания := . Например:

Объявляется переменная @total, которой присваивается число записей в таблице books. Затем в рамках текущего сеанса в последующих запросах появляется возможность использования данной переменной. Переменная действует только в рамках одного сеанса соединения с сервером MySQL и прекращает свое существование после разрыва соединения.

Переменные также могут объявляться при помощи оператора set:

При использовании оператора set в качестве оператора присваивания может выступать обычный знак равенства =. Оператор set удобен тем, что он не возвращает результирующую таблицу. Не рекомендуется одновременно присваивать переменной некоторое значение и использовать эту переменную в одном запросе.

Переменная SQL позволяет сохранить одно промежуточное значение. Когда необходимо сохранить результирующую таблицу, прибегают к временным таблицам. Создание временных таблиц осуществляется при помощи оператора CREATE temporary table, синтаксис которого ничем не отличается от синтаксиса оператора CREATE table.

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

4. Выполнение лабораторной работы

Выбираем необходимую базу данных, созданную и заполненную ранее в лабораторных 2 и 3.

Рисунок 1 – Выбор необходимой БД

  • Далее с помощью команды SELECT * FROM products; выводим все столбцы таблицы. А с помощью команды SELECT product_ID, p_name FROM products; указываем строгий порядок следования столбцов в результирующей таблице.

  • Выполнение команды представлено на рисунке 2.

Рисунок 2 – Выборка всех записей из таблицы каталогов разными способами

  • Выбираем записи фамилий и ключей пользователей с «активным» статусом с помощью команды SELECT client_ID, c_name FROM clients WHERE с_name_company="NikeShop";

  • Выполнение команды представлено на рисунке 3.

Рисунок 3 – Выборка всех записей клиента и выборка имени и ключей клиентов из компании NikeShop

  • Выбираем все заказы и отсортировываем по id пользователя все заказы с помощью команды: SELECT * FROM deals ORDER BY deal_client_ID;

  • Выполнение команды представлено на рисунках 4,5.

Рисунок 4 – Выборка всех сделок

Рисунок 5 – Отсортированная по id клиентов выборка всех сделок

  • Далее производим сортировку по дате в обратном порядке всех дат оформления заказов используя команду: SELECT o_time FROM orders ORDER BY o_time DESC;

  • Выполнение команды представлено на рисунке 6.

Рисунок 6 – Отсортированная в обратном порядке по дате выборка всех дат оформления сделок

  • Производим выборку всех сделок и извлекаем первые 3 записей, при этом осуществляя обратную сортировку по полю deal_number используя команду: SELECT deal_ID, deal_time FROM deals ORDER BY deal_number DESC LIMIT 3;

  • И извлекаем следующие 3 записей после первых 5 используя: SELECT deal_ID, deal_time FROM deals ORDER BY deal_number DESC LIMIT 3,3;

  • Выполнение команд представлены на рисунках 7,8.

Рисунок 7 – Выборка всех сделок и выборка по id и количества первых 3 сделок, отсортированных в обратном порядке

Рисунок 8 – Выборка по id и количества 3 сделок, идущих после первых 3, отсортированных в обратном порядке

  • Выводим количество записей книг с помощью команды: SELECT COUNT(delivery_ID) FROM delivery;

  • Исключаем все повторяющееся id: SELECT COUNT(DISTINCT delivery_deal__ID) FROM delivery;

Рисунок 9 – Подсчет количества доставок. Уникальные id.

  • Создадим простой запрос на выборку к таблице products, который выводит максимальную и минимальную цены товарных позиций, присваивая им соответственно псевдонимы maximum и minimum: SELECT MAX(p_opt) AS maximum, MIN(p_opt) AS minimum FROM products;

Рисунок 10 – Выборка максимальной и минимальной цены товара

Ниже представлен листинг процесса выполнения лабораторной работы №4. Листинг 1. Процесс выполнения задания.

SHOW DATABASES;

USE order;

SHOW TABLES;

SELECT * FROM products;

SELECT product_ID, p_name FROM products;

SELECT * FROM clients;

SELECT client_ID, c_name FROM clients WHERE с_name_company="NikeShop";

SELECT * FROM deals;

SELECT * FROM deals ORDER BY deal_client_ID;

SELECT deal_time FROM deals ORDER BY deal_time DESC;

SELECT * FROM deals;

SELECT deal_ID, deal_time FROM deals ORDER BY deal_number DESC LIMIT 3;

SELECT deal_ID, deal_time FROM deals ORDER BY deal_number DESC LIMIT 3,3;

SELECT * FROM delivery;

SELECT COUNT(delivery_ID) FROM delivery;

SELECT COUNT(DISTINCT delivery_ID) FROM delivery;

SELECT * FROM products;

SELECT MAX(p_opt) AS maximum, MIN(p_opt) AS minimum FROM products;