
ДЕРЖАВНИЙ УНІВЕРСИТЕТ ІНФОРМАЦІЙНО – КОМУНІКАЦІЙНИХ
ТЕХНОЛОГІЙ
ЛЬВІВСЬКИЙ КОЛЕДЖ ДЕРЖАВНОГО УНІВЕРСИТЕТУ
ІНФОРМАЦІЙНО – КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ
Навчальна дисципліна: Бази даних
Лабораторія: Комп’ютерних технологій
Розглянуто Затверджую
на засіданні циклової комісії Заступник директора з НВР
Обслуговування комп’ютерної техніки
Протокол №___від «___»_________20__р.
Голова комісії ______________Кужій Л.І. ___________Плешівський Я.М.
Інструкція до лабораторної роботи №5 Створення таблиць бази даних MySql
Склала викладач:
Дмитрів Г.Р.
Львів – 2011
Назва лабораторії: Комп’ютерних технологій.
Навчальна дисципліна: Бази даних.
Назва роботи: “Створення таблиць бази даних MySQL”.
Мета роботи: Навчитися створювати навчальні бази даних СУБД MySQL.
1. Теоретичні положення
Створення таблиці
Як ви вже встигли переконатися, створити базу даних було просто. Однак поки що в ній нічого немає – у цьому можна впевнитися за допомогою команди SHOW TABLES:
mysql> SHOW TABLES; Empty set (0.00 sec)
Набагато складніше визначитися зі структурою своєї бази, тобто з тим, які можуть знадобитися таблиці, і які стовпці повинні міститися в кожній з них.
Вам обов’язково буде потрібна таблиця, що містить по запису кожної з тварин. Назвати її можна pet, і зберігатися в ній будуть, як мінімум, імена. Але тому що саме по собі ім'я неінформативне, у таблиці повинні бути присутні й інші дані. Наприклад, якщо свійські тварина є більш ніж в одного члена вашої родини, у таблицю можна додати й ім'я власника кожної тварини. Крім того, у базу варто внести й описову інформацію - наприклад, вид і стать тварини.
Але от як бути з віком? Ця інформація теж може виявитися корисною, але зберігати такі дані в базі незручно. Вік згодом змінюється, а це значить, що доведеться досить часто обновляти записи. Значно зручніше зберігати фіксовані значення - наприклад, дати народження. У такому випадку вік завжди можна одержати, обчисливши різницю між поточною датою й датою народження. В MySQL є функції для арифметичних дій над даними, так що це зовсім нескладно. Зберігання дати народження має й інші переваги:
Базу даних можна використовувати для видачі нагадувань про дні народження тварин, що наближаються (таке ж завдання може виникнути й при роботі з діловою базою даних, що повинна вміти нагадувати про дні народження клієнтів, полегшуючи в такий спосіб розсилання поздоровлень).
Вік можна підраховувати щодо будь-якої дати, а не тільки для поточної. Наприклад, якщо записати в базу дату смерті тварини, завжди можна буде довідатися, скільки років їй було на момент смерті.
Можна було б придумати й ще які-небудь дані, які непогано було б зберігати в таблиці pet, але поки що ми обмежимося вже обраними: ім'ям (name), ім'ям власника (owner), видом (species), статтю (sex), датою народження (birth) і датою смерті (death).
За допомогою команди CREATE TABLE визначимо структуру нової таблиці:
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
Тип VARCHAR відмінно підійде для зберігання імені тварини, імені власника й назви виду, тому що довжина даних цього типу може варіюватися. Звичайно, довжини таких стовпців зовсім не повинні збігатися й не повинні бути рівні 20 – можна вибрати будь-яке значення в межах від 1 до 255 (якщо при виборі довжини стовпця ви помилитеся, і при роботі з базою виявиться, що стовпець замалий, можна буде виправити помилку за допомогою команди ALTER TABLE).
Стать тварини можна позначати декількома способами, наприклад буквами "m" і "f", або словами male (чоловічий) і female (жіночий). З буквами "m" і "f" буде простіше.
Застосування типу даних DATE для зберігання дат народження й смерті цілком очевидно.
Тепер, коли таблиця створена, команда SHOW TABLES повинна вивести таке:
mysql> SHOW TABLES; +---------------------+ |Tablesinmenagerie | +---------------------+ | pet | +---------------------+
Перевірити, чи правильно була таблиця створена відповідно до плану, можна за допомогою команди DESCRIBE:
mysql> DESCRIBE pet; +---------+-------------+------+-----+---------+-------+ |Field |Type |Null |Key |Default |Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
Використовувати команду DESCRIBE можна в будь-який час, наприклад, якщо ви забудете імена стовпців або типи, до яких вони стосуються.
Завантаження даних у таблицю
Cтворивши таблицю, потрібно подбати про її заповнення. Для цього призначені команди LOAD DATA і INSERT.
Припустимо, ваші записи відповідають наведеним у цій таблиці (зверніть увагу: MySQL приймає дати у форматі РРРР-ММ-ДД; можливо, до такого запису ви не звикли).
name |
owner |
species |
sex |
birth |
death |
Fluffy |
Harold |
cat |
f |
1993-02-04 |
|
Claws |
Gwen |
cat |
m |
1994-03-17 |
|
Buffy |
Harold |
Dog |
f |
1989-05-13 |
|
Fang |
Benny |
Dog |
m |
1990-08-27 |
|
Bowser |
Diane |
Dog |
m |
1998-08-31 |
1995-07-29 |
Chirpy |
Gwen |
Bird |
f |
1998-09-11 |
|
Whistler |
Gwen |
Bird |
|
1997-12-09 |
|
Slim |
Benny |
snake |
m |
1996-04-29 |
|
Тому що ви починаєте роботу з порожньою таблицею, заповнити її буде простіше всього, якщо створити текстовий файл, що містить по рядку на кожну із тварин, а потім завантажити його вміст у таблицю однією командою.
Створіть текстовий файл із ім'ям "pet.txt", що містить по одному запису в кожному рядку (значення стовпців повинні бути розділені символами табуляції й дані в тім порядку, що був визначений командою CREATE TABLE). Незаповненим полям (наприклад, невідома стать або дата смерті живих на сьогоднішній день тварин), можна присвоїти значення NULL. У текстовому файлі це значення представляється символами \N. Наприклад, запис для птаха Whistler повинен виглядати приблизно так (між значеннями повинні розташовуватися одиночні символи табуляції):
name |
owner |
species |
sex |
birth |
death |
Whistler |
Gwen |
bird |
\N |
1997-12-09 |
\N |
Завантажити файл "pet.txt" у таблицю можна за допомогою наступної команди:
mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet;
Маркер кінця рядка й символ, що розділяє значення стовпців, можна спеціально задати в команді LOAD DATA, але за замовчуванням використовуються символи табуляції й переходу рядка. Сприймаючи їх, команда зможе коректно прочитати файл "pet.txt".
При додаванні одинарних записів використовується команда INSERT. У найпростішому варіанті її застосування необхідно задати значення кожного стовпця, у тому порядку, у якому вони були перераховані в команді CREATE TABLE. Припустимо, Діана (Diane) купила хом'ячка з іменем Puffball. Відповідний запис у таблицю можна внести за допомогою команди INSERT приблизно так:
mysql> INSERT INTO pet -> VALUES ("Puffball","Diane","hamster","f"," 1999-03-30",NULL);
Зверніть увагу на те, що тут стрічкові вирази й дати представлені у вигляді обмежених лапками рядків. Крім того, у команді INSERT дані, що є відсутніми можна безпосередньо заміняти на NULL. Користуватися евфемізмом \N, як у команді LOAD DATA, потреби немає.
Цей приклад наочно показує, що якби із самого початку всі дані вносилися в базу за допомогою декількох команд INSERT, а не однієї команди LOAD DATA, то набирати довелося б набагато більше тексту.