Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФОРМАТИРОВАНИЕ СВОДНОЙ ТАБЛИЦЫ.docx
Скачиваний:
8
Добавлен:
12.04.2015
Размер:
188.49 Кб
Скачать

Изменение структуры таблицы

Нет гарантий, что после того как БД спроектирована и созда­на, в ней не обнаружатся какие-либо неточности, которые необ­ходимо исправить. В этом может и не быть вины ее создателя. Например, могут измениться некоторые требования заказчика или произойти изменения в предметной области БД. В связи с этим понадобится внесение изменений в созданные отношения БД, для чего придется воспользоваться командами изменения.

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

Команда изменения таблицы имеет следующий обобщенный синтаксис:

ALTER TABLE table_name {ADD new_column>

I {ALTER [COLUMN] column_name new_data_type>

I {ADD CONSTRAINT constraint_name>

  1. {DROP CONSTRAINT constraint_name>

| {DROP [COLUMN] column_name RESTRICT | CASCADE);

где: table_name - имя изменяемой таблицы; new_column - описание нового добавляемого столбца; column_name - имя столбца;

new_data_type - описание нового типа данных, которые будут храниться в столбце;

constraint_name - наименование ограничения.

«•

Рассмотрим несколько примеров, иллюстрирующих возмож­ные варианты по изменению таблицы в БД (добавление и удале­ние столбца, изменение типа данных столбца).

Для добавления нового столбца в существующую таблицу ис­пользуется команда ADD COLUMN. Добавляемый столбец стано­вится последним столбцом таблицы.

Синтаксис команды:

ALTER TABLE table_name ADD new_column;

Так как при добавлении нового столбца таблица, как правило, не пуста, то для каждой строки таблицы вставляемый столбец заполняется значениями по умолчанию. Следовательно, в коман­де должно существовать значение по умолчанию для добавляе­мого столбца. Если такое значение для столбца не описано, то значение принимается равным NULL.

Например, добавим в таблицу tbIStudents столбец, в котором будет храниться адрес студента (fAddress). Команда по измене­нию таблицы будет иметь такой вид:

ALTER TABLE tbIStudents ADD fAddress VARCHAR(50);

При добавлении столбца в него будут занесены данные со значением NULL.

Для изменения типа данных какого-либо столбца таблицы не­обходимо использовать команду ALTER COLUMN. С ее помощью можно внести коррективы в уже созданную таблицу, учитывая, что при изменении типа данных столбца следует действовать так, чтобы не возникло конфликта. Например, нежелательно умень­шать пространство, выделенное в столбце под данные, чтобы не затерлась уже внесенная информация.

Синтаксис команды изменения столбца:

ALTER TABLE table_name

ALTER [COLUMN] column_name new_data_type;

Например, увеличим размер поля fAddress с 50 до 100 симво­лов:

ALTER TABLE tbIStudents

ALTER COLUMN fAddress VARCHAR(IOO);

Если требуется установить связь между полями с обеспечени­ем целостности данных, нужно воспользоваться конструкцией ADD CONSTRAINT с указанием имени создаваемой связи, имени связываемого столбца указанной таблицы (внешний ключ, FOR­EIGN KEY) и имени первичного ключа, с которым устанавливается связь. Например, установим связь Group_Fac между таблицами tbIGroups и tbIFaculties по полю fIDFaculty (так называется и внешний ключ таблицы tbIGroups, и первичный ключ таблицы tbIFaculties):

ALTER TABLE tbIGroups

ADD CONSTRAINT Group_Fac FOREIGN KEY (fIDFaculty)

REFERENCES tbIFaculties (fIDFaculty);

Для того чтобы удалить установленную связь, необходимо воспользоваться конструкцией DROP CONSTRAINT с указанием имени связи. Например, удалим установленную в предыдущем примере связь Group_Fac:

ALTER TABLE tbIGroups

DROP CONSTRAINT Group_Fac;

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

Синтаксис команды удаления столбца:

ALTER TABLE table_name

DROP [COLUMN] column_name RESTRICT | CASCADE;

Ключевое слово COLUMN является необязательным и может быть опущено.

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

  1. {ADD CONSTRAINT constraint_name> j {DROP CONSTRAINT constraint_name}

| {DROP [COLUMN] column_name RESTRICT | CASCADE);

где: table_name - имя изменяемой таблицы; new_column - описание нового добавляемого столбца; column_name - имя столбца;

new_data_type - описание нового типа данных, которые будут храниться в столбце;

constraint_name - наименование ограничения.

Рассмотрим несколько примеров, иллюстрирующих возмож­ные варианты по изменению таблицы в БД (добавление и удале­ние столбца, изменение типа данных столбца).

Для добавления нового столбца в существующую таблицу ис­пользуется команда ADD COLUMN. Добавляемый столбец стано­вится последним столбцом таблицы.

Синтаксис команды:

ALTER TABLE table_name ADD new_column;

Так как при добавлении нового столбца таблица, как правило, не пуста, то для каждой строки таблицы вставляемый столбец заполняется значениями по умолчанию. Следовательно, в коман­де должно существовать значение по умолчанию для добавляе­мого столбца. Если такое значение для столбца не описано, то значение принимается равным NULL.

Например, добавим в таблицу tbIStudents столбец, в котором будет храниться адрес студента (fAddress). Команда по измене­нию таблицы будет иметь такой вид:

ALTER TABLE tbIStudents ADD fAddress VARCHAR(50);

При добавлении столбца в него будут занесены данные со значением NULL.

Для изменения типа данных какого-либо столбца таблицы не­обходимо использовать команду ALTER COLUMN. С ее помощью можно внести коррективы в уже созданную таблицу, учитывая, что при изменении типа данных столбца следует действовать так, чтобы не возникло конфликта. Например, нежелательно умень­шать пространство, выделенное в столбце под данные, чтобы не затерлась уже внесенная информация.

Синтаксис команды изменения столбца:

ALTER TABLE table_name

ALTER [COLUMN] column_name new_data_type;

Например, увеличим размер поля fAddress с 50 до 100 симво­лов:

ALTER TABLE tbIStudents

ALTER COLUMN fAddress VARCHAR(IOO);

Если требуется установить связь между полями с обеспечени­ем целостности данных, нужно воспользоваться конструкцией ADD CONSTRAINT с указанием имени создаваемой связи, имени связываемого столбца указанной таблицы (внешний ключ, FOR­EIGN KEY) и имени первичного ключа, с которым устанавливается связь. Например, установим связь Group_Fac между таблицами tbIGroups и tblFacultles по полю fIDFaculty (так называется и внешний ключ таблицы tbIGroups, и первичный ключ таблицы tbIFaculties):

ALTER TABLE tbIGroups

ADD CONSTRAINT Group_Fac FOREIGN KEY (fIDFaculty)

REFERENCES tbIFaculties (fIDFaculty);

Для того чтобы удалить установленную связь, необходимо воспользоваться конструкцией DROP CONSTRAINT с указанием имени связи. Например, удалим установленную в предыдущем примере связь Group_Fac:

ALTER TABLE tbIGroups

DROP CONSTRAINT Group_Fac;

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

Синтаксис команды удаления столбца:

ALTER TABLE table.name

DROP [COLUMN] column_name RESTRICT | CASCADE;

Ключевое слово COLUMN является необязательным и может быть опущено.

При удалении столбца, посредством которого осуществляется связь с другими таблицами, в команде также указываются пара­метры, управляющие ссылочной целостностью отношений. При использовании параметра RESTRICT команда удаления не будет выполнена, если на заданный столбец имеются ссылки в ограни­чениях или условиях. Исключение составляют ограничения, ко­торые содержатся в самой таблице и ссылаются только на ука­занный в операторе столбец. Если задается параметр CASCADE, то все объекты, имеющие ссылки на удаляемый столбец, будут уничтожены.