- •Лабораторна робота № 1
- •Лабораторна робота № 2
- •Теоретичні відомості
- •Лабораторна робота № 3
- •Контрольні запитання
- •Лабораторна робота № 4
- •Лабораторна робота № 5
- •Лабораторна робота № 6
- •Створення таблиць
- •Прості запити і правила їхнього виконання
- •Особливості багатотабличних запитів
- •Використання вкладених запитів
- •Сортування результатів запиту
- •Внесення змін у базу даних
- •Додавання інформації в базу даних
- •Видалення даних
- •Об'єднання таблиць
- •Індекси
- •Лабораторна робота № 7
- •Література Основна література
- •Додаткова література
Індекси
Індексом прийнято називати упорядкований список полів іл груп полів у таблиці. Таблиці можуть мати величезна кількість записів, при цьому, як було замічено вище, записи не знаходяться в якому-небудь визначеному порядку, тому на їхній пошук за зазначеним критерієм може знадобитися досить тривалий час.
Індексна адреса - це спеціальний метод забезпечення об'єднання всіх значень у групи з однієї чи більше записів, що відрізняються одна від інший, тому що унікальність записів часто необхідна.
Індекси - це корисний інструмент, що широко застосовується у всіх сучасних СУБД. Коли створюється індекс у поле, БД запам'ятовує відповідний порядок Всіх значень цього полючи в області пам'яті. Про переваги індексів може говорити наступне: припустимо, що таблиця STUDENTS має кілька тисяч записів, і необхідно знайти студента з конкретним номером студентського квитка. Т.к. запису в таблиці не упорядковані, те СУБД буде змушена переглядати всю таблицю, рядок за рядком, перевіряючи щораз значення полючи SNUM на рівність шуканому значенню. При наявності індексу в поле SNUM, система могла б знайти шуканий номер прямо в цьому упорядкованому індексі, і дати інформацію про те, як знайти правильний рядок таблиці.
В індексів є і недоліки. У той час як індекс значно поліпшує ефективність запитів, використання індексу трохи сповільнює операції модифікації, особливо такі, як INSERT і DELETE. Крім того, сам індекс займає місце на пристрої збереження інформації.
Звідси випливає, що при створенні таблиці необхідно прийняти зважене рішення, індексувати її чи ні. Індекси можуть складатися відразу з декількох полів, при цьому перше поле є як би головним, друге упорядковується усередині першого, третє усередині другого, і т.д.
Синтаксис команди для створення індексу наступний:
CREATE INDEX <INDEX NAME> ON <TABLE NAME>
(<COLUMN NAME> [,<COLUMN NAME>]...);
Зрозуміло, що таблиця, для якої створюється індекс, повинна вже існувати і містити імена индексируемых полів. При цьому ім'я індексу не може бути використане для чого-небудь іншого в БД і SQL сам вирішує, коли він необхідний для роботи і використовує його автоматично.
Приведемо наступний приклад. Очевидно, що в таблиці STUDENTS одним з найбільше часто уживаних може бути індекс по полю, що містить прізвище студента. Тоді команда для створення такого індексу буде наступною:
CREATE INDEX SFAMIDX ON STUDENTS (SFAM);
Після цього при пошуку інформації про студентів, СУБД буде знаходити її дуже швидко. Однак, при створенні цього індексу, йому не запропонована унікальність, незважаючи на те, що це є одним з його призначень.
Для створення унікальних (не утримуючих повторюваних значень) індексів використовують ключове слово UNIQUE у команді CREATE INDEX. Фактично такий індекс буде первинним ключем таблиці. Наприклад, для таблиці STUDENTS поле SNUM підходить у якості первинного ключа, і він стане першим кандидатом для унікального індексу. Створити його можна командою:
CREATE UNIQUE INDEX SNUMIDX ON STUDENTS (SNUM);
Команда не буде виконана, якщо в поле SNUM маються неунікальні значення. Тому рекомендується створювати індекси відразу після того, як створена таблиця і до введення в неї яких-небудь значень. Цікава і така особливість унікального індексу: якщо в ньому використовується більш одного полючи (тобто він є комбінацією значень), те, узагалі говорячи, кожне з цих полів може і не бути унікальним.
Оскільки основною ознакою індексу є його ім'я, то по його імені він може бути ідентифікований і вилучений. Звичайно користувачі не знають про існування індексу, а SQL автоматично визначає - чи дозволено користувачу використовувати індекс, і, якщо так, те дозволяє його вживання.
Однак, для видалення індексу, необхідно знати його ім'я. З обліком цього команда для видалення має наступний синтаксис:
DROP INDEX <INDEX NAME>;
Наприклад, для видалення створеного індексу на прізвище студента, можна скористатися наступною командою:
DROP INDEX SFAMIDX;
Видалення індексу ні в якому разі не впливає на дані, що містяться в полях.
Порядок роботи:
Створити базу даних відповідно до варіанту завдання (кількість таблиць не менше 3).
Варіанти завдання (тип бази даних) згідно номеру бригади:
Бібліотека
Автосалон
Музичний магазин
Чемпіонат країни по футболу
Комп’ютерні магазини міста
Склад оргтехніки.
Перевірити створену базу даних на працездатність.
Провести основні операції з базою даних
добавлення запису;
перегляд даних;
видалення запису;
сортування даних.
Створити індекси в базі даних та повторити дії п.3 вже з проіндексованими таблицями, використовуючи записи одразу з декількох таблиць.
Контрольні питання
1.
