Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
ДЕРЖАВНИЙ УНІВЕРСИТЕТ ІНФОРМАЦІЙНО КОМУНІКАЦІЙНИХ
ТЕХНОЛОГІЙ
ЛЬВІВСЬКИЙ КОЛЕДЖ ДЕРЖАВНОГО УНІВЕРСИТЕТУ
ІНФОРМАЦІЙНО КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ
Навчальна дисципліна: Бази даних
Лабораторія: Компютерних технологій
Розглянуто Затверджую
на засіданні циклової комісії Заступник директора з НВР
Обслуговування компютерної техніки
Протокол №___від «___»_________20__р.
Голова комісії ______________Кужій Л.І. ___________Плешівський Я.М.
Інструкція
до лабораторної роботи №7
Побудова простих запитів СУБД MySQL
Склала викладач:
Дмитрів Г.Р.
Львів 2011
Назва лабораторії: Компютерних технологій.
Навчальна дисципліна: Бази даних.
Назва роботи: “Побудова простих запитів”.
Мета роботи: Навчитися будувати прості запити до бази даних за допомогою оператора SELECT. Навчитися отримувати з бази даних необхідну інформацію.
SELECT [STRAIGHT_JOIN] [DISTINCT | ALL] select_expression,...
[FROM tables... [WHERE where_definition] [GROUP BY column,...]
[ORDER BY column [ASC | DESC], ...] HAVING full_where_definition
[LIMIT [offset,] rows] [PROCEDURE procedure_name]]
[INTO OUTFILE 'file_name'... ]
Тут where_definition:
where_definition:
where_expr or where_expr [AND | OR] where_expr
where_expr має формат:
where_expr:
column_name [> | >= | = | <> | <= | <]
column_name_or_constant or column_name LIKE column_name_or_constant or
column_name IS NULL or column_name IS NOT NULL or (where_definition)
ОПИС:
Оператор SELECT є наріжним каменем усієї мови SQL. Він використовується, щоб виконати запити до бази даних. Це дійсно основа мови SQL. В MySQL версії менше 3.21.x речення WHERE дуже обмежене. HAVING буде працювати там, де речення WHERE нічого не робить. Деякі приклади, які не працюють у реченні WHERE - REGEXP і операторі !. В основному, Ви не можете використовувати функції з WHERE, але Ви можете використовувати функції з HAVING.
HAVING по суті, WHERE стосовно до результатів. Він використовується головним чином для вузької області даних, повернутих запитом. Ви повинні мати права select для використання SELECT.
Найвища ціна. SELECT MAX(price) FROM shop;
+ -------+
| article |
+ -------+
| 4 |
+ -------+
Вся інформація про найдорожчу статтю.
SELECT *
FROM shop
WHERE price = ( SELCT MAX(price) FROM shop )
У цьому запиті використовується підзапит значення поля дорівнює результату вкладеного запиту. На жаль, MySQL "поки що" не підтримує підзапити, тому для вирішення цього завдання необхідно виконати таке: знайти найвищу ціну після чого робити звичайне порівняння : ... WHERE price=знайдена ціна.
Найвища ціна за кожну зі статей.
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article
Цей запит виконає MAX(price) для кожного значення поля article і виведе наступне:
+---------+-------+
| article | price |
+ --------+ -------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+--------+-------+
Продавець, що продає статтю по найвищій ціні, для кожної статті
SELECT article, dealer, price
FROM shop s1
WHERE price = ( SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article )
Найкращим способом виконати це завдання в MySQL є такий:
виконати попередній запит (знаходження найвищої ціни за кожну з статей), після чого для кожної статті знайти рядок, у якій ціна дорівнює відповідному знайденому максимальному значенню.
CREATE TEMPORARY TABLE tmp (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL);
LOCK TABLES article read;
INSERT INTO tmp SELECT article, MAX(price)
FROM shop GROUP BY article;
SELECT article, dealer, price FROM shop, tmp
WHERE shop.article=tmp.article AND shop.price=tmp.price;
UNLOCK TABLES;
DROP TABLE tmp;
Використання зовнішніх ключів
Єдине, що MySQL не дозволяє робити це виконувати операцію CHECK для перевірки існування ключа в таблиці; і автоматично видаляти рядки з таблиці з певним зовнішнім ключем.
От приклад роботи із зовнішніми ключами.
Створення першої таблиці:
CREATE TABLE persons (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);
Створення другої таблиці:
CREATE TABLE shirts (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM(' t-shirt', 'polo', 'dress') NOT NULL,
color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES persons,
PRIMARY KEY (id)
);
Наповнення створених таблиць:
INSERT INTO persons VALUES (NULL, 'Antonio Paz');
INSERT INTO shirts VALUES
(NULL, 'polo', 'blue', LAST_INSERT_ID()),
(NULL, 'dress', 'white', LAST_INSERT_ID()),
(NULL, ' t-shirt', 'blue', LAST_INSERT_ID());
INSERT INTO persons VALUES (NULL, 'Lilliana Angelovska');
INSERT INTO shirts VALUES
(NULL, 'dress', 'orange', LAST_INSERT_ID()),
(NULL, 'polo', 'red', LAST_INSERT_ID()),
(NULL, 'dress', 'blue', LAST_INSERT_ID()),
(NULL, ' t-shirt', 'white', LAST_INSERT_ID());
От що вони тепер містять:
SELECT * FROM persons;
+---+--------------------------+
| id | name |
+ --+--------------------------+
| 1 | Antonio Paz |
| 2 | Lilliana Angelovska |
+---+--------------------------+
SELECT * FROM shirts;
+ --+--------+--------+-------+
| id | style | color | owner |
+---+--------+ -------+--------+
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | t-shirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | t-shirt | white | 2 |
+---+--------+--------+--------+
Тепер можливо виконати запит з об'єднанням цих двох таблиць із ключем id (Всі небілі футболки, що належать людям, чиї імена починаються з 'Lilliana'):
SELECT s.* FROM persons p, shirts s
WHERE p.name LIKE 'Lilliana%'
AND s.owner = p.id
AND s.color <> 'white';
+---+------+---------+--------+
| id | style | color | owner |
+---+------+---------+--------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+---+-------+--------+--------+
3. Матеріально технічне забезпечення
Вимоги до програмного забезпечення
Необхідна наявність програмних продуктів, перерахованих вище, і ОС, у якій ці продукти досить надійно працюють. Система повинна працювати в ОС Linux, ОС - Windows 2000 і вище.
Вимоги до апаратного забезпечення
Вимоги для різний реалізацій різко відрізняються, наприклад, для стійкого функціонування звязку mysql+php достатньо Pentium 100 з 16Мб ОП (однак для Windows 2000, а також для Linux Mandriva природно вимоги більш високі для якісної роботи, а саме: Pentium III з 256Mб ОП).
4. Правила охорони праці і безпеки життєдіяльності
Під час проведення першого заняття в лабораторіях центру інформаційно-комунікаційних технологій студентам проводиться інструктаж з техніки безпеки і охорони праці, про що здійснюються записи у відповідний журнал інструктажів. Під час проведення наступних лабораторних чи практичних робіт студенти зобовязані неухильно дотримуватись положень інструкції з охорони праці та техніки безпеки.
5. Ескізи, схеми, інша наочність
Для проведення лабораторної роботи використовуються наочні плакати, які містять інформацію щодо програмного забезпечення.
6. Підготовка устаткування до роботи
Лабораторна робота проводиться з використанням компютерної техніки. Після отримання допуску до виконання лабораторної роботи студент вмикає компютер і працює у відповідності до інструкції проведення лабораторної роботи.
7. Зміст та послідовність виконання завдання
Ввійти в операційну систему Linux під відповідним користувачем, відкрити консоль. Запустити монітор MySQL в режимі суперкористувача використовуючи команду:
mysql u root
Використовуючи теоретичні положення, а також створену базу даних, відповідно до попередніх завдань, виконуємо запити на отримання інформації з бази даних.
8. Зміст і вимоги до звіту
9. Висновки
Після виконання лабораторної роботи студент оформляє звіт і робить короткі висновки в кінці звіту, щодо досягнення ним мети лабораторного заняття.
10. Контрольні питання
11. Джерела інформації
12. Завдання для самостійної роботи та особливі вказівки
Побудувати двадцять простих запитів до бази даних на вибірку різного роду інформації.