Мартин грубер понимание sql перевод Лебедева В. Н. Под редакцией Булычева В. Н. Москва, 1993 martin gruber


UPDATE Salespeople SET comm = comm + .01 WHERE 2


Download 1.45 Mb.
bet81/172
Sana26.01.2023
Hajmi1.45 Mb.
#1128343
1   ...   77   78   79   80   81   82   83   84   ...   172
Bog'liq
Грубер. Понимание SQL

UPDATE Salespeople
SET comm = comm + .01
WHERE 2 <= ( SELECT COUNT (cnum)
FROM Customers
WHERE Customers.snum = Salespeople.snum );

Теперь продавцы Peel и Serres, имеющие многочисленых заказчиков, получат повышение своих комиссионных.
Имеется разновидность последнего примера из предыдущего раздела с DELETE. Он уменьшает комиссионные продавцов, которые произвели наименьшие порядки, но не стирает их в таблице:
UPDATE Salespeople
SET comm = comm - .01
WHERE snum IN ( SELECT snum
FROM Orders a
WHERE amt = ( SELECT MIN (amt)
FROM Orders b
WHERE a.odate = b.odate ));

СТОЛКНОВЕНИЕ С ОГРАНИЧЕНИЯМИ ПОДЗАПРОСОВ КОМАНДЫ DML
Неспособность сослаться к таблице, задействованой в любом подзапросе из команды модификации (UPDATE), устраняет целые категории возможных действий.
Например, вы не можете просто выполнить такую операцию, как удаление всех заказчиков с оценками ниже средней. Вероятно лучше всего вы могли бы сначала (Шаг 1.), выполнить запрос, получающий среднюю величину, а затем (Шаг 2.), удалить все строки с оценкой ниже этой величины:

Шаг 1.
SELECT AVG (rating)


FROM Customers;

Вывод = 200.

Шаг 2.
DELETE


FROM Customers
WHERE rating < 200;

РЕЗЮМЕ
Теперь вы овладели тремя командами, которые управляют всем содержанием вашей базы данных. Осталось только несколько общих вопросов относительно ввода и стирания значений таблицы, когда, например, эти команды могут выполниться данным пользователем в данной таблице и когда действия сделанные ими, становятся постоянными.
Подведем итог: Вы используете команду INSERT чтобы добавлять строки в таблицу. Вы можете или дать имена значениям этих строк в предложении VALUES (когда только одна строка может быть добавлена), или вывести значения с помощью запроса (когда любое число строк можно добавить одной командой). Если используется запрос, он не может ссылаться к таблице, в которую вы делаете вставку, каким бы способом Вы ее ни делали, ни в предложении FROM, ни с помощью внешней ссылки (как это делается в соотнесенных подзапросах). Все это относится к любым подзапросам внутри этого запроса.
Запрос, однако, оставляет вам свободу использования соотнесенных подзапросов или подзапросов, которые дают в предложении FROM имя таблице, которое уже было указано в предложении FROM внешнего запроса (это — общий случай для запросов).
DELETE и UPDATE используются чтобы, соответственно, удалить строки из таблицы и изменить в них значения. Оба они применимы ко всем строкам таблицы, если не используется предикат, определяющий, какие строки должны быть удалены или модифицированы. Этот предикат может содержать подзапросы, которые могут быть связаны с таблицей, удаляемой, или модифицированой, с помощью внешней ссылки. Эти подзапросы, однако, не могут ссылать к таблице модифицируемой любым предложением FROM.
Может показаться, что мы прошли материал SQL, который обладает не самым понятным логическим порядком. Сначала мы сделали запрос таблицы, которая уже заполнена данными. Потом мы показали как можно фактически помещать эти значения изначально. Но, как вы видете, полное ознакомление с запросами здесь неоценимо.
Теперь, когда мы показали вам как заполнять значениями таблицы, которые уже были созданы (по определению), мы покажем (со следующей главы), откуда появились эти таблицы.
РАБОТА С SQL

  1. Предположите, что имеется таблица, называемая Multicust, с такими же именами столбцов, что и таблица Продавцов. Напишите команду, которая бы вставила всех продавцов (из таблицы Продавцов) имеющих более чем одного заказчика в эту таблицу.

2. Напишите команду, которая бы удаляла всех заказчиков, не имеющих текущих порядков.
3. Напишите команду которая бы увеличила на двадцать процентов комиссионные всех продавцов, имеющих общие текущие порядки выше чем $3,000.

(См. Приложение A для ответов.)



Download 1.45 Mb.

Do'stlaringiz bilan baham:
1   ...   77   78   79   80   81   82   83   84   ...   172




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling