Все о хостинге » MySQL - это просто!

MySQL - это просто!


Сначала ответим на вопрос - что такое MySQL? Это База Данных (БД), в которой структурировано хранятся данные. Следует
второй вопрос - зачем отказываться от простых и удобных файлов к сложной БД? Потому что файлы, генерируемые каким либо
скриптом на основе файловой БД (гостевые книги, CMS, форумы), постепенно начинают увеличиваться в размере, а так же их
количество неуклонно растет. Поиск сильно затруднен. После преодоления некоторого порога (1000, 10000 файлов..) скрипт
начинает жутко тормозить, и приходится подолгу ждать, когда он закончит свою работу. БД лишены этих недостатков - даже
если в таблице будет миллион записей, поиск среди них будет идти доли секунды. Так уж они устроены, чтобы манипулировать
огромным количеством данных. Но тут и возникает вопрос - а как работать с БД, в данном случае с MySQL? Эта статья как раз
об этом.

Подключение к серверу.

Серверу MySQL, чтобы подключиться к нему, нужно передать 4 параметра:

* Хост. Это серовер, на котором расположен сервер MySQL. В абсолютном большинстве хост равен “localhost”.
* Имя пользователя. Имя пользователя, который может работать с этой таблицей. На локальных компьютерах по
дефолту поставлен “root”. На хостинге - в зависимости от вас.
* Пароль. Пароль выбранного пользователя. По умолчания равен пустой строке - “”.
* Имя Базы данных. Имя БД, как вы ее назвали. По умолчанию - “test”.

Подключаться к серверу нужно с помощи команды:

$msconnect=mysql_connect( “Хост”, “Пользователь”,

class=red>”Пароль” );

Выбирать конкретную Базу данных:

mysql_select_db( “Имя базы данных”, $msconnect);

Закрыть подключение нужно командой:

mysql_close($msconnect);

И соответственно полный пример подключения, выбирание нужной таблицы и закрытие подключеиния:

$mshost = “localhost”; // Хост

$msuser = “root”; // Имя пользователя

$mspassword = “”; // Пароль

$msname = “test”; // Имя базы данных

$msconnect = mysql_connect($mshost, $msuser, $mspassword);

mysql_select_db($msname, $msconnect);

mysql_close($msconnect);

?>

Создание таблиц. Заполнение информацией БД

Вот мы подключились к серверу MySQL и выбрали БД. Что дальше? Дальше нужно создать новую таблицу. Управления БД в MySQL
управляется с помощью специального языка запросов SQL. Поначалу он кажется страшным, непонятным и сложным, но через
некоторое время при активной работе с БД вы сможете легко читать самые сложные с виду SQL-запросы (сам так же путался в
начале..). Начнем.

Передача SQL запроса БД. Для этого существует единственная команда:

mysql_query( “SQL-запрос”, “подключенная БД”);

Попробуем создать таблицу. Для этого передадим серверу такой SQL запрос:

mysql_query(”CREATE TABLE имя_таблицы ( поле1 типполя1,

class=red>поле2 типполя2, поле3 типполя3)”, “подключенная БД”);

Можно создавать сколько угодно полей. Заместо ТипПоля1 пишется:

* INT - целые числа
* TEXT - текстовая информация

Это 2 основных типа поля. На самом деле их очень много, но перечислять их - займет лишком много места. Итак, разобрались
с созданием таблиц. Пример использования:

mysql_query(”CREATE TABLE test_zero ( num INT,

class=red>title TEXT,
text TEXT)”,$msconnect);

Добавление информации в БД

Для этого существует та же команда, только другой SQL-запрос:

mysql_query(”INSERT INTO название_таблицы VALUES ( ‘что засунуть в
поле1′,
‘еще что то в поле2′, ‘и напоследок в поле3′)”,

class=red>”подключенная БД”);

Думаю, здесь никаких сложностей не возникнет. Единственное, значения поля с типом TEXT вводить в одинарных кавычках. И,
как всегда, пример:

mysql_query(”INSERT INTO test_zero VALUES ( 1, ‘Заголовок
статьи’,
‘Текст статьи’)”, $msconnect);

Изменение информации в БД

Для этого используется такая команда:

mysql_query(”UPDATE название_таблицы SET(поле1= ‘значение1′, поле2=

class=red>’значение2′)
WHERE выражение”, “подключенная БД”);

Такой командой мы обновляем записи, указанные в скобках, а данной таблице, если они подходят по какому либо условию
(WHERE …). Это мы рассмотри чуть позже. Сейчас - пример:

mysql_query(”UPDATE test_zero SET(num= ‘2′, title=

class=red>’Заголовок 2′)
WHERE num= 1″, $msconnect);

