Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_2 Создание объектов.doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
94.21 Кб
Скачать

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

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

  • Добавить в таблицу новый столбец;

  • Удалить уже существующий столбец;

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

В одной команде ALTER TABLE можно задать любое число изменений. Внесение изменений разрешено создателю таблицы или системному администратору.

Модификация таблицы, если она содержит данные и связана с другими таблицами, является потенциально опасной операцией.

Добавление столбца в таблицу

При добавлении нового столбца в таблицу каких-либо конфликтов с ранее введенными данными не возникает. Тем не менее, если столбец имеет ограничение NOT NULL, а таблица уже содержит данные, необходимо при добавлении столбца задать значение по умолчанию (DEFAULT).

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

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

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

Стандартный синтаксис команды ALTER TABLE не предполагает возможности изменения столбца. Поэтому изменение предполагает как минимум две команды ALTER TABLE. Первая из них удаляет столбец, а вторая – добавляет новый столбец с новыми ограничениями.

Команда удаления столбца влечет за собой полную потерю всех данных, хранящихся в столбце, поэтому команда выполняется поэтапно:

  • Добавить новый столбец с тем же типом данных, что и в изменяемом столбце;

  • Скопировать данные из существующего столбца в новый (UPDATE);

  • Удалить ограничения на изменяемый столбец;

  • Выполнить удаление существующего столбца;

  • Создать столбец с именем удаленного и новыми характеристиками;

  • Скопировать данные из столбца-копии в новый столбец;

  • Удалить столбец-копию;

  • Выполнить операции по восстановлению ограничений, удаленных в процессе этапа (3).

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

Добавление ограничений не требует никаких вспомогательных действий, следует только соблюдать порядок их добавления.

Удаление ограничений

Удаление ограничений не требует никаких вспомогательных действий, следует только соблюдать порядок их удаления.

Синтаксис команды ALTER TABLE

ALTER TABLE <имя таблицы>

ADD <имя столбца>

ADD <ограничение>

DROP <имя столбца>

DROP CONSTRAINT <ограничение>

ADD <имя столбца> и ADD <ограничение> - имеют такой же синтаксис, что и при создании таблицы;

3.3 Удаление таблиц

Для удаления таблицы предназначена команда DROP TABLE после которой указывается имя удаляемой таблицы.

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

---- конец лекции ----

4. Индексы

При выполнении запроса InterBase сначала определяет список индексов, связанный с данной таблицей. Затем устанавливает, что является более эффективным, просмотреть всю таблицу или для обработки запроса использовать существующий индекс. Если InterBase решает использовать индекс, то поиск ведется сначала по ключевым значениям в индексе, а затем, используя указатели, осуществляется просмотр самих таблиц для дополнительной фильтрации и окончательной выборки требуемых данных.

Использование индекса обычно требует меньшего количества обращений к диску, чем последовательное чтение строк в таблице.

Индекс может быть определен как на отдельном столбце, так и на множестве столбцов таблицы.

Тем не менее, индексирование оправдано не всегда.

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

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

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

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