SELECT rating, COUNT (DISTINCT cnum)
FROM Customers
GROUP BY rating
HAVING rating >
(SELECT AVG (rating)
FROM Customers
WHERE city = 'Rom');
Эта команда подсчитывает количество покупателей с рейтингом, превышающим среднее значение для покупателей города Rom.
Объединение множества запросов в один
Можно задать множество запросов одновременно и комбинировать их выходные данные с использованием предложения UNION. UNION объединяет выходные данные двух или более SQL-запросов в единое множество строк и столбцов. Для того чтобы получить сведения обо всех продавцах (salespeople) и покупателях (customers) Лондона в виде выходных данных одного запроса, следует ввести:
SELECT snum, sname
FROM Salespeople
WHERE city ='London'.
UNION
SELECT cnum, cname
FROM Customers
WHERE city ='London';
Использование строк и выражений с UNION
Иногда можно вставлять константы и выражения в предложения SELECT, использующие UNION. Это не соответствует в точности стандарту ANSI, но часто и оправданно применяется. Однако применяемые константы и выражения должны при этом удовлетворять стандарту сравнимости, о котором упоминалось ранее. Такая процедура может оказаться полезной, например, для формулировки комментария, определяющего, из какого конкретно запроса получена данная строка.
Можно объединить два запроса, вставив соответствующий текст в качестве комментария, для того чтобы различить каждый из двух случаев (минимальный заказ и максимальный заказ).
SELECT a.snum, sname, onum, 'Hfgheat on', odatе
FROM Salespeople a, Orders b
|
|
WHERE a.snum = b.snum
AND b.amt =
(SELECT MAX (amt) FROM Orders с WHERE c.odate = b.date)
UNION
SELECT a.snum, sname, onum, 'Lowest on', odate
FROM Salespeople a. Orders b
WHERE a.snum = b-cnum
AND b.amt =
(SELECT MIN (amt) FROM Orders с WHERE c.odate = b.odate);
Задание
В лабораторной работе на основе ранее созданной базы данных реализовать следующие механизмы языка структурированных запросов:
1. Скалярные выражения в выходных столбцах оператора SELECT.
2. Внесение текста в выходные данные запроса.
3. Группирование данных с применением функций агрегирования.
4. Исключение групп данных из результатов запроса.
5. Упорядочение данных с использованием всех режимов(ASC, DESC).
6. Механизм вложения запросов.
7. Объединение множества запросов в один.
Содержание отчета
1. Название лабораторной работы.
2. Цель работы.
3. Протокол работы оператора SELECT (с использованием всех механизмов, описанных ниже).
4. Вывод
Контрольные вопросы
1. Понятие эквисоединения
2. Цели использования группировки данных
3. Использование DISTINCT с подзапросами
4. Использование выражений в подзапросах.
5. Использование строк и выражений с UNION
Лабораторная работа №5
Использование команд обновления
Цель работы: Получить практические навыки работы с командами обновления INSERT, DELETE и UPDATE, позволяющие вводить, удалять или изменять данные в таблице БД.
|
|
Пояснения к работе
Ввод, удаление и изменение значений полей.
Все строки в SQL вводятся при помощи команды обновления INSERT. В простейшем случае команда INSERT имеет такой синтаксис:
INSERT INTO «имя таблицы»
VALUES (<значение>, <значение>...);
Например, для того чтобы ввести строку в таблицу Salespeople, можно использовать следующее предложение:
INSERT INTO Salespeople
VALUES (1001, 'Peel', ‘London’,.12);
Вставка NULL-значений
Если нужно вставить NULL-значение. необходимо указать его как обычное значение. Предположим, значение поля city для Ms.Peel еще неизвестно. В этом случае для нее можно вставить строку, указав значение NULL в столбце city, следующим образом:
INSERT INTO Salespeople
VALUES (1001, 'Peel', NULL,.12);
Поскольку NULL является специальным символом, а не символьным значением, оно указано без одиночных кавычек.
Именование столбцов для INSERT
Для указания имен столбцов, в которые необходимо ввести значения, порядок столбцов в таблице не важен. Предположим, значения для таблицы Customers берутся из напечатанного отчета, в котором интересующие сведения представлены в таком порядке: city,cname,cnum. Для простоты желательно вводить значения в порядке, указанном в напечатанном отчете. Можно воспользоваться командой:
|
|
INSERT INTO Customers (city, cname, cnum)
VALUES ('London', 'Hoffman', 2001);
Вставка результатов запроса
Команду INSERT можно применить для того, чтобы извлечь значения из одной таблицы и разместить их в другой, воспользовавшись для этого запросом. Для этого достаточно заменить предложение VALUES на соответствующий запрос, как в примере:
INSERT INTO Londonstaff
SELECT *
FROM Salespeople
WHERE city ='London’;
По этой команде все значения. полученные с помощью, размещаются в таблице с именем Londonstaff. Чтобы избежать проблем при выполнении команды, таблица Londonstaff должна удовлетворять следующим условиям:
• Она должна быть уже создана с помощью команды CREATE TABLE.
• Она должна иметь четыре столбца, соответствующих столбцам таблицы Salespeople в смысле типов данных: т.е. первый, второй и т.д. столбцы каждой из таблиц должны иметь один и тот же тип (использования одних и тех же имен не требуется).
Исключение строк из таблицы
DELETE FROM Salespeople;
В результате выполнения этой команды таблица становится пустой и ее можно удалить по команде DROP TABLE.
Обычно из таблицы требуется удалить только некоторые указанные строки. Чтобы их определить, можно, как и для запросов, использовать предикат. Например, чтобы исключить продавца c номером 1003 из таблицы, следует ввести:
|
|
DELETE FROM Salespeople WHERE snum= 1003;
Поле snum используется вместо поля sname, поскольку наилучший способ при удалении единственной строки — это указать значение ее первичного ключа. Применение первичного ключа гарантирует удаление единственной строки. Можно употребить и предикат, выбирающий группу строк, например:
DELETE FROM Salespeople WHERE city=’London';
Изменение значений полей
Например, для того чтобы изменить для всех покупателей рейтинг на 200, следует ввести:
UPDATE Customers SET rating = 200;
Дата добавления: 2018-05-13; просмотров: 606; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!