Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода ТОБД.doc
Скачиваний:
24
Добавлен:
13.04.2015
Размер:
8.25 Mб
Скачать

Задание 8. Обновление записей в базе данных (update)

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

Типовая форма этого оператора выглядит так:

UPDATE tablename

SET columnl=expressionl, column2=expression2,

[WHERE condition]

[LIMIT number]

Основная идея заключается в обновлении таблицы с именем tablename, изменяя каждый указанный столбец column соответствующим выражением expression. Конструкцией WHERE UPDATE можно ограничить до работы с определенными строками, а конструкцией LIMIT обозначить количество строк, которые нужно обновить.

Давайте рассмотрим несколько примеров.

Если мы хотим повысить цену всех книг на 10%, можно воспользоваться оператором UPDATE без конструкции WHERE:

Исходное состояние таблицы BOOKS приведено ниже.

Рис. 3.260. Состояние таблицы BOOKS до модификации данных.

update books

set price=price * 1.1;

Рис. 3.261. Состояние таблицы BOOKS после модификации данных.

Если же требуется изменить одну строку, скажем, адрес некоторого клиента, можно поступить таким образом:

update customers

set address = 'ул. Победы д.7, кв.7'

where customerid = 4;

Так, например, состояние таблицы показанное на рис. 3.248 будет приведено к виду представленному на рис 3.262.

Рис. 3.262. Результат модификации данных в таблице Customers.

Задание 9. Изменение таблиц после создания (ALTER TABLE)

Кроме обновления данных в строках, может потребоваться изменить структуру самой таблицы в базе данных. Для этого применяется очень гибкий оператор ALTER TABLE. Базовая его форма такова:

ALTER TABLE tablename alteration [, alteration ...]

В ANSI SQL один оператор ALTER TABLE может осуществить только одно преобразование, а вот в MySQL подобных ограничений нет. Разные конструкции преобразования могут изменять разные аспекты таблицы.

Типы преобразования, осуществляемые оператором ALTER TABLE, перечислены в таблице на рис. 3.263.

Синтаксис

Описание

ADD [COLUMN] column_description [FIRST | AFTER column ]

Добавить столбец в указанное место (если место не указано, столбец добавляется в конец). Обратите внимание, column_description требует имени и типа, точно так же, как при работе с оператором CREATE.

ADD [COLUMN] (column_description,column_description, ...)

Добавить один или несколько столбцов в конец таблицы.

ADD INDEX [index] (column, ...)(столбцы) таблицы.

Добавить индекс в указанный столбец

ADD PRIMARY KEY (column, ...)

Сделать указанный столбец (ы) первичным ключом таблицы.

ADD UNIQUE [index] (column, ...) (столбцы) таблицы.

Добавить уникальный индекс в указанный столбец

ALTER [COLUMN] column {SET DEFAULT value \ DROP DEFAULT}

Добавить или удалить значение по умолчанию определенного столбца.

CHANGE [COLUMN] column new_column_description

Изменить столбец с именем column так, чтобы он получил указанное описание. Это можно использовать для изменения имени столбца, поскольку column_description включает в себя имя.

MODIFY [COLUMN] column_description

Похоже на CHANGE. Используется для изменения типов столбцов, но не имен.

DROP [COLUMN] column

Удалить указанный столбец.

DROP PRIMARY KEY

Удалить первичный индекс (не столбец!).

DROP INDEX index

Удалить указанный индекс.

RENAME[AS] new_table_name

Переименовать таблицу. в операторе ALTER TABLE

Рис. 3.263. Возможные преобразования оператором ALTER TABLE.

Рассмотрим наиболее типичные случаи употребления ALTER TABLE.

Частенько случается так, что Вы вдруг осознаете: какой-то столбец "недостаточно велик", чтобы вместить в себе необходимые данные. Например,в нашей таблице Customers имена и фамилии могут иметь длину до 30 символов. И вскоре может оказаться, что некоторые имена и фамилии слишком длинны и сохраняются в таблице в искаженном виде. Однако это можно исправить, изменив тип данных столбца, после чего он сможет принимать имена и фамилии длиной до 35 символов.

alter table customers

modify name char(35) not null;

Другая часто встречающаяся необходимость связана с добавлением столбца. Представьте, что в каждом регионе существует свой налог с продаж, поэтому магазину приходится учитывать этот налог, но делать это раздельно, поскольку он везде разный. В таблицу Orders потребуется добавить столбец налога:

alter table orders

add tax float(6,2) after amount;

В мониторе результат добавления столбца и состав столбцов таблицы Orders:

Рис. 3.264. Модифицированный состав структуры таблицы Orders.

Иногда какой-нибудь столбец может оказаться лишним. Удалим столбец, который мы только что добавили:

alter table orders

drop tax;