ПК

О СУБД MySql

Введение

Казалось бы зачем вообще нужна СУБД? Вполне можно обойтись и файлом XML или просто текстовым файлом, читать из него данные и все. Но у файлов есть ряд недостатков. Например, вы создали на PHP систему поиска по ключевым словам. Каждый пользователь может зарегестрироваться у вас в системе, набрать слова, адрес сайта и его имя. Но предположим ваш сервис стал популярен и в нем зарегестрировано, к примеру, 10000 пользователей. Ваш алгоритм тут уже совсем не годиться. Во первых скорость. Сколько пользователь должен ждать пока сервер ему ответит? Ну наверно 30 секунд отданных по умолчанию явно не хватит. А несчастные зарегестрированные? Сколько будет работать функция проверки логина и пароля? А если вы хотите вывести отсортированный запрос? Сколько вам нужно времени, чтобы написать все алгоритмы, даже если вы напишите более или менее скоростную систему, с разбиением файлов. При использовании СУБД как минимум половину проблем сразу уходят. Скорость великолепная, выборка по запросу, сортировка, легкое удаление и добавление данных! Громоздские скрипты написанные с файлами стали мизерными!

Почему MySql спросите вы? Да стоит только посмотреть на рекламные баннеры хостингов - Perl, PHP, MySql... Первое - популярность. Второе - бесплатность. Третье - удобство стыковки с PHP. В версии PHP4 и старше модуль поддержки MySql загружается без всякой возни с конфигурацией! Вообще разработчики добивались полной совместимости.

Вообще в принципе не так важно какую SQL вы выберете, важно знать язык запросов SQL. Славо Богу в этом смысле проблем нет - выработон единый стандарт запросов. Сначала я рассматрю его, а потом по подробнее расскажу о MySql & PHP.

Сразу скажу, что все ключевые слова принято писать в верхнем регистре. В принципе это не важно, просто так принято. Удобно будет потом читать запрос.

Язык SQL

Оператор SELECT

SELECT список FROM таблица[ WHERE условие][ ORDER BY поле[ DESC]];

Оператор SELECT производит поиск полей "список" по таблице "таблица". Если вы хотите вывести все поля то "список" будет таким "*".

Пример

SELECT id, name FROM phonebook
Выбирает id и name из таблицы phonebook.
SELECT * FROM phonebook
Выбирает все поля из таблицы phonebook.

При этом вы можете задать какое условие WHERE будет при поиске. В условии можно пользоваться операторами сравнения <,>,=,<>,>=,<=, и логическими операциями OR, AND, NOT.

Пример

SELECT id,name,phone FROM phonebook WHERE (id > 20) AND (name='Alex')
Выбирает id, name, phone из таблицы phonebook так, что id > 20 и name равно Alex.

Вы можете также упорядочить результативную таблицу по полю.

Пример

SELECT id,name,phone FROM phonebook WHERE (id > 20) AND (name='Alex') ORDER BY id DESC
Выбирает id, name, phone из таблицы phonebook так, что id > 20 и name равно Alex и упорядычевает по полю id с убыванием. Если не использовать DESC, будет с возрастанием.

Использование нескольких таблиц.

Если необходимо выбрать данные из нескольких таблиц, то перед именами полей необходимо ставить имя таблицы и точку.

Пример

SELECT phonebook.name, reg.email FROM phonebook, reg WHERE phonebook.name = reg.login

Выбирает имя и email из двух таблиц phonebook и reg, где имя соответствует логину.

Оператор INSERT

INSERT INTO таблица VALUES (список-значений)

Типы значений должны соответствовать типам значений полей таблицы.

INSERT INTO phonebook VALUES (0,'Alex','1234567')

Вставляет в таблицу ячейку с полями 0, "Alex", "1234567"

Оператор UPDATE

UPDATE таблица SET поле = значение, ...[ WHERE условие]

Например надо изменить поле, которое мы создали в операторе INSERT.

UPDATE phonebook SET name='Zed', phone='7654321' WHERE id=0
Переименовали Alex в Zed и изменили его телефон

Оператор DELETE

