Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП СУБД Ч.2.doc
Скачиваний:
12
Добавлен:
11.06.2015
Размер:
545.79 Кб
Скачать

Alter table "Все заказы(кп)"

RENAME TO "Все заказы(кп1)"

Аналогичный результат может быть получен следующим образом:

RENAME "Все заказы(кп)" TO "Все заказы(кп1)"

  1. Добавление нового поля

ALTER TABLE "Клиент(кп)"

ADD ( "Образование" CHAR(20) )

При этом во всех строках таблицы значение добавленного поля будет пустым (NULL).

3. Удаление поля

ALTER TABLE "Клиент(кп)"

DROP ("Образование")

При исполнении этой команды во всех строках значение этого поля будет потеряно. Удаление поля, однако, невозможно, если на поле наложены какое-либо ограничение; в этом случае необходимо предварительно удалить все существующие ограничения, использующие это поле.

4. Переименование поля

ALTER TABLE "Клиент(кп)"

RENAME column "Образование" TO "Степень"

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

5. Изменение типа поля

ALTER TABLE "Клиент(кп)"

MODIFY "Степень" NVARCHER2(20)

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

6. Установление значения по умолчанию

ALTER TABLE "Клиент(кп)"

MODIFY "Степень" DEFAULT 'отсутствует'

Данное действие не влияет на уже существующие строки.

7. Добавление нового поля со значением по умолчанию

ALTER TABLE "Клиент(кп)"

ADD ( "Степень" NVARCHAR2(20)

DEFAULT 'отсутствует' )

Этот вариант команды используется для добавления нового поле со значением по умолчанию, при этом во всех существующих строках значения нового поля получат указанное значение (сравните с комбинацией предыдущих двух команд).

Теперь рассмотрим работу с ограничениями.

  1. Добавление нового ограничения

Alter table "Клиент(кп)" add constraint "Клиент(кп)_ф_с"

UNIQUE ( "Имя", "Фамилия" )

Обратите внимание, что, несмотря на то, что таблица "Клиент(кп)" содержит в точности те же данные и имеет те же самые поля, что и таблица "Клиент", но никакие ограничения в ней не определены. Ограничения при необходимости можно было бы определить (вместе с определением полями) в команде CREATE TABLE … AS, или добавить после создания таблицы при помощи команды ALTER TABLE.

Отметим, что существуют случаи, когда невозможно определить все ограничения только при помощи CREATE TABLE. Такая ситуация типична, если две таблицы содержат ограничения внешнего ключа друг на друга.

Следует иметь в виду, что при создании нового ограничения его действие будет проверено для данных всех уже существующих строк; если на некоторых строках оно не выполняется, исполнение команды завершается ошибкой и ограничение не накладывается.

Обратите так же внимание, что ограничение "Клиент(кп)_Ф_С" имеет другое имя, отличное от ограничения "Клиент_Ф_С" таблицы "Клиент", хотя и относится к другой таблице. Напомним, что имена ограничений должны быть уникальными в схеме вне зависимости от того, в какой таблице они определены, поскольку так же являются объектами схемы базы данных.

Напомним, что для удаления полей, на которые наложены какие-либо ограничения, необходимо либо сначала удалить эти ограничения (см. ниже), либо использовать опцию CASCADE CONSTRAINTS:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]