Версия для печати

Урок 15. Основы MySQL.

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

Вот мы и дошли с вами до этого долгожданного для многих момента, когда наши веб-приложения (а уже не просто скрипты), разрастаясь, уже не могут удовлетвориться теми средствами, которые использовались ранее. Работа с файлами становится непомерно мучительной, те разбухают до необыкновенных размеров, делая невозможным их дальшейшее использование. Команды работы с файлами и содержащимися в них данными занимают сотни строк кода, и вы в конце концов понимаете, что так продолжаться больше не может. Требуется более удобное и надежное хранилище для многомегабайтной информации. И в итоге приходите к использованию баз данных, что вполне закономерно.

При программировании на 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, к тому же они вполне интуитивно понятны. Мы разобрали лишь часть из них, для получения полной информации прочтите соответствующую официальную документацию.

А на следующем уроке мы займемся уже работой с MySQL посредством PHP. До встречи!


Назад, на урок 14

Дальше, на урок 16 

Назад

Hosted by uCoz