Анатолий Мотев СанктПетербург бхвпетербург 2006 удк 681 06 ббк 32. 973. 26018. 2 М85
Скачать 4.25 Mb.
|
mysql_fetch_array.............................................................................................................. 190 mysql_fetch_assoc.............................................................................................................. 191 mysql_fetch_field ............................................................................................................... 191 mysql_fetch_lengths ........................................................................................................... 192 mysql_fetch_object ............................................................................................................. 192 mysql_fetch_row ................................................................................................................ 192 mysql_field_flags ............................................................................................................... 193 Îãëàâëåíèå 7 mysql_field_len .................................................................................................................. 194 mysql_field_name .............................................................................................................. 194 mysql_field_seek ................................................................................................................ 194 mysql_field_table ............................................................................................................... 194 mysql_field_type ................................................................................................................ 195 mysql_free_result ............................................................................................................... 195 mysql_list_dbs .................................................................................................................... 195 mysql_list_fields ................................................................................................................. 195 mysql_list_processes .......................................................................................................... 196 mysql_list_tables ................................................................................................................ 196 mysql_num_fields ............................................................................................................... 196 mysql_num_rows................................................................................................................ 196 mysql_pconnect .................................................................................................................. 196 mysql_ping ......................................................................................................................... 197 mysql_query ....................................................................................................................... 197 mysql_result ....................................................................................................................... 198 mysql_select_db ................................................................................................................. 198 Информационные функции ............................................................................................. 198 Приложение 3. Ответы на вопросы и задания для самоконтроля .......... 200 Урок 3 ................................................................................................................................ 200 Урок 7 ................................................................................................................................ 200 Урок 8 ................................................................................................................................ 201 Урок 17 .............................................................................................................................. 201 Приложение 4. Описание компакт-диска ..................................................... 204 Предметный указатель .................................................................................... 205 Ïðåäèñëîâèå Большим компаниям необходимы базы данных, а также сложное и дорогое программное обеспечение для работы с ними. Такие программные продукты позволяют управлять огромными объемами информации целой компании, поскольку обладают полным набором функций для работы с данными. Напротив, пользователи домашних компьютеров обычно не нуждаются в ба- зах данных. Они хранят свою информацию (телефоны, адреса и т. д.) в не- больших файлах, создаваемых с помощью специальных программ вроде за- писных книжек, электронных таблиц или телефонных справочников. Но есть и промежуточная категория пользователей, которым требуется хра- нение и управление информацией средних объемов. К этой категории отно- сятся небольшие предприятия и организации, филиалы больших компаний, а также пользователи домашних компьютеров, которым нужно поддерживать сложные персональные данные (например, размещаемый в Интернете каталог любимых фильмов с дополнительной информацией о сюжетах, актерах, съемочных группах и т. д.). Таким пользователям как раз и адресована книга. Î ÷åì ýòà êíèãà В данной книге рассматриваются возможности системы управления базами данных (СУБД) MySQL, вопросы создания баз данных в этой среде и их при- менения для реализации полноценных приложений в сети Интернет. Она по- знакомит читателя с основами баз данных, научит проектировать и создавать их с использованием MySQL, а также настраивать базу данных и управлять ею. СУБД MySQL достаточно проста в освоении и использовании, а множе- ство примеров и практических заданий помогут вам лучше и быстрее усвоить материал. Ïðåäèñëîâèå 9 Также в этой книге большое внимание уделено взаимодействию MySQL с программами на языке PHP, используемом для создания динамических сай- тов в Интернете. Это позволит вам применить полученные знания и навыки на практике и создать гостевую книгу, форум и многие другие полезные и интересные приложения на основе баз данных для своего сайта или сайта ва- шей фирмы. При описании интерфейса для языка PHP предполагается наличие у читателя основных навыков работы с рассматриваемым языком. Êàê ïîëüçîâàòüñÿ êíèãîé Книга разделена на четыре части. Во введении я расскажу о том, что такое базы данных и где их можно исполь- зовать. Также в нем описаны модели построения базы данных. Часть I "Проектирование базы данных" может сначала показаться не пред- ставляющей ценности, но на самом деле это одна из самых важных частей книги. Правильное проектирование важно для разработчика, если ставится задача создания приложения для работы с базами данных, достаточно легко масштабируемого в случае необходимости внесения изменений. Правильное проектирование базы данных также позволяет обеспечить высокую произво- дительность. Часть II "MySQL" описывает процесс инсталляции ядра MyQSL и использо- вание установленных утилит для обращения к базе данных. В части III "Формирование запросов к БД. Язык SQL" приведены важнейшие конструкции языка SQL, используемого для формирования структуры базы данных и манипулирования информацией, хранящейся в ней. Часть IV "PHP и MySQL" предназначена для тех, кто уже имеет базовый опыт создания программ на языке PHP и хочет узнать, как "заставить" свои приложения общаться с базами данных MySQL. Материал книги изложен в виде уроков, последовательно описывающих принципы работы с СУБД MySQL. В некоторых уроках есть контрольные задания, выполнение которых поможет вам оценить, насколько хорошо усво- ен данный урок. Приложения содержат справочные материалы — таблицу зарезервированных слов СУБД MySQL и список функций языка PHP, используемых для работы с MySQL, а также ответы на контрольные вопросы и примеры выполнения практических заданий, приведенных в книге, и описание сопроводительного компакт-диска книги. Ââåäåíèå Эта книга вводит вас в мир разработки малых и средних баз данных с по- мощью MySQL. MySQL не является базой данных. Это компьютерная про- грамма, позволяющая пользователю создавать, поддерживать базы данных и управлять ими. Такой тип программного обеспечения называется системой управления базами данных (СУБД). СУБД действует как посредник между физической базой данных и ее пользователями. Создателем СУБД MySQL является Майкл Видениус (Michael Widenius, Monty) из шведской компании ТсХ. В 1979 г. он разработал для внутрифир- менного использования средство управления базами данных и назвал его UNIREG. Впоследствии программа UNIREG была переписана на нескольких разных языках и расширена для поддержки больших баз данных. В 1994 г. компания ТсХ начала разрабатывать приложения для Интернета, применяя для поддержки этого проекта программу UNIREG. К сожалению, динамическая генерация web-страниц с помощью этой программы приводила к большим накладным расходам. Поэтому разработчики из TcX, взяв UNIREG за основу, использовали утилиты сторонних разработчиков для mSQL и к маю 1995 г. у ТсХ имелась СУБД, удовлетворявшая внутренним потребностям компании, — MySQL 1.0. Что же касается названия, то сам разработчик говорит об этом так: "До конца неясно, откуда идет название MySQL. В ТсХ базовый каталог, а также значи- тельное число библиотек и утилит в течение десятка лет имели префикс "mу". Вместе с тем мою дочь тоже зовут Май (My). Поэтому остается тайной, какой из двух источников дал название MySQL". С момента публикации СУБД MySQL в Интернете она была перенесена на многие системы под управлением ОС UNIX, а также Win32 и OS/2. ТсХ счи- тает, что сейчас MySQL используется примерно на 500 000 серверов. Если у вас есть опыт работы с реляционными базами данных и их проектиро- вания, вы можете сразу перейти к части II данной книги. Но если вы только Ââåäåíèå 11 начали осваивать данную область, то информация, приведенная здесь и в части I, будет весьма полезной и интересной. ×òî òàêîå áàçû äàííûõ è ãäå îíè èñïîëüçóþòñÿ Для начала нужно выяснить, что представляют собой базы данных и для ка- ких задач их можно, а иногда и необходимо применять. Определение базы данных может звучать так: Определение База данных (БД) — это именованная совокупность данных, отражающая сово- купность объектов и их отношения в предметной области. Наверное, читателю не совсем понятно данное определение. Давайте же раз- беремся. Предметной областью для БД является то, что она описывает. На- пример, предметом для описания может быть магазин по продаже детских игрушек, склад товаров или список сотрудников большой компании, храня- щийся в отделе кадров. То есть предметной областью для базы данных может быть все, что требует хранения довольно больших по объему и сложных по структуре данных. Объекты — это структурные единицы, из которых состоит предметная об- ласть. Если в качестве предметной области взять магазин, то объектами будут являться товары, покупатели, продавцы, поставщики, заказы и т. д. У каждого объекта есть набор свойств, который необходимо описать. На- пример, у товара могут быть следующие свойства: 1. Код (артикул). 2. Наименование. 3. Фирма-производитель. 4. Описание. 5. Цена. 6. Количество единиц на складе. Все объекты, описанные в предметной области, связаны между собой отно- шениями (рис. В1). То есть поставщики поставляют в магазин различные товары, покупатели де- лают заказы, заказы производятся на определенный товар и т. д. И, наконец, совокупность (собрание) данных является именованной просто потому, что любая база данных имеет имя (название). Ââåäåíèå 12 Покупатель Заказ формирует Поставщик Товар поставляет Рис. В1. Примеры отношений между объектами Áàçû äàííûõ è ïðèëîæåíèÿ Каждая база данных служит определенной цели. Простого наличия СУБД не достаточно, чтобы у вашей базы данных появилось назначение. Все зависит от того, как вы будете использовать хранимые данные. Если магазин не будет продавать товары, то какой смысл в организации и хранении товаров, веде- нии складского учета и т. д.? Кроме этого, нужна возможность изменения информации об имеющихся товарах и добавления информации о новых. Представьте себе компьютерный магазин, продающий в течение многих лет одни и те же процессоры, видеокарты и другие комплектующие. Я думаю, вскоре его станут называть "Антикварным". Базы данных существуют для того, чтобы мы могли с ними взаимодейство- вать. Но взаимодействие происходит не непосредственно с базой данных, а косвенно — с помощью специально разработанного программного обеспече- ния. До появления Интернета базы данных обычно использовались в боль- ших компаниях для поддержки всевозможных функций — бухгалтерии, фи- нансов, контроля поставок, складского учета, учета персонала и т. п. Развитие Интернета и усложнение задач домашних вычислений способствовали пере- мещению потребностей в использовании БД за пределы больших компаний. Áàçû äàííûõ è Èíòåðíåò Наиболее популярная область применения MySQL — разработка приложе- ний для Интернета. В настоящее время спрос на сложные и надежные прило- жения достаточно велик. Соответственно вырос спрос и на базы данных. С их помощью можно реализовывать множество полезных функций web-сайта. Практически любым содержимым страницы можно управлять с помощью базы данных. Возьмем в качестве примера интернет-магазин. Заходя на такой сайт, мы должны видеть список всех доступных товаров с их описанием и фотогра- фиями. Если опубликовать каталог товаров в виде простой HTML-страницы, то придется вручную редактировать ее каждый раз, когда требуется добавить новый товар или изменить цену. Если же вместо этого хранить данные о то- варах в базе данных, то появится возможность изменения web-страницы в Ââåäåíèå 13 режиме реального времени, сразу же после внесения в базу данных сведений о новом товаре или изменений для имеющегося товара. Кроме этого, можно будет интегрировать сайт с какой-либо системой электронной коммерции. Так как же web-страница взаимодействует с базой данных? База данных на- ходится на вашем web-сервере. На web-странице вы размещаете форму, в ко- торую пользователь вводит свой запрос (например, для поиска чего-либо) или те данные, которые нужно передать. После отправки данных из формы на сервер последний запускает написанную вами программу, которая извлекает данные, переданные пользователем. Далее программа формирует запрос на языке SQL (см. часть III) для выборки или изменения данных, а СУБД чу- десным образом делает все остальное. Если пользователь запрашивал какие- то данные из БД, то ваша программа может оформить результат запроса в виде новой HTML-страницы и отправить обратно пользователю. Обычно такие программы создаются в виде CGI-сценариев или серверных приложений на языке Java. Возможно также встраивание программы прямо в HTML-страницу. Таким образом, использование базы данных для управления подобным сай- том дает очевидные преимущества как продавцу, так и покупателю. Подробнее взаимодействие базы данных и приложений описано в части IV. В ней я познакомлю вас с базовым синтаксисом языка PHP, а также расскажу о возможностях, предоставляемых данным языком для работы с базами данных. Äðóãèå ÑÓÁÄ ñðåäíåãî ìàñøòàáà Первой СУБД среднего масштаба с поддержкой SQL была mSQL. Она недол- го оставалась в одиночестве — в настоящий момент ее коллегами являются такие СУБД, как PostgreSQL, GNU SQL, Beagle и уже известная нам MySQL. Все эти продукты относятся к категории Open Source, т. е. поставляются с открытым исходным кодом (даже если за использование этого продукта не- обходимо заплатить). PostgreSQL В начале 1980-х доктор Майкл Стоунбрейкер (Michael Stonebreaker) из Кали- форнийского университета в Беркли (University of California at Berkeley) соз- дал систему управления базами данных Ingres, которая предвосхитила многие концепции, реализованные в современных СУБД. Ingres была некоммерче- ским проектом, который финансировался университетом. Одна из компаний обратила внимание на коммерческий потенциал этого про- дукта и, зарегистрировав торговую марку Ingres, выпустила коммерческий Ââåäåíèå 14 продукт. Исходная некоммерческая версия Ingres была переименована в University Ingres и в дальнейшем развивалась независимо от коммерческой версии. Через некоторое время доктор Стоунбреикер пошел в своих исследованиях дальше того, что предполагалось в начальных целях проекта Ingres. Он решил разработать совершенно новую систему управления базами данных, которая бы развила идеи, заложенные в Ingres. Эта СУБД стала известна как Postgres. Postgres, как и Ingres, была открытым для всех проектом (он также финанси- ровался университетом). Сейчас Postgres соперничает по популярности с MySQL и mSQL среди СУБД среднего масштаба. Подробнее узнать о PostgreSQL можно на сайте http://www.postgresql.org. GNU SQL Проект GNU является для многих разработчиков символом свободы. Офици- альная лицензия на продукты GNU гарантирует свободный доступ и полную свободу для изменений исходного кода. До недавнего времени большим про- белом было отсутствие СУБД среди таких продуктов. Институт системного программирования Российской академии наук работает над устранением этого недостатка. Недавно он выпустил первую открытую бета-версию GNU SQL — полнофункциональную СУБД с поддержкой языка SQL. В настоящее время GNU SQL поддерживает многие развитые возмож- ности — транзакции, вложенные запросы. Подробнее узнать о GNU SQL можно на сайте http://www.ispras.ru. Beagle Проект Beagle был разработан и реализован Робертом Клейном (Robert Klein). Так же как и GNU SQL, Beagle был задуман как полностью SQL- совместимый сервер со всеми необходимыми функциями. Домашняя страница Beagle расположена на сайте http://www.beaglesql.org. Ìîäåëè äàííûõ Различают три модели, по которым можно построить БД: иерархическая; сетевая; реляционная. |