Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db / Лекции / 6 семестр / Языки запросов.docx
Скачиваний:
134
Добавлен:
23.03.2015
Размер:
280.32 Кб
Скачать
        1. Удаление столбца

С помощью предложения ALTERTABLEможно удалить один или несколько столбцов, если в них больше нет необходимости. Синтаксис этого вариантаALTERTABLEв стандартеSQLследующий:

ALTERTABLEимя_таблицыDROP

имя_столбца {CASCADE|RESTRICT}

Удаляемый столбец может использоваться в описаниях ограничений целостности (о них см. в одной из следующих лекций). Наличие фразы CASCADE указывает, что такие ограничения также должны быть удалены. Фраза RESTRICT запрещает удалять столбец до тех пор, пока не будут удалены все ссылающиеся на него ограничения.

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

        1. Переименование таблицы

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

ALTER TABLE имя_таблицы RENAME TO новое_имя_таблицы;

Например, можно следующим образом переименовать таблицу FACULTY:

ALTER TABLE FACULTY RENAME TO NEWJACULTY;

      1. Удаление таблицы

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

DROP TABLE имя_таблицы {CASCADE | RESTRICT};

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

Например, для удаления таблицы LECTURE следует выполнить

следующую команду:

DROP TABLE LECTURE;

      1. Определение индексов

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

Решение о том, использовать или не использовать какой-либо индекс при обработке некоторого конкретного запроса, принимается оптимизатором СУБД, который учитывает множество фактором – размер таблиц, тип используемых структур хранения данных, статистическое распределение данных в таблицах и индексах и т.д. Однако, чтобы оптимизатор смог использовать индексы, их нужно определить. Индексы используются для следующих целей:

  • поддержка фраз UNIQUE и PRIMARY KEY;

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

  • оптимизация выполнения запросов.

На практике большинство СУБД предоставляют возможность создавать индекс. Формы описания индексов отличаются, но их суть в различных СУБД одна и та же. Для построения индекса в Oracle существует предложение CREATE INDEX, имеющее следующий синтаксис:

CREATE [UNIQUE] INDEX имя_индекса ON имя_таблицы (

имя_столбца [ASC | DESC][,

имя_столбца [ASC | DESC]...);

Если необходимость в ранее созданном индексе отпала, его можно удалить командой DROPINDEX, которая имеет следующий синтаксис:

DROPINDEXимя_индекса;

Удаление индекса не оказывает воздействия на содержимое столбцов.

При использовании индексов следует руководствоваться следующими правилами.

  • Для небольших таблиц индексы практически не приводят к повышению производительности.

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

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

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

  • Помните, что индексы занимают определенное место в базе данных.

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

  • В больших таблицах поиск индексированных значений выполняется на порядок быстрее, чем поиск неиндексированных, а в очень больших таблицах – на два-три порядка.