Урок 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.
Итак, в консоли пишем запрос:
Мы говорим MySQL создать базу данных с именем "myphp", причем регистр
ключевых слов несущественен, но порядок слов в запросе не может быть
изменен.
Теперь выберем только что созданную базу для работы с ней:
И, как вы наверное уже догадались, нам необходимо создать таблицу, с которой
мы будем работать. Пусть это будет таблица "lessons".
CREATE table lessons ( id int auto_increment primary key, title
varchar(250), body mediumtext, pub_date datetime, 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, которая выводит указанные данные на экран.
Значок "*" указывает, что мы хотим увидеть все поля таблицы 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. До
встречи!
|