Шаг 9 - Первый проект, начало MySQL

Очень надеюсь, что обзор возможностей был не слишком утомителен.

Я думаю, сейчас самое время перейти от слов к делу - сделать первый небольшой скрипт. Возьмем для примера следующую задачу. Нужно сделать базу с книгами, которые появились или скоро появятся в продаже, и которые вызывают интерес.

Для этого нам понадобятся: база (таблицы сделаем в MySQL), форма ввода, процедура загрузки из текстового файла (на тот случай, если ранее список книг лежал в файле - у меня дело именно так и обстоит), страница для вывода с сортировкой по критериям и, как дополнительный прибамбас (его сделаем в самую последнюю очередь), загрузка новостей с сайтов издательств с занесением выбранных позиций в базу.

Цель проекта проста. Не упустить интересующее чтиво.

Структура таблиц будет такой. Таблица описания книг BOOKS:

Для начала хватит. Потом добавим серии книг, статусы, таблицу оглавлений и обложек (в blob-ах), комментарии к книгам и список интернет-магазинов, в которых книга была обнаружена.

Для создания таблицы нам понадобится создать базу данных в MySQL (назовем ее тоже BOOKS) и в ней уже саму таблицу. Но сначала об установке MySQL. Я опишу установку под WinNT (под *nix-ы его надо собирать - я пока это проделывать не пробовал).

Процедура эта довольно проста. Надо забрать дистрибутив с http://www.mysql.com, раскрыть zip, запустить setup.exe. После окончания установки в каталоге MySQL-я будет лежать файл my-example.cnf. Предполагается, что его надо будет скопировать в каталог c:\ под именем my.cnf. Я этого не делал. Вместо этого, следуя Readme-файлу, я запустил winmysqladmin.exe, выбрал закладку "my.ini Setup", указал директорию, в которой живут поддиректории MySQL-я (у меня это C:/usr/local/mysql), выбрал радиобаттон в секции "mysqld file" mysqld-nt (запуск MySQL-сервера как службы в NT) и нажал на "Save Modification". После чего в WINNT-каталоге обнаружил файл my.ini. Все. Осталось убедиться, что в списке служб появилась служба "mysql", и выставить ей атрибут запуска (руками/автоматом).

Итак, заходим в каталог (если вы, конечно, не внесли эту директорию в path-окружение) c:\mysql\bin (или туда, куды вы установили MySQL; далее будем полагать, что mysql установлен в c:\mysql) и запускаем mysqladmin с параметром (краткую справку по параметрам mysqladmin-а я приведу в следующем шаге).

create <имя база>.

В нашем случае:

create books.

mysqladmin никакой мессагой нас не порадовал, но, зайдя в c:\mysql\data (там по умолчанию mysql хранит базы данных, если не задано противное в конфигурации сервера), можно с чувством глубокого удовлетворения обнаружить директорию books. Это и есть наша база. Правда, директория пуста - мы ведь не создали в базе еще ни одной таблицы. (Кстати, если вы решите удалить базу пудем удаления директории - лучше откажитесь от этой затеи. Mysql хранит у себя информацию о существующих базах.

Для корректного удаления базы есть параметр у mysqladmin-а:

drop <имя базы>.

Создаем таблицу. Можно зайти в mysql.exe и создать там, а можно скормить тектовый файл с командами для mysql-я на вход exe-шнику. (При заходе с локальной машины mysql считает, что пришел root со всеми полномочиями - о пользователях и полномочиях в mysql-е поговорим позднее).

Итак, либо, зайдя в mysql, введите нижеследующую последовательность команд, либо сохраните их в файле (например, books.sql) и скажите

mysql < books.sql

А вот содержимое books.sql:

connect books;
create table books (
	id int(5) not null primary key auto_increment,
	author char(60),
	namebook varchar(100),
	series int(2),
	edition int(2),
	year int(4),
	isbn char(20),
	pages int(4),
	when_create int(2),
	how int(4),
	status int(1)
);

Зайдя теперь в каталог c:\mysql\data\books, вы обнаружите целых три файла: books.frm (структура таблицы), books.myd (данные; сейчас он нулевой длины - insert-ов ведь не было!) и books.myi (данные о ключах).

На последок небольшое пояснение по первой строке (полю) в insert-е. По идее, параметр "not null" не нужен, раз "primary key" говорим. Но есть мнение, что лучше все же его указать (я не готов это утверждение как-либо комментировать). Auto_increment, соответственно, присваивает одноименный атрибут полю, позволяя при insert-е автоматически генерить цифру на единицу большую, чем в предыдущем insert-е.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Константин Платонов - 24.10.2000