Модуль БД

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук

База даних (БД) — впорядкований набір логічно взаємопов'язаних даних, що використовується спільно, та призначений для задоволення інформаційних потреб користувачів. У технічному розумінні включно й система керування БД.

Головним завданням БД є гарантоване збереження значних обсягів інформації (т.зв. записи даних) та надання доступу до неї користувачеві або ж прикладній програмі. Таким чином БД складається з двох частин  : збереженої інформації та системи управління нею.

Cтворення Бази Даних

Для створення бази даних у MySQL використовують оператор CREATE DATABASE: create database tb_news;

Переконатися у тому, що цей оператор виконав своє завдання, можна за допомогою команди show databases;

Ви повинні побачити базу даних tb_news у списку баз даних, що є у системі. Отже, тепер ми маємо порожню базу даних.

Створення таблиць

Для створення таблиць у базі даних tb_news використовують оператор SQL CREATE TABLE. Формат цього оператора такий:

create table ім'я__таблиці

[type = тип_тaблиці] ;

Необхідно почати із слів create table (створити таблицю), за якими повинна йти назва таблиці, а потім слід вказати деякий набір визначень для стовпців. У кінці оператора можна вказати тип механізму зберігання даних, який доцільно використовувати.

Тепер почнемо створення таблиць усередині створеної бази даних. Спочатку створимо таблицю users (користувачі):

create table users

(

users_ID int(11) not null auto_increment primary key,

login char(32),

password char(32),

name char(32),

)

type=InnoDB;

Ця таблиця містить чотири стовпці − users_ID, який буде первинним ключем, login, password і name. Для визначення стовпців таблиці використовують список розділених комами декларацій, згрупованих у дужки. Зверніть увагу на те, що атрибути стовпців не розділяються комами, розділяються тільки стовпці.

Число пропусків у SQL не має значення, тому ми можемо компонувати наші запити як нам подобається. У операторах CREATE, як правило, в кожному рядку розміщується один елемент, щоб оператори зручніше було читати. Інтерпретатор SQL не інтерпретуватиме оператора до тих пір, поки ви не поставите завершальну крапку з комою «;» і не натиснете клавішу <Enter>. У цій таблиці ми декларуємо створення чотирьох стовпців. Кожна декларація стовпця починається із задання назви стовпця, за яким слідують дані про тип цього стовпця.

Назва стовпця − users_ID , а його тип − int(11) (ціле). Це − унікальний номер, який ми використовуватимемо для ідентифікації користувачів. Після типу вказані додаткові дані про стовпець.

Спочатку вказано, що цей стовпець не повинен бути порожнім − not null, − це означає, що для всіх рядків таблиці у цьому стовпці повинно бути вказано деяке значення. Потім ми вказали, що стовпець повинен бути типу auto_increment. Це − дуже зручна можливість у MySQL. Якщо при додаванні даних у цю таблицю ми не вкажемо номер користувача, MySQL помістить у відповідний стовпець унікальний номер, який виявиться наступним у послідовності auto_increment.

Ми вказуємо, що цей стовпець повинен бути первинним ключем таблиці (primary key). Якщо первинний ключ складається з одного стовпця, ми можемо вказати його так, як це зроблено у прикладі.

Отже, таблиця визначена. Тепер подивимося на завершальну частину цього оператора SQL. Після закриваючої дужки ви бачите таке:

type=InnoDB

Цей вираз вказує на те, що у таблиці використовуєтся механізм зберігання InnoDB. Проглянувши визначення усіх таблиць, ви побачите, що всі вони визначені як таблиці InnoDB.

Що це означає? MySQL підтримує різні механізми зберігання даних. Типом, що використовується за замовчуванням, є MyІSAM. Якби ми хотіли використовувати таблиці MyІSAM, нам не потрібно було б додавати визначення типу в кінці оператора create table. Тут вказаний тип InnoDB, оскільки в деяких прикладах ми збираємося використовувати зовнішні ключі. Механізм InnoDB підтримує зовнішні ключі і транзакції, а MyІSAM − ні. Таблиці типу MyІSAM часто працюють швидше, ніж таблиці InnoDB. Тому для кожної таблиці потрібно вирішити, який тип буде для неї кращим.

Можна використовувати таблиці різних типів, наприклад, одні таблиці могли б бути таблицями InnoDB, а інші − таблицями MyІSAM (a якщо потрібно, і таблицями якихось інших типів), але для спрощення прикладу ми використовували для таблиць один тип InnoDB.

Об'єднання таблиць

За умов нормалізованої бази даних, коли дані зберігаються не в одній, а в цілому наборі таблиць, можливість вибору даних тільки з однієї таблиці, звичайно ж, є великим обмеженням. Добре спроектована реляційна база даних стає цікавим об'єктом через відношення, що існують у ній, тобто через зв'язки між таблицями. При виборі даних з кількох таблиць такі зв'язки називають об'єднаннями. Розглянемо запити, в яких об'єднуються дві таблиці.

Розглянемо такий запит:

SELECT mg.user_id, mg.mess_id, mg.messg FROM messege mg LEFT JOIN register rg ON (mg.mess_id=rg.mess_id AND rg.user_id=3) WHERE rg.user_id IS NULL

Тут у виразі FROM замість однієї таблиці вказано об'єднання двох. У цьому випадку ми хотіли б відшукати в базі даних непрочитані повідомлення.

Дивіться також