Учебная работа. Курсовая работа: Робота з MYSQL
обота з
MySQL
1. Архітектура Web-баз даних
Основна операція WEB сервера показана на рисунку 10.1.
Ця система складається з 2 о’єктів: WEB браузера та WEB . Між ними має існувати канал зв’язку. WEB браузер посилає запит на , сервер відсилає відповідь [1].
Рис.1.Схема роботи сервера
Архітектура веб-сайту, який включає базу даних складніше. Розглянемо один з можливих варіантів реалізації. Трансакція складається з наступних етапів
1. WEB браузер відправляє HTTP запит, що визначає WEB сторінку, використовуючи html форму.
2. WEB сервер приймає файл та передає його механізму PHP на обробку.
3. Механізм PHP починає синтаксичний аналіз сценарію. В сценарії присутні команди підключення до бази даних і виконання запиту до неї. PHP відкриває з єднання з сервером MySQL та відправляє необхідний запит.
4. приймає запит в базу даних, опрацьовує його, а потім відправляє результати в PHP.
5. Механізм PHP завершує виконання сценарію, формуючи результати у вигляді html, після чого відправляє результати в HTML форматі WEB серверу.
6. WEB пересилає html в браузер. За допомогою якого користувач переглядає результати.
Використання мови PHP та MySQL дозволяє робити сайти динамічними, які містять інформацію в реальному часі. MySQL СУБД швидка та надійна. Крім MySQL можна використовувати Postgre SQL, Oracle, dbm, Hyperware, Informix, InterBase, SyBase.
2. Мова SQL. Загальні відомості
Запити – це основний інструмент вибірки й обробки даних у СУБД. Для створення і реалізації запитів розроблена спеціальна мова SQL (Structured Query Language – мова структурованих запитів). Перший макет мови SQL з’явився наприкінці 70-х років і одержав через якийсь час широке поширення. Він став застосовуватися у всіх комерційних СУБД і поступово став эталоном де-факто для мов маніпулювання даними в реляційних БД. Перша версія эталону називалася SQL-86 і була прийнята ANSI (Американським національним інститутом стандартів) і ISO (Міжнародним інститутом стандартів). Наприкінці 1992 р. був прийнятий новий міжнародний эталон мови – це SQL-92. Цей эталон підтримується всіма сучасними СУБД, у тому числі і MS Access.
Останній эталон з’явився в 1999 р., у якому були введені нові типи даних, і ряд інших нововведень, важливих для розроблювачів нових версій сучасних СУБД. Ми кратко ознайомимося з деякими найбільш важливими елементами мови, що відповідають эталону SQL-92.
Всі оператори мови можна розділити на такі три категорії:
1. Оператори контролю даних – використовуються для перевірки повноважень користувача при звертанні до БД. Це оператори GRANT і REVOKE.
2. Оператори визначення даних – використовуються для створення о’єктів БД і визначення їхньої структури. До их відносяться оператори CREATE SCHEMA, CREATE TABLE, CREATE VIEW, CREATE Domain.
3. Оператори керування даними – використовуються для пошуку, видалення, зміни і збереження даних. Це оператори SELECT, UPDATE, INSERT, DELETE.
Найважливішим оператором мови SQL є оператор SELECT, призначений для вибірки даних з таблиць БД відповідно до заданого критерію і перетворення отриманих результатів до потрібного виду.
Оператор SELECT. Добір записів з однієї таблиці
Загальний формат оператора SELECT наступний:
SELECT [DISTINCT] <Перечень полів>
FROM <Перечень таблиць >
[WHERE <Умова добору записів >]
[GROUP BY <Список полів для групування>]
[HAVING <Умови добору для груп>]
[ORDER BY <Список полів для сортування>]
Результатом виконання оператора SELECT є набір даних, який складається з записів, що відповідають заданим умовам добору. В операторі обов’язково повинні бути присутніми інструкції SELECT і FROM. Інші інструкції (вказані у квадратних дужках) можуть бути відсутніми.
Інструкція SELECT повідомляє СУБД, що це команда – запит. В інструкції SELECT указується перечень полів, які будуть включатися в записи, що відбираються. У списку полів повинне бути задане хоча б одне поле. Якщо в перечень полів потрібно включити всі поля з таблиці (таблиць), то замість перерахування полів можна вказати знак *. Якщо в перечень полів включаються поля з різних таблиць, то для вказівки належності поля до тієї чи іншої таблиці використовують складене ім’я, що складається з імені таблиці й імені поля, розділених крапкою. Необов’язкова інструкція DISTINCT забороняє включення в результуючий набір даних повторюваних записів. В інструкції FROM перелічуються імена таблиць, з яких відбираються записи. Перечень повинний містити хоча б одну таблицю.
В інструкції WHERE задається умова (критерій) добору записів, представлена логічним виразом. Логічний вираз складається з операндів, операцій порівняння і логічних операцій. У якості операндів можуть використовуватися імена полів і константи.
У вираженнях разумов добору можуть використовуватися такі операції порівняння і логічні оператори і операції:
= , < , > , <> , <= , >= — операції порівняння;
Between – предикат, що перевіряє приналежність значення поля заданому діапазону значень;
In – предикат, що перевіряє приналежність значення поля заданій множині;
Like – предикат, що перевіряє відповідність значення поля заданому шаблону;
And, Or, Not – логічні операції.
Інструкція GROUP BY призначена для вказівки полів, по яких визначаються групи записів. В одну групу включаються записи з однаковими значеннями в полях, перерахованих в інструкції GROUP BY. Для груп записів можна застосовувати групові операції (їх ще називають агрегатними функціями). У мові SQL визначені такі групові операції:
— Max( ) – вибирає максимальне значення поля;
— Min( ) – вибирає мінімальне значення поля;
— Count( ) – визначає число значень у групі;
— Avg( ) – обчислює середнє значення;
— Sum( ) – обчислює суму значень полів у групі.
Інструкція HAVING застосовується разом з інструкцією GROUP BY і використовується для завдання разумов добору для згрупованих даних. Правила запису разумов добору аналогічні правилам завдання разумов в інструкції WHERE.
В інструкції ORDER BY указується перечень полів, по яких потрібно сортування записів у результуючому наборі даних. За замовчуванням сортування по дерматологическому полю виконується в порядку зростання значень. Якщо необхідно зробити сортування по спаданню, то після імені відповідного поля потрібно записати покажчик DESC.
3. Створення таблиць баз даних
Наступний етап настроювання бази даних — створення таблиць. Це робиться за допомогою SQL-команди CREATE TABLE. Загальна форма оператора CREATE TABLE виглядає у такий спосіб:
CREATE TABLE tablename(columns)
create table books
( customerid int unsigned not null auto_increment primary key,
name char (30) not null,
title char(40) not null,
price char(20) not null
);
Кожна із таблиць створюється окремим оператором CREATE TABLE.
NOT NULL означає, що всі рядки таблиці повинні мати значення в цьому атрибуті. Якщо NOT NULL не зазначене, поле може бути порожнім (NULL).
AUTO_INCREMENT — спеціальна можливість MySQL, яку можна задіяти у числових стовпцях. Якщо при вставці рядків у таблицю залишати таке поле порожнім, MySQL автоматично генерує унікальне значення ідентифікатора. Це значення буде на одиницю більше наибольшего значення, що вже існує в стовпці. У кожній таблиці може бути не більше 1-го такового поля. Стовпці з AUTO_INCREMENT повинні бути проіндексованими.
PRIMARY KEY після імені стовпця визначає, що цей стовпець є первинним ключем для таблиці. Дані в цьому стовпці повинні бути унікальними. MySQL автоматично індексує цей стовпець. Помітьте, що раніше, при використанні його с customerid у таблиці customers, без AUTO_INCREMENT не обійшлося. Автоматичний індекс по первинному ключі зберігає індекс, необхідний AUTOJNCREMENT.
Указувати PRIMARY KEY після назви стовпця треба лише тоді, если ми маємо справу з первинним ключем у вигляді одиночного стовпця.
UNSIGNED після цілочисленого типу означає, що його значення може бути або позитивним, або нульовим.
При створенні будь-якої таблиці необхідно прийняти рішення відносно типів стовпців. У таблиці customers, як позначено в схемі, існує чотири стовпці. Перший, customerid, — це первинний ключ, що визначений безпосередньо. Згідно нашому рішенню, він буде представлятися цілим числом (тип даних int), причому unsigned. Всі інші стовпці будуть містити строкові типи даних. Для их обраний тип char. Він визначає поля фіксованої ширини. Ширина вказується в дужках, тому, наприклад, ім’я складається з 30 символів.
Цей тип даних завжди буде призначати 30 символів для імені, навіть якщо не всі символи будуть використовуватися. Для дотримання необхідного розміру MySQL додасть до даних відповідну кількість пропусків.
Для реальних клієнтів, з реальними іменами й адресами, ширина цих стовпців напевно виявиться недостатньою. Зверніть увагу, що всі стовпці оголошені NOT NULL. Це мінімальна оптимізація, у результаті якої система буде працювати небагато швидше.
4. Бота з базою даних MySQL.
Створення бази даних. Бібліотека
Створення бази даних починаємо відкривши сторінку за адресою HTTP://localhost/Tools/phpMyAdmin/.Базу даних називаємо books. Створити. На мові SQL: CREATE DATABASE `books`;
Зробимо однотабличну базу даних. Створимо таблицю, яку назвемо book. Ця таблиця матиме 4 поля.
Конструюємо таблицю: опишемо кожне поле.
CREATE TABLE `books` (`isbn` CHAR(13) NOT NULL ,`author` CHAR(30) NOT NULL, `title` CHAR(60) NOT NULL, `price` FLOAT(4) NOT NULL, PRIMARY KEY (`isbn`));
Заповнюємо таблицю. Після заповнення таблиця має наступний вигляд.
Приклад 1
. Створимо веб-сайт Бібліотека.
<html>
<head>
<title>БІБЛІОТЕКА</title>
</head>
<body>
<h1>БІБЛІОТЕКА</h1>
<form action=»insert.php» method=»post»>
<table border=0>
<tr><td>ISBN</td><td><input type=text name=isbn maxlength=13 size=13><br></td></tr>
<tr><td>АВТОР</td><td> <input type=text name=author maxlength=30 size=30><br></td></tr>
<tr><td>НАЗВА</td><td> <input type=text name=title maxlength=60 size=30><br></td></tr>
<tr><td>ЦІНА </td><td><input type=text name=price maxlength=7 size=7><br></td></tr>
<tr><td colspan=2><input type=submit value=»Реєстрація»></td></tr>
</table> </form></body></html>
Файл «insert.php»
<html><head><title> БІБЛІОТЕКА </title></head>
<body><h1>БІБЛІОТЕКА</h1>
<?
$isbn=$_POST[«isbn»];
$author=$_POST[«author»];
$title=$_POST[«title»];
$price=$_POST[«price»];
if (!$isbn || !$author || !$title || !$price)
{echo «Не всі поля введені».»Повторіть ще раз.»;
exit; }
$isbn = addslashes($isbn);//форматування полів перед внесеним в базу даних
$author = addslashes($author);
$title = addslashes($title);
$price = doubleval($price);
@ $db = mysql_pconnect(«localhost