Программирование >>  Руководство по sql 

1 ... 19 20 21 [ 22 ] 23 24 25 ... 105


ИЗМЕНЕНИЕ СУЩЕСТВУЮЩИХ ДАННЫХ

в то время как оператор INSERT добавляет в таблицу новые строки, оператор UPDATE предназначен для изменения существующих в таблице данных.

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

Ниже приведен упрощенный синтаксис команды UPDATE, изменяющей выбранные строки:

UPDATE имя таблицы

SET имя стопбца = выражение

[WHERE условие]

Оператор UPDATE

Ключевое слово UPDATE предшествует названию таблицы или курсора (виртуальной таблицы). Как и в случае с другими операторами модификации данных, в каждом операторе UPDATE можно изменять данные только одной таблицы.

Если при выполнение оператора UPDATE нарушаются ограничения на целостность (например, добавляемое значение имеет неверный тип), система запрещает обновление данных и обычно выдает сообщение об ошибке. Офаничения на обновление виртуальных таблиц описываются в главе 8.

Предложение SET

в предложении SET определяются столбцы и указываются их новые значения. В предложении WHERE можно указать изменяемые сфОки. Если предложение WHERE не используется, то при выполнении команды UPDATE будут изменены значения во всех сфоках столбцов указанных в предложении SET.

Например, таблица publishers имеет следующий вид:

SQL:

select *

from publishers

Результат:

pub id

pub name

address

city

state

отзб

New Age Books

1 1st St

Boston

0877

Binnet & Hardley

2 2nd Ave.

Washington

1389

Algodata Infosystems

3 3rd Dr.

Berkeley

0010

Pragmatics

4 4th Ln.

Chicago

1756

HealthText

NULL

NULL

Если, например, все филиалы разместят свои ценфальные офисы в Атланте, шт. Джорджиа, в таблицу пофебуется внести изменения:

update publishers

set city = Atlanta, state = GA

Теперь таблица примет следующий вид:

SQL:

select *

from publishers



Результат:

pub id

pub name

address

city

state

оУзб

New Age Books

1 1st St

Atlanta

0877

Binnet & Hardley

2 2nd Ave.

Atlanta

1389

Algodata Infosystems

3 3rd Dr.

Atlanta

0010

Pragmatics

4 4th Ln.

Atlanta

1756

HealthText

NULL

Atlanta

(Кроме того, вы, вероятно, захотите изменить также и адреса.) Аналогично можно изменить имена всех издателей на ZIPP! :

SQL:

update publishers set pub name = ZIPP!

Теперь таблица примет следующий вид:

SQL:

select *

from publishers

Результат:

pub id

pub name

address

city

state

оУзб

ZIPP!

1 1st St

Atlanta

0877

ZIPP!

2 2nd Ave.

Atlanta

1389

ZIPP!

3 3rd Dr.

Atlanta

0010

ZIPP!

4 4th Ln.

Atlanta

1756

ZIPP!

NULL

Atlanta

Кроме того, при обновлении данных со значениями столбцов можно выполнять математические преобразования. Чтобы увеличить в два раза все цены в таблице titles, можно воспользоваться оператором:

SQL:

update titles

set price = price * 2

Поскольку в этом операторе не используется предложение WHERE, будут изменены цены во всех строках таблицы.

Предложение WHERE

Предложение WHERE в операторе UPDATE определяет изменяемые строки. (Оно аналогично предложению WHERE в операторе SELECT, который будет подробно рассматриваться в главах 4-8.) Например, если вдруг северная Калифорния станет отдельным щтатом с названием Pacifica (сокращенно PC), а жители Оклан-да рещат переименовать свой город в Big Bad Bay City, то в таблицу authors потребуется внести следующие изменения:

SQL:

update authors

set state = PG, city = Big Bad Bay City where state = CA and city = Oakland

После этого таблица authors примет следующий вид:



SQL:

select au fname, au lname, city, state from authors

Результат:

au fname

au lname

city

state

Abraham

Bennet

Berkeley

Marjorie

Green

Big Bad Bay City

Cheryl

Carson

Berkeley

Albert

Ringer

Salt Lake City

Anne

Ringer

Salt Lake City

Michel

DeFrance

Gary

Sylvia

Panteley

Rockville

Heather

McBadden

Vacaville

Dirk

Stringer

Big Bad Bay City

Dick

Straight

Big Bad Bay City

Livia

Karsen

Big Bad Bay City

Stearns

MacFeather

Big Bad Bay City

Dull

Palo Alto

Akiko

Yokomoto

Walnut Creek

Michael

OLeary

San Jose

Burt

Gringlesby

Covelo

Morningstar

Greene

Nashville

Johnson

White

Menlo Park

Innes

del Castillo

Ann Arbor

Sheryl

Hunter

Palo Alto

Chastity

Locksley

San Francisco

Reginald

Blotchet-Halls

Corvallis

Meander

Smith

Lawrence

Кроме того, потребуется выполнить дополнительные операторы UPDATE для авторов из других городов северной Калифорнии.

Предложение WHERE в операторе UPDATE может включать в себя подзапросы к одной или нескольким другим таблицам. Подзапросы описываются в главе 8.

УДАЛЕНИЕ ДАННЫХ: КОМАНДА DELETE

Не менее важной, чем добавление и изменение строк, является возможность их удаления. Подобно INSERT и UPDATE, команда DELETE позволяет манипулировать с одной или несколькими строками. Так же, как и в случае с другими операторами модификации данных, при удалении строк можно пользоваться информацией из других таблиц.

Оператор DELETE имеет следующий синтаксис:

DELETE FROM имя таблицы WHERE условие



1 ... 19 20 21 [ 22 ] 23 24 25 ... 105

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика