Использование группировок (GROUP BY)
Обновление с подзапросом. Установить нулевой объем поставок для всех поставщиков из Перми: Обновление множества записей. Удвоить состояние всех поставщиков, находящихся в Перми: Удаление с подзапросом. Удалить все поставки для поставщиков из Риги: Удаление множества записей. Удалить всех поставщиков из Перми: WHERE S. НОМЕР_ПОСТАВЩИКА = SP. HOMEP_ПОСТАВЩИКА) Предложение INSERT: Вычислить общий… Читать ещё >
Использование группировок (GROUP BY) (реферат, курсовая, диплом, контрольная)
Вычислить общий объем поставок для каждой детали:
SELECT НОМЕР_ДЕТАЛИ, SUM (КОЛИЧЕСТВО).
FROM SP.
GROUP BY НОМЕР_ДЕТАЛИ Результат: НОМЕР ДЕТАЛИ Р1 600.
Р2 1000.
РЗ 400.
Р4 500.
Р5 500.
Р6 100.
Запрос с использованием HAVING (Исключение всех групп, для которых не выполняется заданное условие). Выдать номера деталей, поставляемых более чем одним поставщиком:
SELECT НОМЕР_ДЕТАЛИ.
FROM SP.
GROUP BY НОМЕР_ДЕТАЛИ.
HAVING COUNT (*) > 1.
Результат: НОМЕР ДЕТАЛИ Р1.
Р2.
Р4.
Р5.
Объединение с использованием UNION
Выдать номера деталей, которые имеют вес больше 16, либо поставляются поставщиком S2 (либо то и другое):
SELECT НОМЕР_ДЕТАЛИ.
FROM P.
WHERE ВЕС > 16.
UNION.
SELECT НОМЕР_ДЕТАЛИ.
FROM SP.
WHERE НОМЕР_ПОСТАВЩИКА = 'S2'.
Результат: НОМЕР ДЕТАЛИ Р1.
Р2.
РЗ Р6.
Операции обновления
UPDATE, DELETE, INSERT. Предложение UPDATE:
UPDATE таблица.
SET поле = выражение [, поле = выражение].
[WHERE предикат].
Обновление одной записи. Изменить цвет детали Р2 на желтый, увеличить ее вес на 5 и установить значение города «неизвестный» (NULL):
UPDATE P.
SET ЦВЕТ = 'Желтый',.
ВЕС = ВЕС + 5,.
ГОРОД = NULL.
WHERE НОМЕР_ДЕТАЛИ = 'Р2'.
Обновление множества записей. Удвоить состояние всех поставщиков, находящихся в Перми:
UPDATE S.
SET СОСТОЯНИЕ = 2 * СОСТОЯНИЕ.
WHERE ГОРОД = 'Пермь'.
Обновление с подзапросом. Установить нулевой объем поставок для всех поставщиков из Перми:
UPDATE SP.
SET КОЛИЧЕСТВО = 0.
WHERE 'Пермь' =.
(SELECT ГОРОД.
FROM S.
WHERE S. HOMEP_ПОСТАВЩИКА = SP. НОМЕР_ПОСТАВЩИКА) Обновление нескольких таблиц. Изменить номер поставщика S2 на S9:
UPDATE S.
SET НОМЕР_ПОСТАВЩИКА = 'S9'.
WHERE НОМЕР_ПОСТАВЩИКА = 'S2'.
UPDATE SP.
SET НОМЕР_ПОСТАВЩИКА ='S9'.
WHERE НОМЕР_ПОСТАВЩИКА = 'S2'.
Здесь БД становится противоречивой после выполнения первой строчки UPDATE (нарушается целостность). Поэтому требуется второй UPDATE.
Предложение DELETE:
DELETE.
FROM таблица.
[WHERE предикат].
Пример 5.33. Удаление единственной записи.
Удалить поставщика S1:
DELETE.
FROM S.
WHERE НОМЕР_ПОСТАВЩИКА = ' S 1'.
Удаление множества записей. Удалить всех поставщиков из Перми:
DELETE.
FROM S.
WHERE ГОРОД = 'Пермь'.
Удалить все поставки:
DELETE.
FROM SP.
Удаление с подзапросом. Удалить все поставки для поставщиков из Риги:
DELETE.
FROM SP.
WHERE `Рига'=.
(SELECT ГОРОД.
FROM S.
WHERE S. НОМЕР_ПОСТАВЩИКА = SP. HOMEP_ПОСТАВЩИКА) Предложение INSERT:
INSERT.
INTO таблица [(поле [, поле] …)].
VALUES (константа [, константа] …).
i я константа соответствует i-му полю.
Вставка единственной записи.
INSERT.
INTO P (НОМЕР_ДЕТАЛИ, ГОРОД, ВЕС).
VALUES ('P5', 'Пермь', 12).
Можно с опущенными именами полей:
INSERT.
INTO P.
VALUES ('P5', 'Кулачок', 'Голубой', 12, 'Пермь').
Вставка множества записей. Для каждой поставляемой детали получить ее номер и общий объем поставок, сохранить результат в БД:
CREATE TABLE ВРЕМЕННАЯ.
(НОМЕР_ДЕТАЛИ CHAR (6),.
ОБЪЕМ_ПОСТАВКИ INTEGER);
INSERT.
INTO ВРЕМЕННАЯ (НОМЕР_ДЕТАЛИ, ОБЪЕМ_ПОСТАВКИ).
SELECT НОМЕР_ДЕТАЛИ, SUM (КОЛИЧЕСТВО).
FROM SP.
GROUP BY НОМЕР_ДЕТАЛИ Здесь предложение SELECT выполняется точно так же, как обычно, но результат не возвращается пользователю, а копируется в таблицу ВРЕМЕННАЯ.