Информационные системы
Шрифт:
В общем виде синтаксис оператора ALTER TABLE выглядит следующим образом:
Действие, выполняемое оператором ALTER TABLE, определяется ключевым словом, указываемым после имени таблицы:
• MODIFY – изменяется определение поля;
• ADD – новое поле добавляется в таблицу;
• DROP – поле удаляется из таблицы.
Для изменения типа данных поля используется следующий синтаксис оператора ALTER TABLE:
Например, для того чтобы добавить в таблицу ФИЗИЧЕСКИЕ ЛИЦА поле, в котором будет содержаться адрес электронной почты сотрудника, следует использовать следующий оператор:
Если же требуется изменить тип данных существующего поля, то следует использовать оператор ALTER TABLE в паре с ключевым словом MODIFY:
Пусть, например, после того как мы добавили в таблицу ФИЗИЧЕСКИЕ ЛИЦА поле Email, выяснилось, что использование типа CHARACTER для этого поля неэффективно– у многих сотрудников нет электронной почты и, следовательно, часть дискового пространства расходуется впустую. Целесообразнее применить для этого поля тип данных VARCHAR. Для изменения типа данных вызовем оператор ALTER TABLE:
Удаление существующего поля выполняется вызовом оператора ALTER TABLE с ключевым словом DROP:
Примечание.
Следует быть очень осторожным при использовании оператора ALTER TABLE. Непродуманное внесение изменений в таблицы уже работающей базы данных может привести к нарушению работы всей системы.
Оператор DROP TABLE
Для удаления таблиц используется оператор DROP TABLE. Синтаксис этого оператора:
Если при вызове оператора DROP TABLE указывается ключевое слово RESTRICT и на удаляемую таблицу ссылается какое-либо представление или ограничение, то при выполнении оператора удаления таблицы будет сгенерировано сообщение об ошибке. Если же использовать ключевое слово CASCADE, то параллельно с удалением таблицы будут удалены все ссылающиеся на нее представления и ограничения.
Задание ограничений
Ограничения позволяют обеспечить достоверность и непротиворечивость информации в базе данных. Существует достаточно большое количество различного рода ограничений, из которых мы рассмотрим лишь основные:
• ограничение NOT NULL;
• ограничение первичного ключа;
• ограничение UNIQUE;
• ограничение внешнего ключа;
• ограничение CHECK.
Ограничение NOT NULL
Ограничение NOT NULL может быть установлено для любого поля реляционной таблицы. При наличии ограничения NOT NULL запрещается ввод значений NULL в это поле.
Примечание.
Следует понимать, что значение NULL не эквивалентно ни нулевому значению для числовых полей, ни пробелу для полей текстовых – если в поле занесено значение 0 (или пробел), то поле не пустое, а содержит число 0 (или строку, состоящую из одного пробела). Если же значение поля равно NULL, то это означает, что поле содержит неопределенное значение (поле пустое), то есть в него не была занесена никакая информация.
Ограничение NOT NULL устанавливается при создании таблицы с помощью оператора CREATE TABLE. Чтобы задать ограничение NOT NULL для некоторого поля, следует просто указать его после типа поля:
Если же после задания типа данных поля следует слово NULL, то данное поле может содержать пустые значения. Однако атрибут NULL обычно устанавливается по умолчанию, поэтому указывать его явно нет необходимости.
Ограничение NOT NULL устанавливается для тех полей, в которые при занесении данных в таблицу обязательно должна быть введена какая-либо информация. Например, в таблице, содержащей личные данные о сотрудниках организации, можно задать ограничение NOT NULL для полей, в которых будут содержаться имя и фамилия сотрудника. Поэтому оператор создания таблицы ФИЗИЧЕСКИЕ ЛИЦА следует видоизменить следующим образом:
При добавлении нового поля в непустую таблицу с использованием оператора ALTER TABLE нельзя устанавливать ограничение NOT NULL для добавляемого поля. Это вполне очевидно – уже существующие записи в таблице не могут иметь в новом столбце непустые значения. Однако это ограничение можно преодолеть.
1. Добавьте в таблицу поле без ограничения NOT NULL.
2. Заполните значения нового поля для всех существующих записей.
3. Измените определение нового поля с помощью команды ALTER TABLE, задав ему ограничение NOT NULL.
Ограничение первичного ключа
Первичные ключи указываются при создании таблицы. Так как поля, входящие в состав первичного ключа, не могут принимать значение NULL, то для них обязательным является ограничение NOT NULL. Ограничение первичного ключа может быть задано двумя путями.
• В том случае, когда первичный ключ состоит только из одного поля, то он может быть задан с помощью ключевых слов PRIMARY KEY, указываемых при описании поля в операторе CREATE TABLE:
Обратите внимание, что указание ограничения NOT NULL для поля, являющегося первичным ключом, является обязательным.