2.3 Видалення таблиці
З часом структура бази даних міняється: створюються нові таблиці, а колишні стають непотрібними і віддаляються з бази даних за допомогою оператора:
DROP TABLE ім’я_таблиці [RESTRICT | CASCADE]
Слід зазначити, що ця команда видалить не тільки вказану таблицю, але і всі вхідні в неї рядки даних. Якщо вимагається видалити з таблиці лише дані, зберігши структуру таблиці, слід скористатися командою DELETE.
Оператор DROP TABLE додатково дозволяє указувати, чи слідує операцію видалення виконувати каскадно. Якщо в операторі вказано ключове слово RESTRICT, то за наявності в базі даних хоча б одного об'єкту, існування якого залежить від таблиці, що видаляється, виконання оператора DROP TABLE буде відмінено. Якщо вказано ключове слово CASCADE, автоматично віддаляються і всі інші об'єкти бази даних, чиє існування залежить від таблиці, що видаляється, а також інші об'єкти, залежні від об'єктів, що видаляються. Загальний ефект від виконання оператора DROP TABLE з ключовим словом CASCADE може виявитися вельми відчутним, тому подібні оператори слід використовувати з максимальною обережністю.
Частіше всього оператор DROP TABLE використовується для виправлення помилок, допущених при створенні таблиці. Якщо таблиця була створена з некоректною структурою, можна скористатися оператором DROP TABLE для її видалення, після чого створити таблицю наново.
2.4 Індекси
Індекси в стандарті язика
Індекси є структурою, що дозволяє виконувати прискорений доступ до рядків таблиці на основі значень одного або більш її стовпців. Наявність індексу може істотно підвищити швидкість виконання деяких запитів і скоротити час пошуку необхідних даних за рахунок фізичного або логічного їх впорядковування.
Індекс – це набір посилань, впорядкованих по певному стовпцю таблиці, який в даному випадку називатиметься індексованим стовпцем. Хоча індекс і пов'язаний з конкретним стовпцем (або стовпцями) таблиці, все ж таки він є самостійним об'єктом бази даних.
Фізично індекс – всього лише впорядкований набір значень з індексованого стовпця з покажчиками на місця фізичного розміщення початкових рядків в структурі бази даних. Коли користувач виконує запит, що звертається до індексованого стовпця, СУБД автоматично аналізує індекс для пошуку необхідних значень.
Проте, оскільки індекси повинні обновлятися системою при кожному внесенні змін в їх базову таблицю, вони створюють додаткове навантаження на систему.
Індекси звичайно створюються з метою задоволення певних критеріїв пошуку після того, як таблиця вже знаходилася якийсь час в роботі і збільшилася в розмірах. Створення індексів не передбачено стандартом SQL, проте більшість діалектів підтримує як мінімум наступний оператор:
CREATE [UNIQUE] INDEX ім’я_індекса
ON ім’я_таблиці (ім’я_колонки[ASC|DESC][,...n])
Вказані в операторі стовпці складають ключ індексу. Індекси можуть створюватися тільки для базових таблиць, але не для уявлень. Якщо в операторі вказано ключове слово UNIQUE, унікальність значень ключа індексу автоматично підтримуватиметься системою. Вимога унікальності значень обов'язкова для первинних ключів, а також можлива і для інших стовпців таблиці (наприклад, для альтернативних ключів). Хоча створення індексу допускається у будь-який момент, при його побудові для вже заповненої даними таблиці можуть виникнути проблеми, пов'язані з дублюванням даних в різних рядках. Отже, унікальні індекси (принаймні, для первинного ключа) має значення створювати безпосередньо при формуванні таблиці. В результаті система відразу візьме на себе контроль за унікальністю значень даних у відповідних стовпцях.
Якщо створений індекс згодом виявиться непотрібним, його можна видалити за допомогою оператора
DROP INDEX ім’я_індекса
Індекси в середовищі MS SQL Server
Індекс є засобом, що допомагає прискорити пошук необхідних даних за рахунок фізичного або логічного їх впорядковування. Індекс є набором посилань, впорядкованих по певному стовпцю таблиці, який в даному випадку називатиметься індексованим стовпцем.
Індекси - це набори унікальних значень для деякої таблиці з відповідними посиланнями на дані. Вони розташовані в самій таблиці і є зручним внутрішнім механізмом системи SQL-серверу, за допомогою якого здійснюється доступ до даних самим оптимальним способом. В середовищі SQL Server реалізовані ефективні алгоритми пошуку потрібного значення в строго певній послідовності даних. Прискорення пошуку досягається саме за рахунок того, що дані представляються впорядкованими (хоча фізично, залежно від типу індексу, вони можуть зберігатися відповідно до черговості їх додавання в таблицю ). До теперішнього часу розроблені ефективні математичні алгоритми пошуку даних у впорядкованій послідовності. Найефективнішою структурою для пошуку даних в машинному уявленні є B-деревья – багаторівнева ієрархічна структура із змінною кількістю елементів в кожному вузлі.