![]() |
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс |
Новичку | Ссылки | Программирование | Интервью | Архив | Связь |
Азбука MySQLАвтор: Николай Шляхтун < > Причина возникновения названия MySQL остается неясной. С одной стороны, разработчики в процессе написания программ ко многим директориям и именам файлов традиционно добавляли префикс "my". С другой стороны, имя дочери одного из разработчиков - My. Какой из этих фактов стал причиной такого названия, остается загадкой даже для разработчиков, не говоря уже о нас, простых смертных Как только мы задумываемся об упорядоченном хранении информации, неизбежно приходим к мысли о создании базы данных. Создав ее, например, в Microsoft Access, мы облегченно вздыхаем и на какое-то время успокаиваемся. Но это "какое-то время" длится недолго - на горизонте уже маячит следующая, продиктованная жизненной необходимостью задача: нужно обеспечить доступ к данным через интернет с рабочих станций, на которых, вполне возможно, установлены различные ОС. И вот тут на помощь приходит быстрая и надежная СУБД MySQL. Эта СУБД ведет свое начало от mSQL. Разработчики нуждались в более быстрой, надежной и гибкой СУБД. В результате был создан новый SQL-интерфейс при почти не измененном API-интерфейс mSQL. Этот API был выбран, чтобы облегчить перенос программ других разработчиков. Вся мощь простоты 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). Но зато есть новации (например, возможность кешировать запросы). Отсутствующие функции были принесены в жертву быстродействию, которое обеспечивает эта СУБД (хотя, если какие-то из этих функций все же понадобятся, можно использовать разработками сторонних производителей). Как поставил, так и держится Теперь, когда мы увидели, каким "навороченным" продуктом является 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 are ledir=$MY_BASEDIR_VERSION/bin # Where mysqld is DATADIR=$MY_BASEDIR_VERSION/data else MY_BASEDIR_VERSION=/usr/local/mysql DATADIR=/usr/local/mysql/data ledir=/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. Это командный интерпретатор, который передает введенные команды СУБД. Что б такого сотворить В качестве примера работы с этой системой управления базами данных создадим базу аудиодисков. Думаю, найдется немало любителей музыки, владеющих такой массой музыкальных дисков, что в ней можно запутаться. Кроме того, еще одна проблема возникает, когда даешь кому-то послушать диск. Диск слушают, а возвращать забывают (да и сам нередко забываешь, кому что дал). Вот и получается: что диск у тебя был, помнишь, а где он сейчас - без понятия. Итак, мы поняли, что нужно сделать; приступим к исполнению. Для начала создадим базу данных. Запускаем командный интерпретатор и набираем:
Теперь самое время подумать, из чего же будет состоять наша база. Иначе говоря, какие таблицы она будет в себя включать. Создадим таблицу дисков, которая будет включать в себя 3 поля: уникальный номер диска; название диска; год выпуска диска. Следующая таблица - это таблица песен: уникальный номер песни название песни исполнитель описание, или жанр Третья таблица, которую мы создадим, это таблица друзей: уникальный номер; имя; адрес; телефон; адрес электронной почты. Естественно, что на диске может быть больше одной песни, и что одна песня может быть на разных компактах, поэтому это связь "многие ко многим". Но, вместе с тем, конкретный диск одновременно может находиться только у одного человека, и один человек может взять несколько дисков - поэтому это связь "многие к одному". Для фиксации связей нам понадобятся две таблицы. В первой будет записано, какие песни на каких дисках находятся, во второй - у кого из друзей сейчас диск. Теперь, когда мы разобрались с тем, какой должна быть структура нашей базы, можно набрать несколько команд, чтобы претворить задуманное в жизнь. Все команды будем выполнять в командном интерпретаторе mysql. Можно также набрать их в любом текстовом редакторе, записать в файл, а потом передать на командный вход интерпретатору - и он выполнит наши команды. Например, если мы сделаем текстовый файл db.txt, в котором запишем необходимые команды SQL, то выполнить этот файл можно с помощью команды:
Вот как выглядит этот файл:
У нас есть база, нужно заполнить ее полезной информацией. Для начала добавим в нее несколько дисков с песнями. Для примера возьмем диски "Pink Floyd". Итак, добавляем диск 1983 года - "The Final Cut":
Добавляем в этот альбом песни:
Нужно присоединить эти песни к диску -для этого заполним таблицу songs_on_cd. Смотрим в соответствующих таблицах, под каким номером находятся песни, а под каким номером - диск. Это можно сделать с помощью команды select:
Аналогично добавляем альбом 1999 года "Red Hot Chili Peppers" "Californication". Если возникнет необходимость посмотреть, какие песни на каком диске находятся, можно воспользоваться sql-командой select. Например, чтобы посмотреть, что находится на диске Californication (см. рис. 3), набираем следующую команду:
Если мы хотим на время отдать диск кому-то из друзей, то для начала нужно будет ввести координаты этого человека в базу, а потом зафиксировать передачу диска. Вот как это выглядит на языке sql:
Передаем диск:
И последний пример - посмотрим, у кого находится диск "The Final Cut" (см. рис. 4): mysql> select people.name as "Name", people.addr as "Address", people.phonnum as "Phone", people.email from people, cd, take_disk where take_disk.cd_id=cd.cd_id and take_disk.p_id=people.p_id and cd.name='The Final Cut'; Хотя команда и получилась громоздкой, но она прекрасно работает даже в случае, если бы в базе было несколько тысяч записей. Напутствие в дорогу Mysql - быстрая и надежная система управления базами данных, хотя ее редко используют, набирая все команды вручную - так, как это сделали мы. Обычно она играет свою роль за кулисами, обслуживая разнообразнейшие веб-сайты. Мы также можем создать с помощью PHP или Perl собственный веб-сайт для учета музыкальных дисков. Но использование этих языков для доступа к mysql - это уже тема для отдельной статьи. Автор: Николай Шляхтун Источник: www.comizdat.com ![]() |
Вы находитесь на EXELAB.rU |
![]() |