Обновление существующих данных
В операторе указывается целевая таблица, которая должна быть модифицирована. Предложение WHERE отбирает строки таблицы, подлежащие обновлению. В предложении SET указывается, какие столбцы в выбранных строках таблицы должны быть обновлены, и для них задаются новые значения. Этот оператор выполняется следующим образом: все строки таблицы PERSON по очереди проверяются на соответствие условию поиска… Читать ещё >
Обновление существующих данных (реферат, курсовая, диплом, контрольная)
Наименьшей единицей информации, которую можно обновить в реляционной БД является значение одного столбца в одной строке. Обновлять информацию требуется, когда изменяются значения атрибутов у объектов рассматриваемой предметной области. На примере учебной БД это выглядит следующим образом:
- 1) если в квартире изменяется номер установленного телефона, то соответствующей строке таблицы TPHONE должно быть обновлено значение столбца NTEL;
- 2) если жители одной квартиры переезжают в другую квартиру, го столбец ADR таблицы PERSON для этих жителей необходимо обновить, чтобы учесть адрес их нового места жительства.
Для обновления значения одного или нескольких столбцов в выбранных строках одной таблицы предназначен оператор UPDATE (рис. 3.19).
Рис. 3.19. Синтаксическая диаграмма оператора UPDATE.
В операторе указывается целевая таблица, которая должна быть модифицирована. Предложение WHERE отбирает строки таблицы, подлежащие обновлению. В предложении SET указывается, какие столбцы в выбранных строках таблицы должны быть обновлены, и для них задаются новые значения.
Следующий оператор UPDATE изменяет номер и категорию телефона, установленного в квартире с заданным адресом:
UPDATE TPHONE SET NTEL = '111−0000', TCATEGORY = 'Д'.
WHERE ADR = 'Зеленоград. 1001−45'.
Оператор UPDATE может одновременно обновить столбцы в нескольких строках, соответствующих условию поиска. Например, можно изменить адрес проживания всех жителей одной квартиры:
UPDATE PERSON SET ADR = 'Зеленоград, 1801−12'.
WHERE ADR = 'Зеленоград, 1001−45'.
Этот оператор выполняется следующим образом: все строки таблицы PERSON по очереди проверяются на соответствие условию поиска. Строки, для которых условие поиска имеет значение TRUE, обновляются, а строки, для которых условие поиска имеет значение FALSE или NULL, не обновляются.
Выражение в операции присваивания может быть любым правильным выражением языка SQL, результирующее значение которого имеет тип данных, соответствующий целевому столбцу.
Значение выражения вычисляется на основе значений строки, которая в данный момент обновляется в целевой таблице. Выражение не может включать в себя какие-либо агрегатные функции или запросы.
Если выражение содержит ссылку на один из столбцов целевой таблицы, то для вычисления выражения используется значение этого столбца в текущей етроке, которое было перед обновлением. То же самое справедливо для ссылок на столбцы в предложении WHERE. Например:
UPDATE FLAT SET NR00MS = 5,.
SKV = NROOMS + 1 WHERE NROOMS = 3.
Для строк таблицы FLAT, в которых столбец NROOMS содержит значение, равное 3, оператор UPDATE запишет в столбец NROOMS значение 5, а в столбец SKV — значение 4 (3 + 1 !). Таким образом, порядок операций присваивания в предложении SET не влияет на результат.
Если предложение WHERE отсутствует в записи оператора UPDATE, то обновляются все строки целевой таблицы, например:
UPDATE PERSON SET SUMD = SUMD/1000.
Предложение WHERE может содержать вложенный запрос, если необходимо отбирать строки на обновление, опираясь на информацию из других таблиц. Например, можно увеличить общий доход жителей, имеющих не более одного источника дохода; выплатив единовременно по 500 руб. каждому из них:
UPDATE PERSON SET SUMD=SUMD+500 WHERE 1 >= (SELECT COUNT (*) FROM HAVE_D WHERE PERSON. NOM = HAVE_D.NOM).