Вся мощь простоты
SQL — это язык структурированных запросов (Structured
Query Language), международный стандарт языка для доступа к базам данных.
MySQL — это, если смотреть в общем, SQL-сервер; иначе
говоря — программа, которая принимает запросы, написанные на SQL, и
отсылает обратно определенные ответы. Ответами могут быть: данные,
количество строк, задействованных в запросе, или просто строка (например,
«Привет, Мир!»).
СУБД MySQL предоставляет в ваше распоряжение подмножество
языка SQL, соответствующее спецификации ANSI SQL 92.
Конечно, нам нужно как-то обеспечить доступ к MySQL. Это
можно сделать или через клиент (как текстовый, так и графический), или
через какой-то язык программирования.
Ядро, на котором сформирован MySQL, представляет собой
набор подпрограмм, которые уже много лет использовались в
высокотребовательном окружении. Это богатый и полезный функциональный
набор, в то время как MySQL все еще находится в разработке.
Основные цели MySQL: быстродействие и ошибкоустойчивость.
Эта СУБД прекрасно справляется с обработкой очень значительных массивов
данных (большое количество пользователей сообщают о работе с тысячами и
даже миллионами записей). В листах рассылок нередки сообщения об базах
данных в несколько гигабайт. Кроме того, MySQL в запросах к большим
таблицам превосходит многие другие системы. Она очень стабильна и
превосходно работает даже в случаях, когда несколько сотен пользователей
нуждаются в доступе к одним и тем же данным. Исходя из вышесказанного
легко понять, почему MySQL пользуется такой популярностью у разработчиков
веб-приложений. MySQL также очень масштабируема, работает на всем — от
персональных компьютеров до больших многопроцессорных систем.
Одно из замечательных свойств MySQL заключается в том,
что пользователь имеет доступ к MySQL-серверу независимо от операционной
системы, языка программирования или клиента, которым пользуется. Находясь
на UNIX-системе, пользователь может связываться с MySQL-сервером,
работающим на OS/2- и Windows-платформах.
Для взаимодействия с MySQL-сервером можно использовать
множество языков программирования. Можно написать программы на C, C++,
Java, PHP, Perl, TCL, Python — и они будут работать.
В MySQL все организовано по схеме «ничего лишнего»,
поэтому и отсутствуют некоторые функции, которыми оснащены другие базы
данных. MySQL не поддерживает вложенных запросов, тригерров; отсутствует
также встроенная поддержка XML, OLAP и конструктов (constraits). Но зато
есть новации (например, возможность кешировать запросы). Отсутствующие
функции были принесены в жертву быстродействию, которое обеспечивает эта
СУБД (хотя, если какие-то из этих функций все же понадобятся, можно
использовать разработками сторонних производителей).
Изготовление загрузочных дискет
Несмотря на то, что в составе Windows 2000 появились новые встроенные
средства устранения неполадок с загрузкой, к числу которых относятся
так называемый безопасный режим (safe mode) и консоль восстановления
(Recovery Console), о которых речь пойдет далее в этой главе, в ряде
случаев вам очень’ пригодится и загрузочная дискета Windows 2000. Разумеется,
безопасный режим предоставляет удобное средство для устранения неполадок
с загрузкой, например, если в системе установлен несовместимый или некорректно
работающий драйвер устройства. Однако в некоторых ситуациях опции безопасного
режима не помогут. В частности, эта ситуация возникнет, если получит
повреждение один из системных модулей или жизненно важный драйвер устройства,
принадлежащий к минимальному набору драйверов, которые должны быть загружены
в любом случае. Также подобная проблема возникнет, если повреждена,
например, такая важная структура данных, как главная загрузочная запись
(MBR). Для таких случаев в состав Windows 2000 включено новое, мощное
средство ≈ Консоль восстановления, которое обсуждается далее в
этой главе.
Однако если опция запуска консоли восстановления не включена в меню
загрузчика, то для доступа к этому средству потребуется так или иначе
запустить программу Windows 2000 Setup. Такой метод запуска консоли
восстановления является «штатным» и официально рекомендуемым.
Однако если имеющееся в вашем распоряжении устройство CD-ROM не является
загрузочным, возможен только запуск консоли восстановления с помощью
четырех установочных дискет Windows 2000 (а кстати, вы не забыли их
изготовить?).
Загрузка с дискет занимает довольно много времени. Есть лучший метод:
изготовьте загрузочные дискеты Windows 98 и Windows 2000. При загрузке
с такой дискеты и последующем запуске программы winnt32 все процедуры
пройдут намного быстрее (попробуйте и убедитесь).
Для изготовления загрузочной дискеты Windows 2000:
- Отформатируйте дискету из Windows 2000.
- Скопируйте на эту дискету следующие файлы:
- Ntldr
- Ntdetect.com
- Boot.ini
- Bootsect.dos ≈ если вы имеете мультизагрузочную систему
и хотите обеспечить возможность загрузки с этой дискеты также
для Windows 9.x или DOS - Ntbootdd.sys ≈ если в файле Boot.ini применяется синтаксис
scsiо
Загрузочная дискета Windows 2000 поможет выполнить загрузку компьютера
в следующих случаях:
- Повреждены главная загрузочная запись и/или загрузочный сектор раздела
на системном разделе. - Возникли проблемы с диском, на котором находится системный раздел
(загрузочный раздел находится на другом диске). - Вы выполняете переконфигурированйе жестких дисков и хотите обеспечить
возможность запуска Windows NT/2000 в случае возникновения проблем.
Что б такого сотворить
В качестве примера работы с этой системой управления
базами данных создадим базу аудиодисков. Думаю, найдется немало любителей
музыки, владеющих такой массой музыкальных дисков, что в ней можно
запутаться. Кроме того, еще одна проблема возникает, когда даешь кому-то
послушать диск. Диск слушают, а возвращать забывают (да и сам нередко
забываешь, кому что дал). Вот и получается: что диск у тебя был, помнишь,
а где он сейчас — без понятия.
Итак, мы поняли, что нужно сделать; приступим к исполнению.
Для начала создадим базу данных. Запускаем командный интерпретатор и
набираем:
Mysql> create database audio_cd;
Теперь самое время подумать, из чего же будет состоять наша база. Иначе
говоря, какие таблицы она будет в себя включать.
Создадим таблицу дисков, которая будет включать в себя 3 поля:
- уникальный номер диска;
- название диска;
- год выпуска диска.
- уникальный номер песни
- название песни
- исполнитель
- описание, или жанр
- уникальный номер;
- имя;
- адрес;
- телефон;
- адрес электронной почты.
Естественно, что на диске может быть больше одной песни,
и что одна песня может быть на разных компактах, поэтому это связь «многие
ко многим». Но, вместе с тем, конкретный диск одновременно может
находиться только у одного человека, и один человек может взять несколько
дисков — поэтому это связь «многие к одному».Для фиксации связей нам
понадобятся две таблицы. В первой будет записано, какие песни на каких
дисках находятся, во второй — у кого из друзей сейчас диск.
Теперь, когда мы разобрались с тем, какой должна быть
структура нашей базы, можно набрать несколько команд, чтобы претворить
задуманное в жизнь. Все команды будем выполнять в командном интерпретаторе
mysql. Можно также набрать их в любом текстовом редакторе, записать в
файл, а потом передать на командный вход интерпретатору — и он выполнит
наши команды. Например, если мы сделаем текстовый файл db.txt, в котором
запишем необходимые команды SQL, то выполнить этот файл можно с помощью
команды:
Shell>mysql <DB.TXT pre ><>
Вот как выглядит этот файл:
У нас есть база, нужно заполнить ее полезной информацией.
Для начала добавим в нее несколько дисков с песнями. Для примера возьмем
диски «Pink Floyd». Итак, добавляем диск 1983 года — «The Final Cut»:
Mysql>insert into cd values (NULL, ‘The Final Cut’, 1983);
Добавляем в этот альбом песни:
mysql> insert into songs values (NULL, «The post war
dream», «Pink Floyd», «»), (NULL, «Your possible pasts»,
«Pink Floyd»,»»), (NULL, «One of the few», «Pink
Floyd»,»»), (NULL, «The hero’s return», «Pink
Floyd»,»»), (NULL, «The gunner’s dream», «Pink
Floyd»,»»), (NULL, «Paranoyd eyes», «Pink
Floyd»,»»), (NULL, «Get your filthy hands off my desert»,
«Pink Floyd»,»»), (NULL, «The fletcher memorial home»,
«Pink Floyd»,»»), (NULL, «Southampton dock», «Pink
Floyd»,»»), (NULL, «The final cut», «Pink
Floyd»,»»), (NULL, «Hot now john», «Pink
Floyd»,»»), (NULL, «Two suns in the sunset», «Pink
Floyd»,»»);
Нужно присоединить эти песни к диску -для этого заполним
таблицу songs_on_cd. Смотрим в соответствующих таблицах, под каким номером
находятся песни, а под каким номером — диск. Это можно сделать с помощью
команды select:
Mysql>select * from cd; Mysql>select * from songs;
Или просмотрев таблицы с помощью графической оболочки.
Из рисунка видно, что нужно добавить песни с номерами 1-12 к диску
номер 1:
Mysql>insert into songs_on_cd values (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9), (1,10), (1,11), (1,12);
Аналогично добавляем альбом 1999 года «Red Hot Chili Peppers»
«Californication».
Если возникнет необходимость посмотреть, какие песни на каком диске
находятся, можно воспользоваться sql-командой select. Например, чтобы
посмотреть, что находится на диске Californication (см. рис. 3), набираем
следующую команду:
mysql> select songs.song_name as song, songs.autor_name as autor
from songs, songs_on_cd, cd where
songs.song_id=songs_on_cd.song_id and cd.cd_id=songs_on_cd.cd_id and
cd.name=»Californication»;
Если мы хотим на время отдать диск кому-то из друзей, то
для начала нужно будет ввести координаты этого человека в базу, а потом
зафиксировать передачу диска. Вот как это выглядит на языке sql:
Mysql>insert into people values (NULL, «Ivanov
Ivan», «st. Lenina 53,34», «4523412», «ivan@mail.ru»);
Передаем диск:
Mysql> insert into take_disk values (1,1);
И последний пример — посмотрим, у кого находится диск
«The Final Cut» (см. рис. 4):
Хотя команда и получилась громоздкой, но она прекрасно
работает даже в случае, если бы в базе было несколько тысяч записей.
Как поставил, так и держится
Теперь, когда мы увидели, каким «навороченным» продуктом
является MySQL, тем более хочется попробовать его в деле, поставить и
пощупать все своими руками. Этим и займемся.
В связи с возрастающим интересом к Linux-платформам, рассмотрим
установку и работу с MySQL именно на такой платформе. Чтобы инсталляция
MySQL проходила без особых затруднений, будем следовать рекомендациям,
выложенным на сайте MySQL.
- Первое, что нам рекомендуют,- скачать стабильную (stable release)
версию (на момент написания статьи — MySQL 3.23.49a). - Второй совет: не пытаться скомпилировать MySQL самостоятельно —
устанавливать уже скомпилированную версию.
Приняв на вооружение эти рекомендации, запускаем на
закачку файл «mysql-3.23.49a-pc-linux-gnu-i686.tar.gz» и спустя некоторое
время получаем его. Перед началом установки создадим у себя группу и
пользователя mysql:
Shell>groupadd mysql Shell> useradd -g mysql mysql
Далее распаковываем этот файл в каталог /usr/local:
Shell> tar -zxf gunzip mysql-3.23.49a-pc-linux-gnu-i686.tar.gz
Затем нужно сделать символическую ссылку mysql с каталога
mysql-3.23.49a-pc-linux-gnu-i686:
Shell> ln -s mysql-3.23.49a-pc-linux-gnu-i686 mysql
Причина этих действий заключается в том, что в скриптах прописаны
именно эти каталоги.
Теперь создадим каталог, в котором будут хранится базы.
Для этого нужно всего лишь зайти в каталог mysql и запустить скрипт
mysql_install_db, который находится в каталоге scripts:
Shell>cd /usr/local/mysql Shell>scripts/mysql_install_db
И последний штрих: с помощью команды safe_mysqld, которая
находится в каталоге bin, запускаем сервер. Если очень хочется, чтобы
запуск происходил при каждой загрузке системы, надо поместить запуск
safe_mysql в один из файлов инициализации системы.
В качестве примера: дописываем в /etc/rc.d/rc.local
строчку /usr/local/mysql/bin/safe_mysqld &. Но, если просто записать
эту строку в rc.local, mysql не захочет запускаться при загрузке системы.
И вот, пошаманив немного над файлом safe_mysqld, я обнаружил, что в
некоторых местах нужно заменить libexec на bin и var на data. Вот строки
(начиная с 87), которые подверглись изменениям:
MY_BASEDIR_VERSION=$MY_PWD # Where libexec, share and var
areledir=$MY_BASEDIR_VERSION/bin # Where mysqld
isDATADIR=$MY_BASEDIR_VERSION/dataelseMY_BASEDIR_VERSION=/usr/local/mysqlDATADIR=/usr/local/mysql/dataledir=/usr/local/mysql/bin
После того как мы все поставили, нужно изменить владельца и группу
созданных каталогов.
Каталогу mysql и всем подкаталогам нужно назначить владельца root и
группу mysql.
Shell>chown -R root:mysql /usr/local/mysql
Каталогу баз данных назначаем владельца mysql и одноименную группу.
Shell>chown -R mysql:mysql /usr/local/mysql/data
И последний штрих в настройке — пропишем путь к исполняемым программам
mysql в profile:
PATH=$PATH:/usr/local/mysql/bin
На сайте mysql можно скачать графические оболочки для
работы с базами (mysqlgui и mycc). Только вот, установив эти оболочки, я
пришел к выводу, что они не заменяют знание SQL и удобны только для
отображения таблиц, находящихся в базе (кстати, для отображения мне больше
понравился mycc — у него понятнее интерфейс, и с ним легче работать).
Для связи с базой данных предназначена программа mysql.
Это командный интерпретатор, который передает введенные команды СУБД.