Where exists

(SELECT *

FROM USP

WHERE OCENKA = 3

AND STUDENTS.SNUM = USP.SNUM);

Собственно вся команда удаляет информацию, аналогично предыдущему примеру. Обратите внимание на то, что часть предиката внутреннего запроса ссылается к таблице STUDENTS. Это означает, что весь подзапрос будет выполняться отдельно для каждой строки данной таблицы.

В целом структура команды DELETE достаточно проста для внимания, поэтому более подробно на ней останавливаться не будем.

9.3. Изменение существующих данных. Команда UPDATE содержит предложение SET, которое определяет вносимые изменения для требуемого поля таблицы.

Синтаксис команды UPDATE:

UPDATE < имя таблицы>

SET< имя поля > = < значение >;

С UPDATE можно использовать предикаты для выбора определенных строк таблицы.

Пример 1. Изменить оценки на пять по предмету с кодом 2003.

UPDATE USP

SET OCENKA = 5

WHERE PNUM = 2003;

Предложения SET можно назначить для любого числа столбцов.

Пример 2. Заменить преподавателя Викулина на Федченко.

UPDATE TEACHERS

SET TFAM = “Федченко”, TNAME = “Светлана”, TOTCH = “Геннадиевна”, TDATE = 01/09/1999

WHERE TNUM = 4001;

В предложении SET можно использовать выражения, располагая их в списке для того поля, которое необходимо изменить.

Пример 3. Увеличить стипендию в 2 раза.

UPDATE STUDENTS

SET STIP = STIP*2;

Можно использовать сложные предикаты выбора записи.

Пример 4. Удвоить только стипендию размером 25.50.

UPDATE STUDENTS

SET STIP = STIP*2

WHERE STIP = 25.50;

Команду UPDATE можетработать с NULL значениями. Т.к. предложение SET не является предикатом, то можно вводить NULL значения так же, как вводятся обыкновенные данные.

Пример 5. Изменить все оценки студентов по учебному процессу с кодом 2003 на NULL.

UPDATE USP

SET OCENKA = NULL

WHERE PNUM = 2003;

Мощным средством модификации данных является использование подзапросов в команде модификации UPDATE. Нельзя в предложении FROM любого подзапроса модифицировать таблицу, к которым ссылается основная команда.

Запрещены ссылки во вложенных запросах к таблице, которая модифицируется командой UPDATE. Внутри необязательного предиката этой командой можно использовать соотнесенные подзапросы, аналогично тому, как делает это DELETE.

Пример 6. Увеличить размер стипендии в 2 раза студентам, у которых имеются оценки, по крайней мере, по двум учебным предметам.

UPDATE STUDENTS

SET STIP = STIP*2

WHERE 2<=

(SELECT COUNT (SNUM)

FROM USP

WHERE STUDENTS.SNUM = USP SNUM);

Пример 7. модифицировать размер стипендии для студентов, имеющих минимальный бал в тот или иной день при помощи соотнесенного подзапроса.

UPDATE STUDENTS

SET STIP = STIP-1

WHERE SNUM IN

(SELECT SNUM

FROM USP FIRST

WHERE OCENKA =

(SELECT MIN (OCENKA)

FROM USP SECOND

WHERE SNUM.UDATE = SECOND.UDATE));

Пример 8. Уменьшить оценку студентов на единицу, у которых оценки ниже средней.

Для этого сначала выполним поиск средней оценки.

SELECT AVG (OCENKA)

FROM USP;

Теперь используем запрос:

UPDATE USP

SET OCENKA = OCENKA – 1

WHERE ocenka <4.2;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: