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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!