Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

7.1.2. Запросы на обновление данных

Запишите подходящее предложение INSERT, DELETE или UPDATE для каждой из следующих задач.

7.1.2.1. Измените цвет всех красных деталей на оранжевый.

7.1.2.2. Удалите все изделия, для которых нет поставок деталей.

7.1.2.3. Увеличьте размер поставки на 10 процентов для всех поставок тех поставщиков, которые поставляют какую-либо красную деталь.

7.1.2.4. Удалите все изделия из Рима и все соответствующие поставки.

7.1.2.5. Вставьте в таблицу S нового поставщика S10. Его фамилия и город – 'Уайт' и 'Нью-Йорк' соответственно, а состояние еще неизвестно.

7.1.2.6. Постройте таблицу, содержащую список номеров деталей, которые поставляются либо каким-нибудь поставщиком из Лондона, либо для какого-либо изделия в Лондоне.

7.1.2.7. Постройте таблицу, содержащую список номеров изделий, которые либо находятся в Лондоне, либо для них поставляются детали каким-нибудь поставщиком из Лондона.

7.1.2.8. Добавьте 10 к состоянию всех поставщиков, состояние которых в настоящее время меньше, чем состояние поставщика S4.

7.1.2.9. Постройте внешнее естественное соединение изделий и поставок по номерам изделий.

7.1.2.10. Постройте внешнее естественное соединение деталей и изделий по городам.

7.1.2.11. Постройте таблицу, содержащую полную информацию о поставщиках, деталях и изделиях, с указанием объема поставок для каждой поставки вместе с «сохраненной» информацией для каждого поставщика, детали и изделия, которые не входят в таблицу поставок.

Ответы к некоторым упражнениям.

7.1.2.1.UPDATE P SЕТ ЦВЕТ = 'Оранжевый' WHERE ЦВЕТ = 'Красный';

7.1.2.2.

DELETE FROM J WHERE НОМЕР_ПОСТАВЩИКА NOT IN (SELECT НОМЕР_ИЗДЕЛИЯ FROM SPJ);

7.1.2.3.

CREATE TABLE КРАСНЫЕ (НОМЕР_ПОСТАВЩИКА CHAR(5)); INSERT INTO КРАСНЫЕ (НОМЕР_ПОСТАВЩИКА) SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ, P WHERE SPJ. НОМЕР_ДЕТАЛИ = P. НОМЕР_ДЕТАЛИ AND ЦВЕТ = 'Красный'; UPDATE SPJ SET КОЛИЧЕСТВО = КОЛИЧЕСТВО * 1.1 WHERE НОМЕР_ПОСТАВЩИКА IN

(SELECT НОМЕР_ПОСТАВЩИКА FROM КРАСНЫЕ); DROP TABLE КРАСНЫЕ;

7.1.2.4.

DELETE FROM SPJ WHERE 'Рим'= (SELECT ГОРОД FROM J WHERE J.HOMEP_ИЗДЕЛИЯ=SPJ. НОМЕР_ИЗДЕЛИЯ); DELETE FROM J WHERE ГОРОД == 'Рим';

7.1.2.5.

INSERT INTO S (НОМЕР_ПОСТАВЩИКА, ФАМИЛИЯ. ГОРОД) VALUES ('S10', 'Уайт', 'Нью-Йорк'); или INSERT INTO S (НОМЕР_ПОСТАВЩИКА, ФАМИЛИЯ, СОСТОЯНИЕ, ГОРОД) VALUES ('S10', 'Уайт', 'NULL', 'Нью-Йорк');

7.1.2.6.

CREATE TABLE СПИСОК_ДЕТАЛЕЙ (НОМЕР_ДЕТАЛИ CHAR (6)); INSERT INTO СПИСОК_ДЕТАЛЕЙ (НОМЕР_ДЕТАЛИ) SELECT DISTINCT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА IN (SELECT НОМЕР_ПОСТАВЩИКА FROM S WHERE ГОРОД = 'Лондон') OR НОМЕР_ИЗДЕЛИЯ IN (SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE ГОРОД = 'Лондон');

7.1.2.7.

