Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
30.05.2020
Размер:
2.33 Mб
Скачать

3 Індексація

Одна з основних задач, що виникають при роботі з базами даних, – це задача пошуку. При цьому, оскільки інформації в базі даних, як правило, міститься багато, перед програмістами встає задача не просто пошуку, а ефективного пошуку, тобто пошуку за порівняно невеликий час і з достатньою точністю. Для цього (для оптимізації продуктивності запитів) проводять індексацію деяких полів таблиці. Використовувати індекси корисно для швидкого пошуку рядків з вказаним значенням одного стовпця. Без індексу читання таблиці здійснюється по всій таблиці, починаючи з першого запису, поки не будуть знайдені відповідні рядки. Чим більше таблиця, тим більше невигідні витрати. Якщо ж таблиця містить індекс по даних стовпцях, то база даних може швидко визначити позицію для пошуку в середині файлу даних без проглядання всіх даних. Це відбувається тому, що база даних поміщає проіндексовані поля ближче в пам'яті, так, щоб можна було пошвидше знайти їх значення. Для таблиці, що містить 1000 рядків, це буде як мінімум в 100 разів швидше в порівнянні з послідовним перебором всіх записів. Проте у разі, коли необхідний доступ майже до всіх 1000 рядків, буде швидше послідовне читання, оскільки при цьому не вимагається операцій пошуку по диску. Отже іноді індекси бувають тільки перешкодою. Наприклад, якщо копіюється великий об'єм даних в таблицю, то краще не мати ніяких індексів. Проте в деяких випадках вимагається задіювати відразу декілька індексів (наприклад, для обробки запитів до таблиць, що часто використовуються).

Якщо говорити про MySQL, то там існує три види індексів: PRIMARY, UNIQUE, і INDEX, а слово ключ (KEY) використовується як синонім слова індекс (INDEX). Всі індекси зберігаються в пам'яті у вигляді B-деревьев.

PRIMARY – унікальний індекс (ключ) з обмеженням, що всі індексовані їм поля не можуть мати порожнього значення (тобто вони мають позначку NOT NULL). Таблиця може мати тільки один первинний індекс, але він може складатися з декількох полів.

UNIQUE – ключ (індекс), задаючий поля, які можуть мати тільки унікальні значення.

INDEX – звичайний індекс (як ми описали вище). В MySqL, крім того, можна індексувати рядкові поля по заданому числу символів від початку рядка.

4 Субд MySql

MySQL – це реляційна система управління базами даних. Тобто дані в її базах зберігаються у вигляді логічно зв'язаних між собою таблиць, доступ до яких здійснюється за допомогою язика запитів SQL. MySQL – вільно поширювана система, тобто платити за її використання не потрібно. Крім того, це досить швидка, надійна і, головне, проста у використанні СУБД, цілком відповідна для не дуже глобальних проектів.

Працювати з MySQL можна не тільки в текстовому режимі, але і в графічному. Існує дуже популярний візуальний інтерфейс (до речі, написаний на PHP) для роботи з цією СУБД. Називається він PhpMyAdmin. Цей інтерфейс дозволяє значно спростити роботу з базами даних в MySQL .

В текстовому режимі робота з базою даних виглядає просто як введення команд в командний рядок (рис 10.2), а результати вибірок повертаються у вигляді своєрідних таблиць, поля в яких налізають один на одного, якщо дані не поміщаються на екран (рис 10.3).

Мал. 10.2. Робота з MySQL в командному рядку. Команда show databases — вивести всі наявні бази даних

PhpMyAdmin дозволяє користуватися всіма перевагами браузера, включаючи прокрутку зображення, якщо воно не уміщається на екран. Багато які з базових SQL-функцій роботи з даними в PhpMyAdmin зведені до інтуїтивно зрозумілих інтерфейсів і дій, що нагадують перехід по посиланнях в Internet. Але, проте, варто все ж таки попрацювати і в текстовому режимі.

Мал. 10.3. Робота з MySQL в командному рядку. Результат обробки команди show databases

Перш ніж переходити до детального вивчення язика SQL, декілька слів про установку MySQL і підготовку до роботи. Якщо ви не збираєтеся займатися адмініструванням серверу, то інформація, приведена нижче, стане в нагоді вам тільки для загального розвитку. Отже, встановлюється MySQL дуже просто – автоматично, пару раз натискуйте OK, і все. Після цього ви можете зайти в директорію, де лежать файли типу mysql.exe, mysqld.exe і т.п. (у нас під Windows XP це С:\mysql\bin ) Останній файл запускає Mysql-сервер. В деяких системах сервер запускається у вигляді сервісу. Після запуску серверу слід запустити mysql-клієнт, запустившися програму mysql.exe. Тут навіть пароля не запитають. Більш того, якщо ви наберете

shell> mysql.exe -u root

або

shell>mysql -u root mysql

то отримаєте всі права адміністратора mysql серверу. До речі, виконувати ці команди треба, знаходячись в тій директорії, де лежать файли mysql.exe.

Спершу, не вдаючись в подробиці команд, виправимо ці два недоліки (відсутність пароля у адміністратора і можливість входу анонімним користувачам):

shell> mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('new_password')

WHERE user='root';

mysql> DELETE FROM user WHERE user ='';

mysql> FLUSH PRIVILEGES;

Всі дані про користувачів MySQL зберігає в таблиці user в спеціальній базі даних mysql, доступ до якої має тільки адміністратор серверу. Тому, щоб змінити який-небудь пароль, потрібно змінити цю таблицю. Пароль задається за допомогою функції PASSWORD, яка кодує введені дані. Окрім зміни пароля адміністратора, потрібно ще видалити всіх користувачів, що не мають логіна (команда DELETE ). Команда Flush Privileges примушує вступити в дію зміни, що відбулися в системній базі даних (mysql).

Тепер створимо базу даних, з якою працюватимемо (ми все ще працюємо як адміністратор серверу):

mysql>create database book;

Якомога помітити, всі команди в MySQL закінчуються крапкою з комою. Якщо ви забули поставити цей знак, то видається запрошення його поставити до тих пір, поки це не буде зроблено:

mysql> show tables

->

->

Тепер остання дія – створимо простого користувача, надамо йому доступ до створеної бази даних, і почнемо працювати.

mysql> GRANT ALL PRIVILEGES ON book.* TO vasia@localhost IDENTIFIED '123';

Команда GRANT наділює користувача vasia, що зайшов на сервер з цієї ж машини (з localhost) і що ідентифікується паролем "123", певними правами (в даному випадку всіма) на всі таблиці бази даних book. Тепер ми можемо вийти і зайти як користувач vasia з відповідним паролем:

shell>mysql -u vasia -p

Enter password: ***

Welcome to MySQL monitor!...

mysql>

Якщо ви збираєтеся користуватися базою даних на чужому сервері, то його адміністратор виконає всі описані вище дії за вас, тобто все набудує і створить користувача і базу даних. В наступному розділі описані команди язика SQL, які стануть в нагоді для роботи з даними, що зберігаються в СУБД MySQL.

Соседние файлы в папке лекции