Выбрать главу

Следующий запрос выводит строки из таблицы salary_grades:

П SELECT *

FROM salary_grades;

SALARY_GRADE_ID L0W_SALARY HIGH_SALARY AVERAGE_SALARY

Модификация столбца

В приведенном ниже списке указываются аспекты столбца, которые могут

быть изменены с помощью ALTER TABLE.

■ Изменение размера столбца, если тип данных столбца таков, что он

допускает изменение длины, например CHAR или VARCHAR2.

■ Изменение разрядности числового столбца.

■ Изменение типа данных столбца.

■ Изменение значения по умолчанию для столбца.

2 250001

3 500001

4 750001

250000

500000

750000

999999

125000.5

375000.5

625000.5

875000

Создание таблиц, последовательностей, индексов и представлений 317

В следующих разделах вы ознакомитесь с примерами изменения этих

аспектов столбцов.

Изменение размера столбца

В следующем примере оператор ALTER TABLE используется для увеличения

длины столбца status таблицы order_status2 до 15:

П ALTER TABLE order_status2

MODIFY status VARCHAR2(15);

Предупреждение Уменьшить длину столбца можно только в том случае, если в таблице нет

строк или если все строки столбца содержат пустые значения.

Изменение разрядности числового столбца

В следующем примере оператор ALTER TABLE используется для изменения

разрядности столбца id таблицы order_status2 до 5:

□ ALTER TABLE order_status2

MODIFY id NUMBER(5);

Предупреждение Уменьшить разрядность числового столбца можно только в том случае,

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

Изменение типа данных столбца

В следующем примере оператор ALTER TABLE используется для изменения

типа данных столбца status таблицы order_status2 в CHAR:

□ ALTER TABLE order_status2

MODIFY status CHAR(15);

Если таблица пустая (т. е. не содержит строк) или если столбец содержит

пустые значения, можно изменить столбец к любому типу данных

(включая более короткие). В остальных случаях тип данных столбца может

быть заменен только на совместимый тип данных. Например, можно

заменить VARCHAR2 на CHAR (и наоборот), если только вы не делаете столбец

короче, но нельзя заменить DATE на NUMBER.

Изменение значения столбца по умолчанию

В следующем примере оператор ALTER TABLE используется для изменения

значения по умолчанию столбца lastjiradified таблицы order_status2 на

SYSDATE - 1:

□ ALTER TABLE order_status2

MODIFY last_modified DEFAULT SYSDATE - 1;

Значение по умолчанию применимо только по отношению к новым

строкам, добавляемым в таблицу. Для новых строк столбец last_modified

будет установлен на значение текущей даты минус один день.

Удаление столбца

В следующем примере оператор ALTER TABLE используется для удаления

столбца initially_created из таблицы order_status2:

318 Глава 10

□ ALTER TABLE order_status2

DROP COLUMN initially_created;

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

В предыдущих главах были показаны примеры таблиц с ограничениями

PRIMARY KEY, FOREIGN KEY и NOT NULL. Эти ограничения, наряду с другими

типами ограничений, приведены в таблице 10.3.

В следующих разделах вы увидите, как добавить некоторые из показанных

в таблице 10.3 ограничений.

Таблица 10.3. Ограничения

Ограничение Тип ограничения Значение

CHECK с Указывает, что значение столбца или группы столбцов

должно удовлетворять определенному условию.

NOT NULL с Указывает, что в этом столбце не разрешено хранить

пустые (NULL) значения. В реальности выполняется

как один из вариантов ограничения check.

PRIMARY KEY р Определяет первичный ключ таблицы, который состоит

из одного или нескольких столбцов, однозначно

идентифицирующих каждую строку таблицы.

FOREIGN KEY R Определяет для таблицы внешний ключ. Внешний

ключ ссылается на столбец другой таблицы (или этой

же таблицы в случае ссылки на саму себя).

UNIQUE и Определяет столбец или группу столбцов, где могут

храниться только уникальные значения.

CHECK OPTION V Изменения строк таблицы, выполненные через представление,

сначала должны пройти проверку. (Вы ознакомитесь

с этим далее в разделе «Представления».)

READ ONLY 0 Указывает, что из представления можно только читать.

(Вы ознакомитесь с этим далее в разделе «Представления

».)

Добавление ограничения C H E C K

В следующем примере оператор ALTER TABLE используется для добавления

ограничения CHECK к столбцу status таблицы order_status2:

□ ALTER TABLE order_status2

ADD CONSTRAINT order_status2_status_ck

CHECK(status IN ( ‘ PLACED’ , ‘ PENDING’ , SHIPPED’ ));

Заданное выше ограничение означает, что значение столбца status может

принимать только одно из значений, перечисленных в списке значений