Лаб 18 УД Голиков Илья
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАЦИОННЫХ И РОБОТОТЕХНИЧЕСКИХ СИСТЕМ
Отчет по лабораторной работе № 18
Тема работы «Язык SQL. Команда SELECT – выборка данных»
по дисциплине “Управление данными”
студента (ки) очного отделения
2 курса 12002105 группы
Голикова Ильи Александровича
Проверил:
Асс. Лысакова Татьяна Андреевна
(ученая степень, звание, Фамилия Инициалы)
Белгород
2023
Цель работы
Изучить правила использования команды SELECT в SQL, применить полученные знания для формирования запросов к базе данных.
Ход работы
В ходе выполнения работы было сделано несколько различных запросов к созданной в предыдущих работах базе данных с использованием нескольких операторов и их комбинаций.
Результат выполнения работы представлен на рисунке 1
Рисунок 1 – Данные в таблице payer
Данные из таблиц получались с помощью следующих SQL-запросов:
use maindb;
-- Простой Select
SELECT * FROM payer;
-- Запрос к нескольким таблицам
SELECT apartment.apartment_id, apartment.area, payer.full_name, payer.address,
house.address
FROM apartment
JOIN payer ON apartment.payer_id = payer.payer_id
JOIN house ON apartment.house_id = house.house_id;
-- Устранение дубликатов. Distinct
SELECT DISTINCT payer_id FROM apartment;
-- Сортировка результатов. Order by
SELECT * FROM payer
ORDER BY date_of_birth ASC;
-- Использование Where
SELECT * FROM payer
WHERE date_of_birth >= '1980-01-01'
ORDER BY date_of_birth ASC;
-- Предикаты сравнения
SELECT * FROM payer
WHERE date_of_birth <> '1996-02-15';
-- Переименование столбцов и вычисления в результирующем наборе
SELECT apartment_id, FLOOR(area * 10.76)
AS "Площадь в кв футах" FROM apartment;
-- Проверка наличия подстроки в строке
SELECT * FROM payer
WHERE LOWER(address) LIKE '%некрасова%';
-- Агрегатные функции
SELECT FLOOR(AVG(payment_amount)) FROM invoice;
-- Группировка записей
SELECT payer.full_name, payer.date_of_birth, COUNT(*) FROM apartment
JOIN payer ON apartment.payer_id = payer.payer_id
GROUP BY apartment.payer_id
ORDER BY payer.date_of_birth DESC;
-- Фильтрация данных по итоговым показателям. Предложение HAVING
SELECT payer.full_name, payer.date_of_birth, COUNT(*) FROM apartment
JOIN payer ON apartment.payer_id = payer.payer_id
GROUP BY apartment.payer_id
HAVING COUNT(*) > 1
ORDER BY payer.date_of_birth DESC;
-- Явные операции соединения
SELECT apartment.apartment_id, apartment.area, payer.full_name, payer.address
FROM apartment
LEFT JOIN payer ON apartment.payer_id = payer.payer_id;
-- Объединение запросов
CREATE TABLE apartment_copy LIKE apartment;
INSERT INTO apartment_copy (area, house_id, payer_id) VALUES (55, 1, 1);
SELECT * FROM apartment
UNION
SELECT * FROM apartment_copy;
-- Подзапросы
SELECT AVG(area) FROM apartment;
SELECT * FROM apartment;
SELECT * FROM apartment
WHERE area < (
SELECT AVG(area) FROM apartment
);
Вывод
В ходе выполнения лабораторной работы изучили правила и синтаксис команды SELECT, научились делать различные запросы к базе данных с целью получения данных в различных комбинациях.