CREATE TABLE СПИСОК_ИЗДЕЛИЙ (НОМЕР_ИЗДЕЛИЯ CHAR (4)); INSERT INTO СПИСОК_ИЗДЕЛИЙ (НОМЕР_ИЗДЕЛИЯ SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE ГОРОД == 'Лондон' OR НОМЕР_ИЗДЕЛИЯ IN (SELECT DISTINCT HOMEP_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА IN (SELECT НОМЕР_ПОСТАВЩИКА FROM S WHERE ГОРОД = 'Лондон'));

7.1.2.8.

SELECT СОСТОЯНИЕ FROM S WHERE НОМЕР_ПОСТАВЩИКА = 'S4';

Результат: состояние, 20

Отсюда: UPDATE S SET СОСТОЯНИЕ = СОСТОЯНИЕ +10 WHERE СОСТОЯНИЕ < 20;

7.1.2.9.

CREATE TABLE РЕЗУЛЬТАТ (НОМЕР_ИЗДЕЛИЯ CHAR(4), НАЗВАНИЕ CHAR(IO), ГОРОД CHAR(15) НОМЕР_ПОСТАВЩИКА CHAR(5),НОМЕР_ДЕТАЛИ CHAR(6), КОЛИЧЕСТВО INTEGER); INSERT INTO РЕЗУЛЬТАТ SELECT J.*, SPJ. НОМЕР_ПОСТАВЩИКА, SPJ. НОМЕР_ДЕТАЛИ, SPJ. КОЛИЧЕСТВО FROM J, SPJ WHERE J. НОМЕР_ИЗДЕЛИЯ = SPJ. НОМЕР_ИЗДЕЛИЯ; INSERT INTO РЕЗУЛЬТАТ SELECT J.*, 'bb', 'bb','0 FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.HOMEP_ИЗДЕЛИЯ = J.HOMEP_ ИЗДЕЛИЯ);

7.1.2.10

CREATE TABLE PEЗУЛЬTAT10 (НОМЕР_ДЕТАЛИ CHAR(6), НАЗВАНИЕ CHAR (20), ЦВЕТ CHAR (6), ВЕС SMALLINT,ГОРОД SHAR(15), НОМЕР_ИЗДЕЛИЯ CHAR(4), НАЗВАНИЕ CHAR(10)); INSERT INTO РЕЗУЛЬТАТ10 SELECT P.*, НОМЕР_ИЗДЕЛИЯ, НАЗВАНИЕ FROM Р, J WHERE Р. ГОРОД = J. ГОРОД; INSERT INTO РЕЗУЛЬТАТ10 SELECT Р. *, bb', bb' FROM P WHERE NOT EXISTS (SELECT * FROM J WHERE J. ГОРОД = Р. ГОРОД); INSERT INTO РЕЗУЛЬТАТ10 SELECT 'bb', 'bb', 'bb', 0, J.ГОРОД, J.НОМЕР,ИЗДЕЛИЯ, J.НАЗВАНИЕ FROM J WHERE NOT EXISTS (SELECT * FROM P WHERE P. ГОРОД = J. ГОРОД);

7.1.2.11.

CREATE TABLE РЕЗУЛЬТАТ11 (НОМЕР_ПОСТАВЩИКА . . ., ФАМИЛИЯ . . ., СОСТОЯНИЕ . . ., ГОРОД_ПОСТАВЩИКА . . ., НОМЕР_ДЕТАЛИ .... НАЗВАНИЕ_ДЕТАЛИ . . , ЦВЕТ . . ., ВЕС . . ., ГОРОД_ДЕТАЛИ . . ., НОМЕР_ИЗДЕЛИЯ . . ., НАЗВАНИЕ_ИЗДЕЛИЯ .... ГОРОД_ИЗДЕЛИЯ . . ., КОЛИЧЕСТВО . . .); INSERT INTO РЕЗУЛЬТАТ 11 SELECT S. *, P. *, J. *, SPJ. КОЛИЧЕСТВО FROM S, P, J, SPJ WHERE S. НОМЕР_ПОСТАВЩИКА = SPJ.НОМЕР_ПОСТАВЩИКА AND P. НОМЕР_ДЕТАЛИ = SPJ. НОМЕР_ДЕТАЛИ AND J. НОМЕР_ИЗДЕЛИЯ = SPJ. НОМЕР_ИЗДЕЛИЯ; INSERT INTO РЕЗУЛЬТАТ11 SELECT S. *, 'bb', ‘bb', 'bb', 0, ‘bb', 'bb', ‘bb', 'bb', 0 FROM S WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ. НОМЕР_ПОСТАВЩИКА = S. НОМЕР_ПОСТАВЩИКА); INSERT INTO РЕЗУЛЬТАТ 11 SELECT 'bb', 'bb', 0, 'bb', P. *, 'bb', 'bb', 'bb', 0 FROM P WHERE NOT EXISTS (SELECT * FROM SPJ WHERE P. НОМЕР_ДЕТАЛИ = SPJ. НОМЕР_ДЕТАЛИ); INSERT INTO РЕЗУЛЬТАТ 11 SELECT 'bb', 'bb', 0, 'bb', 'bb', 'bb', 'bb', 0, 'bb', J. *, 0 FROM J WHERE NOT EXISTS (SELECT * FROM SPJWHERE SPJ.НОМЕР_ИЗДЕЛИЯ = J.НОМЕР_ИЗДЕЛИЯ);