Теперь полностью - подключение, создание таблицы, заполнение информации, ее обновление и закрытие подключения:

$mshost = “localhost”; // Хост

$msuser = “root”; // Имя пользователя

$mspassword = “”; // Пароль

$msname = “test”; // Имя базы данных

$msconnect = mysql_connect($mshost, $msuser, $mspassword);

mysql_query(”CREATE TABLE test_zero ( num INT,

class=red>title TEXT,
text TEXT)”,$msconnect);
mysql_select_db($msname, $msconnect);

mysql_query(”INSERT INTO test_zero VALUES ( 1, ‘Заголовок
статьи’,
‘Текст статьи’)”, $msconnect);

mysql_query(”UPDATE test_zero SET(num= ‘2′, title=

class=red>’Заголовок 2′)
WHERE num= 1″, $msconnect);
mysql_close($msconnect);

?>

В итоге у нас появится новая таблица test_zero, в которой будет одна запись.

Получение информации из БД.

Допустим, у нас большущая БД, в которой хранятся сотни записей. Как же эти записи получить? Очень просто:

$res=mysql_query(”SELECT поле1, поле2, поле3 FROM
имя_таблицы”);

while($row=mysql_fetch_array($res))

{

$поле1=$row[ поле1];

$поле2=$row[ поле2];

$поле3=$row[ поле3];

}

Командой SELECT мы получаем записи таблицы. Заместо строк “поле1, поле2,
поле3″ может стоять знак “*”, который означает, что нужно читать все поля записей. Можно
выбрать только одно поле, которое нужно. Это ускоряет работу БД. Что делает цикл while? Он
означает, что пока в таблице есть записи, он будет помещать значения их полей в массив с помощью функции

class=red>”mysql_fetch_array”, а как только записи кончатся, цикл остановится. Чтобы получить из массива данные,
можно воспользоваться способом, который я указал в примере. Внутри цикла можно генерировать, к примеру, статьи,
вытаскивая данные из БД. Вот пример:

$res=mysql_query(”SELECT * FROM test_zero”);

while($row=mysql_fetch_array($res))

{

$num=$row[ num];

$title=$row[ title];

$text=$row[ text];

echo “( $num) - $title

class=red>$text”;

}

Условия получения информации из БД

Когда в таблице сотни записей, получать все не всегда целесообразно. Для этого вводят какое либо условие:

$res=mysql_query(”SELECT * FROM имя_таблицы WHERE поле1
знак ‘значение’
ОПЕРАТОР поле2 знак ‘значение’”);

Рассмотрим поподробнее строку “поле1 знак ‘значение’”. Поле1 - название
поля, например “title”. Знак - логическое выражение, принимает значения:

* = - равно
* > - больше
* < - меньше
* != - не равно

Их так же достаточно много, это основные.

ОПЕРАТОР - логический оператор:

* AND - логическое "и"
* OR - логическое "или"

Это так же основные.

Пример вытаскивания из таблицы записей, номер которых больше 10:

$res=mysql_query("SELECT * FROM test_zero WHERE

class=red>num > 10″);

И, так сказать, итоговый пример применения БД:

$mshost = “localhost”; // Хост

$msuser = “root”; // Имя пользователя

$mspassword = “”; // Пароль

$msname = “test”; // Имя базы данных

$msconnect = mysql_connect($mshost, $msuser, $mspassword);

mysql_query(”CREATE TABLE test_zero ( num INT,

class=red>title TEXT,
text TEXT)”,$msconnect);
mysql_select_db($msname, $msconnect);

mysql_query(”INSERT INTO test_zero VALUES ( 1, ‘Заголовок
статьи’,
‘Текст статьи’)”, $msconnect);

mysql_query(”UPDATE test_zero SET(num= ‘2′, title=

class=red>’Заголовок 2′)
WHERE num= 1″, $msconnect);
mysql_close($msconnect);

$res=mysql_query(”SELECT * FROM test_zero”);

while($row=mysql_fetch_array($res))

{

$num=$row[ num];

$title=$row[ title];

$text=$row[ text];

echo “( $num) - $title

class=red>$text”;

}

?>

Ну вот и все! Конечно, это очень простой пример, но позволит вам научится простейшие работе с БД. На основе полученных
знаний можно сделать гостевую книгу, скрипт выводящий новости, систему статистики и т.д.

Если бы мне попалась эта статья пораньше - я бы не стал ее писать. Когда я еще не знал MySQL, я перерыл статей 10.
Достаточно быстро научился создавать таблицы и заполнять их. А вывести не получалось. Пришлось практически методом тыка
учится. специально для этого я и написал эту статью.

P.S: На оформление этой статьи ушло примерно в три раза больше времени, чем на ее написания. При оформлении я
более 50 раз перезагружал статью. Вот так то :).