DELETE FROM таблица[ WHERE условие]

Удаляет из таблицы записи с условием.

DELETE FROM phonebook

Удаляет все записи из таблицы phonebook.

Можно к примеру удалить запись, которую создали в операторе INSERT

DELETE FROM phonebook WHERE id=0

Создание таблицы

Опереатор CREATE TABLE

CREATE TABLE имя_таблицы (поле тип доп описания, ...)

Пример

CREATE TABLE phonebook(id int,name text,phone text)

Создаст таблицу phonebook с id, name, phone с соответствующими типами. У каждой SQL свой набор типов.

Удаление таблицы

DROP TABLE имя_таблицы

DROP TABLE phonebook

Просто удалит таблицу phonebook

PHP & MySQL

Как установить MySQL вы можете прочитать здесь.

Если MySql выдает ошибку связанную с InnoDB, то вам сюда.

ВНИМАНИЕ!!! Файл конфигурации my.cnf или my.ini должен находиться в папке, где установлена WINDOWS.

В любом случае можно запустить админитсраторскую, там вы и конфигурацию отредактируете и посмотрите на ошибки при запуске MySQL - MYSQL/bin/winmysqladmin.exe.

Чтобы вручную работать с базами данных можете запустить файл MYSQL/bin/mysql.exe. Выведеться приглашение в которое вы можете вводить непосредственно запросы к базе данных, формируя из с помощью языка SQL.

Для детального изучения типов, комманд есть файл MYSQL/docs/manual.html

Теперь после установки и настройки MySQL мы можем заняться практическим приминением в скриптах PHP.

Как уже говорилось ранее в PHP 4 поддержка MySQL встроена и не нужно подключать дополнительный модуль.

Читая инструкцию по установке вы, наверно, столкнулись с тестовым скриптом. Его для начала мы и разберем.

<?
define("DBName","testbase");
define("HostName","localhost");
define("UserName","root");
define("Password","");

if(!mysql_connect(HostName,UserName,Password))
{ echo "Не могу соединиться с базой ".DBName."!<br>"; exit; }

// Создаем таблицу test. Если такая таблица уже есть, сообщение об ошибке будет
// подавлено, т.к. используется "@"
@mysql(DBName,"create table test(id int,a text)");

// Вставляем в таблицу 10 записей
for($i=0; $i<10; $i++)
{ $id=time();
mysql(DBName,"insert into test(id,a) values($id,'Строка $i!')");
}

// Выводим все записи
$r=mysql(DBName,"select * from test");
for($i=0; $i<mysql_numrows($r); $i++)
{ $f=mysql_fetch_array($r);
echo "$f[id] -> $f[a]<br>\n";
}

?>

Итак приступим к разбору кода. Функция mysql_connect(HostName,UserName,Password) соединяется с СУБД, находящейся на HostName с именем пользователя UserName и паролем Password. Для того, чтобы создать запрос к базе данных DBName используется функция mysql(имя_базы, запрос). Запрос формируется из языка SQL. В файле MYSQL/docs/manual.html подробно рассказано о типах(см. CREATE TABLE Syntax) о всех особенностях для MySQL. Настоятельно рекомендую почитать про все вышеуказанные операторы. Функция mysql модет и возвращать значение, если вы используете SELECT. Количество строк в получившейся таблице можно определить функцией mysql_numrows(что_вернула_mysql), а разложить на состовляющие с помощью функции mysql_fetch_array(что_вернула_mysql); в результате получиться массив, который можно потом обработать. Внимание! То что вернула mysql можно прогнать в цикле только один раз! если вы хотите работать с данными многократно вам придется записать результат в массив.

Для детального рассмотрения всех возможностей я написал простую телефонную книгу. Казалось бы у нее нет практического применения, но как учебное пособие она будет, то, что надо. Отредактируйте файл conf.php, где вы укажете имя базы данных. Если скрипт будет выдавать ошибку или не работает нажмите на ссылку сбросить таблицу. Главный файл phonebook.php.

СКАЧАТЬ СКРИПТ

© Проект Alex'а О проекте