Управление данными. Лабораторный практикум
.pdfGROUP BY – группируя по (условие) указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя во фразе функции: SUM (арифметическая сумма всех выбранных значений данного поля, то есть сумма), COUNT (номера строк или не-NULL значения полей, которые выбрал запрос, то есть количество), MIN (наименьшее из всех выбранных значений данного поля, то есть минимум), MAX (наибольшее из всех выбранных значений данного поля, то есть максимум), AVG (усреднение всех выбранных значений данного поля, то есть среднее значение).
HAVING–имеяврезультателишьтегруппы,которыеудов- летворяют указанному перечню условий отбора групп (условие).
ORDER BY – спецификация сортировки (условие) определяет порядок сортировки: ASC – сортировка по возрастанию, DESC – сортировка по убыванию.
Использование реляционных и булевых операторов. Реляционный оператор – математический символ, кото-
рый указывает на определенный тип сравнения между двумя значениями. Реляционные операторы, которыми располагает SQL:
= Равный к > Больше чем < Меньше чем
>= Больше чем или равно <= Меньше чем или равно <> Не равно
Операторы Буля и как они работают.
*AND берет два Буля (в форме A AND B) как аргументы и оценивает их по отношению к истине, верны ли они оба.
*OR берет два Буля (в форме A OR B) как аргументы и оценивает на правильность, верен ли один из них.
*NOT берет одиночный Булев (в форме NOT A) как аргумент и заменяет его значение с неверного на верное или с верного на неверное.
Использование специальных операторов в условиях.
Оператор IN определяет набор значений, в которое данное значение может или не может быть включено.
BETWEEN определяет диапазон, значения которого должны уменьшаться.
41
Цель работы
Выполнение запросов на языке структурированных запросов SQL. Использование реляционных и булевых операторов. Использование специальных операторов в условиях.
Порядок выполнения работы
Цель: создать структуру трех таблиц (таблицы 7.1, 7.2, 7.3). Первое поле – ключевое. Тип данных – по смыслу. Выполнить необходимые подстановки. Заполнить таблицы данными. Выполнить запросы (сохранять запросы через Сохранить как, меняя номер запроса).
Таблица 7.1 – Реализация
Код |
web-ресурс |
Компьютерная техника |
|
web-ресурса |
|||
|
|
||
|
|
|
|
1001 |
003.ru |
Системный блок |
|
|
|
|
|
1002 |
porta.ru |
Ноутбук, ЖК-монитор |
|
|
|
|
|
1003 |
m3x.ru |
Карманный компьютер |
|
1004 |
arescomp.ru |
Карманный компьютер |
|
|
|
|
|
1007 |
digitalshop.ru |
ЖК-монитор |
|
|
|
|
Таблица 7.2 – Компьютерная техника
Код |
Модель |
Компьютерная техника |
Цена, |
Код |
|
модели |
тыс руб |
web-ресурса |
|||
|
|
||||
|
|
|
|
|
|
2001 |
ARKIS |
Системный блок |
32,3 |
1001 |
|
|
|
|
|
|
|
2002 |
O2 XDA Atom |
Карманный компьютер |
23 |
1003 |
|
|
|
|
|
|
|
2003 |
SONY |
Ноутбук |
50 |
1002 |
|
|
|
|
|
|
|
2004 |
TOSHIBA |
ЖК-монитор |
25 |
1002 |
|
|
|
|
|
|
|
2006 |
1ST(FIRST) |
Системный блок |
32,3 |
1001 |
|
|
|
|
|
|
|
2007 |
HP |
ЖК-монитор |
30 |
1007 |
|
|
|
|
|
|
|
2008 |
NEC |
Карманный компьютер |
6,3 |
1004 |
Таблица 7.3 – Реализация компьютерной техники
Код |
Сумма приобретений, тыс руб |
Дата |
Код |
Код |
|
покупки |
модели |
web-ресурса |
|||
|
|
||||
|
|
|
|
|
|
3001 |
30 |
30.07.2006 |
2008 |
1007 |
|
3002 |
32,3 |
30.07.2006 |
2001 |
1001 |
|
|
|
|
|
|
|
3003 |
6,3 |
30.07.2006 |
2007 |
1004 |
|
|
|
|
|
|
42
Окончание таблицы 7.3
Код |
Сумма приобретений, тыс руб |
Дата |
Код |
Код |
|
покупки |
модели |
web-ресурса |
|||
|
|
||||
|
|
|
|
|
|
3005 |
50 |
30.07.2006 |
2004 |
1002 |
|
|
|
|
|
|
|
3006 |
60 |
30.07.2006 |
2008 |
1007 |
|
|
|
|
|
|
|
3007 |
23 |
30.08.2006 |
2002 |
1003 |
|
|
|
|
|
|
|
3008 |
30 |
30.08.2006 |
2003 |
1002 |
|
|
|
|
|
|
|
3009 |
64,6 |
30.09.2006 |
2006 |
1001 |
|
3010 |
60 |
30.10.2006 |
2003 |
1002 |
|
|
|
|
|
|
|
3011 |
96,9 |
30.10.2006 |
2006 |
1001 |
|
|
|
|
|
|
1 Вывести таблицу Реализация:
SELECT [Код web-ресурса], [web-ресурс], [Компьютерная техника]
FROM Реализация;
2 Просмотреть только определенный столбец таблицы:
SELECT [web-ресурс]
FROM Реализация;
3 Изменить порядок столбцов:
SELECT Дата, [Код web-ресурса], [Код покупки], [Сумма приобретений, тыс руб]
FROM [Реализация компьютерной техники];
4 Найти web-ресурсы, где можно приобрести карманный компьютер.
SELECT [web-ресурс], [Компьютерная техника] FROM Реализация
WHERE[Компьютернаятехника]=’Карманныйкомпьютер’; 5 Найти компьютерную технику по цене более 10 тыс руб:
SELECT *
FROM [Компьютерная техника] WHERE [Цена, тыс руб]>10;
6 Найти карманный компьютер по цене более 6,4 тыс руб:
SELECT *
FROM [Компьютерная техника]
WHERE [Компьютерная техника]=’Карманный компьютер’ And [Цена, тыс руб]>6.4;
7 Найти компьютерную технику с кодами web-ресурса 1001, 1007 и 1004:
43
SELECT *
FROM [Компьютерная техника]
WHERE [Код web-ресурса] In (1001,1007,1004);
8 Извлечь из таблицы Реализация коды web-ресурсов между 1002 и 1004:
SELECT *
FROM Реализация
WHERE [Код web-ресурса] Between 1002 And 1004;
9 Найти наибольшую сумму приобретений, получаемую каждым web-ресурсом каждый день. Сгруппировать таблицу Реализация компьютерной техники по датам web-ресурсов и применить функцию MAX к каждой группе:
SELECT [Код web-ресурса], Дата, MAX(([Сумма приобретений, тыс руб]))
FROM [Реализация компьютерной техники] GROUP BY [Код web-ресурса], Дата;
10 Найти только максимальную сумму приобретений, значение которой выше 40 тыс руб:
SELECT [Код web-ресурса], Дата, MAX(([Сумма приобретений, тыс руб]))
FROM [Реализация компьютерной техники] GROUP BY [Код web-ресурса], Дата
HAVING MAX(([Сумма приобретений, тыс руб]))>40; 11 Представить коды web-ресурса, начиная с 1:
SELECT [Код web-ресурса], [web-ресурс], [Компьютерная техника], [Код web-ресурса]–1000
FROM Реализация;
12 Перед порядковым номером web-ресурса вставить слово номер:
SELECT [Код web-ресурса], [web-ресурс], [Компьютерная техника], ‘номер’, [Код web-ресурса]–1000
FROM Реализация;
13 Перед порядковым номером web-ресурса вставить слово номер и дать названия новым полям:
SELECT Реализация.[Код web-ресурса], Реализация.[web- ресурс], Реализация.[Компьютерная техника], ‘ номер ‘ AS Выражение1, [Код web-ресурса]–1000 AS Выражение2
FROM Реализация;
44
14 Упорядочить таблицу с помощью другого столбца Сумма приобретений, тыс руб, внутри упорядочения поля Код модели:
SELECT *
FROM [Реализация компьютерной техники]
ORDER BY [Код модели] DESC, [Сумма приобретений, тыс руб] DESC;
15 Разместить группы в последовательности:
SELECT [Код web-ресурса], Дата, MAX ([Сумма приобретений, тыс руб])
FROM [Реализация компьютерной техники] GROUP BY [Код web-ресурса], Дата
ORDER BY [Код web-ресурса];
16 Увидеть определенные поля таблицы Реализация, упорядоченными в порядке убывания к наименьшему значению кода web-ресурса:
SELECT [web-ресурс], [Код web-ресурса] FROM Реализация
ORDER BY 2 DESC;
Содержательная часть отчета по лабораторной работе должна включать в себя порядок выполнения работы с промежуточными результатами и файл с базой данных, сохраненной в Access, в соответствии с вариантом.
Контрольные вопросы
1 На какие операции с данными ориентирован непроцедурный язык SQL?
2 В чем особенность предложений языка SQL? 3 Где используется SQL?
4 Какая инструкция является основой SQL? 5 Для чего используется инструкция SELECT? 6 Каков синтаксис инструкции SELECT?
7 Каким символом заканчивается запрос SQL? 8 Что обозначает «*» в запросе?
9 Какие операторы могут быть использованы в запросе? 10 Что определяют ASC и DESC?
Варианты заданий
Название базы данных:
45
1) «Бытовая техника»;
2) «Автомобили»;
3) «Программное обеспечение»;
4) «Операционные системы»;
5) «Двигатели»;
6) «Самолеты»;
7) «Роботы»;
8) «Датчики»;
9) «Спутники»;
10) «Производственное оборудование».
46
Лабораторная работа № 8 ВЫПОЛНЕНИЕ ЗАПРОСОВ НА ЯЗЫКЕ СТРУКТУРИРОВАННЫХ ЗАПРОСОВ SQL (ЧАСТЬ 2)
Объединение таблиц. Подзапросы.
Объединение – способность определять связи между многочисленными таблицами и выводить информацию из них в терминах этих связей, всю внутри одной команды. При объединении таблицы, представленные списком в предложении FROM запроса, отделяются запятыми. Полное имя столбца таблицы фактически состоит из имени таблицы, сопровождаемого точкой и затем именем столбца.
Спомощью SQL вы можете вкладывать запросы внутрь друг друга. Обычно внутренний запрос генерирует значение, которое проверяется во внешнем запросе, определяющем, верно оно или нет.
Когда вы используете IN с подзапросом, SQL просто формирует этот набор строк из вывода подзапроса.
Операторы, ориентируемые на подзапросы, – ANY, ALL и SOME.
Спомощью ALL предикат является верным, если каждое значение, выбранное подзапросом, удовлетворяет условию в предикате (логическое высказывание) внешнего запроса.
Вы можете поместить многочисленные запросы вместе и объединить их вывод, используя предложение UNION. Предложение UNION объединяет вывод двух или более SQL-запросов в единый набор строк и столбцов.
Команды модификации языка DML.
Значения могут быть помещены и удалены из полей тремя командами языка DML (язык манипулирования данными):
INSERT (ВСТАВИТЬ),
UPDATE (МОДИФИЦИРОВАТЬ), DELETE (УДАЛИТЬ).
Команда создания таблицы.
Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу – таблицу без строк.
47
Цель работы
Выполнение запросов на языке структурированных запросов SQL. Объединение таблиц. Подзапросы. Использование команд модификации языка DML. Создание таблицы.
Порядок выполнения работы
1 Объединить три таблицы:
SELECT [Код покупки], [Модель], [Реализация компьютерной техники.Код модели], [Реализация компьютерной техники.Код web-ресурса]
FROM Реализация, [Компьютерная техника], [Реализация компьютерной техники]
WHERE [Компьютерная техника.Компьютерная техника] <> [Реализация.Компьютерная техника]
AND [Реализация компьютерной техники.Код модели] = [Компьютерная техника.Код модели]
AND [Реализация компьютерной техники.Код webресурса] = [Реализация.Код web-ресурса];
2 Найти все атрибуты таблицы Реализация компьютерной техники для ЖК-монитора:
SELECT *
FROM [Реализация компьютерной техники] WHERE [Код web-ресурса] IN
(SELECT [Код web-ресурса] FROM Реализация
WHERE [Компьютерная техника] = ‘ЖК-монитор’); 3 Оператор ANY берет все значения, выведенные подзапросом (значения Компьютерная техника в таблице Компьютерная
техника), и оценивает их как верные, если любой (ANY) из них равняется значению Компьютерная техника текущей строки внешнего запроса.
SELECT *
FROM Реализация
WHERE [Компьютерная техника] = ANY (SELECT [Компьютерная техника] FROM [Компьютерная техника]);
4 Вывести модели компьютерной техники с ценой выше, чем цена карманного компьютера.
48
SELECT *
FROM [Компьютерная техника]
WHERE [Цена,тыс руб] > ALL (SELECT [Цена,тыс руб] FROM [Компьютерная техника]
WHERE [Компьютерная техника]= ‘Карманный компьютер’); 5 Формирование объединения из двух запросов. Получить
web-ресурсы и модели системных блоков и вывести их как единое целое.
SELECT [Код web-ресурса], [web-ресурс] FROM Реализация
WHERE[Компьютернаятехника]=‘Системныйблок’ UNION SELECT [Код web-ресурса], Модель
FROM [Компьютерная техника] WHERE[Компьютернаятехника]=‘Системныйблок’;
6 Ввести строку в таблицу Реализация:
INSERT INTO Реализация
VALUES (1005, ‘digital.ru’, ‘модем’);
7 Переназначить номер web-ресурса digital.ru новому web- ресурсу:
UPDATE Реализация SET [web-ресурс] = ‘003.ru’, [Компьютерная техника] = ‘Модем’
WHERE [Код web-ресурса] = 1005;
8 Создать таблицу РеализацияКопия: CREATE TABLE РеализацияКопия ([Код web-ресурса] Integer,
[web-ресурс] char (30), [Компьютерная техника] char (30));
Содержательная часть отчета по лабораторной работе должна включать в себя порядок выполнения работы с промежуточными результатами и файл с базой данных, сохраненной в Access, в соответствии с вариантом лабораторной работы № 7.
Контрольные вопросы
1 В чем сущность объединения таблиц?
2 Каковы функции внешнего и внутреннего запросов?
49
3 Какие операторы ориентируемы на подзапросы? 4 Для чего используется предложение UNION? 5 Каково предназначение языка DML?
6 Что делают команды INSERT, UPDATE, DELETE? 7 Какая команда создает таблицы?
50
