Вот мы и дошли с вами до этого долгожданного для многих момента, когда наши веб-приложения (а уже не просто скрипты), разрастаясь, уже не могут удовлетвориться теми средствами, которые использовались ранее. Работа с файлами становится непомерно мучительной, те разбухают до необыкновенных размеров, делая невозможным их дальшейшее использование. Команды работы с файлами и содержащимися в них данными занимают сотни строк кода, и вы в конце концов понимаете, что так продолжаться больше не может. Требуется более удобное и надежное хранилище для многомегабайтной информации. И в итоге приходите к использованию баз данных, что вполне закономерно.
При программировании на PHP наиболее часто используемой базой данных является MySQL. И это неспроста. Их взаимодействие реализовано на высшем уровне, так что иногда кажется, что они были специально созданы друг для друга.
Установка MySQL.
Прежде, чем мы начнем знакомство с MySQL, вам необходимо установить эту базу данных на своей машине. Скачать дистрибьютив можно с этой страницы. Рекомендуется выбирать те версии, напротив которых написано "stable release". В помощь прочтите главу из официальной документации "MySQL Installation".
Итак, надеясь, что инсталляция MySQL прошла успешно, продолжаем наш урок и сейчас научимся без посредников в лице PHP, через консоль взаимодействовать с этой базой данных. Для этого зайдите в директорию, в которую вы установили MySQL, найдите там папку bin и откройте в ней файл mysql.exe.
В этом окне мы и будем обучаться MySQL.
Краткий справочник по командам MySQL.
Прежде всего настоятельно рекомендуется прочитать главу из документации "Tutorial Introduction",где изложены основы взаимодействия с MySQL, и статью "Реализация языка SQL в СУБД MySQL". Мы же рассмотрим лишь небольшую часть команд MySQL.
Сначала давайте рассмотрим структуру баз данных. Схематично она выглядит следующим образом:
база данных 1
таблица 1.1
таблица 1.2
таблица 1.n
база данных 2
таблица 2.1
...
база данных n
таблица n.1
Таким образом, данные по сути содержатся в таблицах, которые в свою очередь объединены в группу базы данных. Тем самым, чтобы начать работу с MySQL нам требуется прежде всего создать базу данных, с которой мы будем взаимодействовать.
CREATE.
Итак, в консоли пишем запрос:
CREATE database myphp;
Мы говорим MySQL создать базу данных с именем "myphp", причем регистр ключевых слов несущественен, но порядок слов в запросе не может быть изменен.
Теперь выберем только что созданную базу для работы с ней:
USE myphp;
И, как вы наверное уже догадались, нам необходимо создать таблицу, с которой мы будем работать. Пусть это будет таблица "lessons".
CREATE table lessons (
id int auto_increment primary key,
title varchar(250),
body mediumtext,
pub_date datetime default now(),
enable enum('0', '1') default '1'
);
Заметьте: то, сколько строк занимает запрос, несущественно: концом запроса является лишь символ ";".
Итак, мы создали таблицу lessons с 5 полями: id урока, представяющий собой уникальное число большее нуля, которое будет генерироваться автоматически при добавлении новой записи в таблицу путем увеличения максимального id на единицу (auto_increment); title - название урока длиной до 250 символов; body - собственно, сам урок, представляющий собой текст; pub_date - дата и время публикации урока; enable - флаг, который указывает, доступен ли урок посетителям, поле может иметь только два значения: '0' и '1', причем по умолчанию установлено '1'.
INSERT.
Теперь все готово, и мы можем приступить непосредственно к работе с данными. Сначала добавим в таблицу новую запись:
INSERT INTO lessons VALUES (
"",
"Начала",
"Прежде всего нужно сказать: PHP-скрипт для его выполнения должен быть заключен в следующие последовательности символов...",
'now()',
"1"
);
Итак, в таблице lessons у нас появилась новая запись, значения которой для каждого поля указываются в скобках после слова values (...). Причем заметьте, что мы пропустили ("") поле, которое заполняется автоматически - это поле id. Обратите внимание, на MySQL-функцию now(), которая возвращает текущее значение времени.
Но чтобы не писать пустых строк, также можно указать MySQL, в какие именно поля таблицы мы хотим сохранить данные. Например, введем таким образом данные урока 2:
INSERT into lessons (title, body) values (
"Формы всего сущего",
"На прошлом уроке мы научились передавать данные в php скрипт..."
);
Все остальные поля, не указанные нами, будут заполнены автоматически, причем для полей pub_date и enable применятся значения по умолчанию.
SELECT.
Теперь давайте посмотрим, что у нас оказалось в базе данных. Для этого применем команду SELECT, которая выводит указанные данные на экран.
SELECT * from lessons;
Значок "*" указывает, что мы хотим увидеть все поля таблицы lessons. Но также можно производить и выборочный вывод:
SELECT title, pub_date from lessons;
Также возможно выбирать не все записи в таблице, а удовлетворяющие определенным условиям:
SELECT title FROM lessons WHERE id = '1';
Тем самым мы выберем название только первого урока.
Также мы можем отсортировать данные перед выводом, используя команду ORDER.
SELECT id, title FROM lessons ORDER BY title;
Сортировка в обратном порядке производиться путем указания директивы DESC.
MySQL позволяет ограничить количество записей для вывода. Для примера выведем id и название последнего добавленного урока, подразумевая, что мы не знаем, какой id он имеет:
SELECT id, title FROM lessons ORDER BY id DESC LIMIT 1;
Сначала мы отсортировали все записи по id в обратном порядке, так что запись с максимальным id оказалась первой, и вывели только одну эту запись. Должна возвратиться таблица с id, равным 2, и title "Формы всего сущего".
MySQL также предоставляет функции COUNT(поле) для подсчета элементов, занесенных в указанное поле, MAX(поле) и MIN(поле) для определения максимального и минимального элемента соответственно, а также SUM(поле) для подсчета суммы элементов поля. К примеру:
SELECT COUNT(*), MAX(pub_date), SUM(id) FROM lessons;
UPDATE.
Предположим, что по какой-либо причине мы хотим на время скрыть урок 2 от посетителей. Для этого изменим поле enable, установив его равным нулю.
UPDATE lessons SET enable = '0' WHERE id = 2;
Таким образом можно изменить любое поле таблицы.
ALTER.
Команда ALTER TABLE позволяет изменить уже созданную таблицу. Например, в нашей таблице lessons после поля body вставим поле author.
ALTER TABLE lessons ADD author VARCHAR(200) DEFAULT 'Артем Акатов' AFTER body;
А теперь удалим эту колонку:
ALTER TABLE lessons DROP author;
Тем самым мы свободно можем манипулировать как создаваемыми объектами, так и уже давно созданными.
Как видите, синтаксис MySQL не отличается сложностью. Если вы более или менее владеете английским языком, вы без проблем освоите команды MySQL, к тому же они вполне интуитивно понятны. Мы разобрали лишь часть из них, для получения полной информации прочтите соответствующую официальную документацию.
Комментарии
|