Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MySQL. Библиотека профессионала - Аткинсон Л

..pdf
Скачиваний:
165
Добавлен:
24.05.2014
Размер:
10.41 Mб
Скачать

12

Содержание

 

Web узлы

557

 

Отчеты об ошибках

558

Приложение Б. Правовые аспекты

560

Лицензирование программы MySQL

561

 

Общая лицензия GNU

561

 

Стабильность

568

 

Поддержка

570

Приложение В. Зарезервированные слова

572

Приложение Г. Коды ошибокMYSQL

578

Приложение Д. Руководство по оформлению SQL сценариев

594

 

Общие правила

595

 

Идентификаторы

596

 

Таблицы

596

 

Инструкции

597

Приложение E. Пример базы данных

598

 

Диаграммы

599

 

Схема базы данных

602

 

Предметный указатель

613

Благодарности

Ябы не смог закончить эту книгу без поддержки моей жены Викки. Помимо того что она прекрасный технический редактор, она постоянно вдохновляла, поддержи вала и просто понимала меня.

Кроме Викки я общался с несколькими профессиональными техническими редак торами. Дан Статен (Dan Staten) и Дан Ливингстон (Dan Livingston) дали мне советы с точки зрения общих вопросов редактирования. Микаэль Видениус (Michael Widenius)

иКай Арнё (Kaj Arno), несмотря на свою занятость, внимательно просмотрели текст книги. Благодарю также Синишу Миливоевича (SiniSa MilivojeviC), который обсуждал со мной вопросы библиотекиMySQL++ API.

Япризнателен редактору Марку Таубу (Mark Taub) и издательству Prentice Hall. В частности, я благодарен за предоставленную мне свободу в выборе структуры кни ги. Кроме того, мне было очень приятно, что Марк одобрил мое соглашение с компа нией MySQL AB, выразив таким образом свою поддержку сообществу разработчиков открытого программного обеспечения.

Наконец, спасибо всем вам за то, что купили эту книгу!

ВВЕДЕНИЕ

Трудно сделать выбор между теми программными продуктами, которые любишь больше всего. Я много лет с удовольствием занимался Web программированием на языке РНР с использованием программы MySQL, но сначала решил написать книгу Core PHP Programming. Через два года настал черед и книги по MySQL. Оба этих средст ва — MySQL и РНР — идут рука об руку друг с другом, поэтому я надеюсь, что читатели найдут данную книгу полезным дополнением к упомянутому вышеизданию.

На обложке книги красуется логотип MySQL, который свидетельствует о двух ее особенностях. Во первых, перед сдачей в печать рукопись была просмотрена Монти Видениусом и Каем Арнё. Это гарантирует достоверность изложенной информации. Во вторых, компания MySQL AB получает долю доходов от продажи книги. Это озна чает, что, покупая книгу, вы вносите личный вклад в дальнейшую разработку про граммы MySQL.

Подобные альтернативные источники финансовой поддержки разработчиков MySQL очень важны, ведь сама программа распространяется на условиях общей ли цензии GNU (GNU General Public License, GPL), т.е. плата за нее минимальна. Более того, вы имеете право модифицировать исходные коды программы и делиться этими модификациями с другими людьми при условии соблюдения правил лицензии. Мо дель распространения программ с открытыми исходными кодами не нова, но попу лярность она завоевала относительно недавно. Таким образом, в отличие от тради ционных разработчиков ПО, компания MySQL AB не может извлекать прибыль из продажи готовых программных пакетов, но она все же остается прибыльной благода ря предоставлению высококлассныхуслуг по своим продуктам.

Вданной книге описаны реляционные базы данных вообще и MySQL в частности.

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

Япытался сделать книгу как можно более полезной читателям. По этой причине вторая, справочная, часть расположена посередине, чтобы книга всегда лежала от крытой у вас на столе. Кроме того, я старался писать "экономно", не повторяясь и не объясняя многократно одно и то же.

Впервой части книги рассматриваются реляционные базы данных как таковые.

Впервой главе вводится понятие СУБД. Далее следует описание процедур инсталля

ции сервера MySQL и взаимодействияс ним (главы 2 и 3). Остальные главы этой час ти посвящены деталям функционирования баз данных, включая знакомство с языком SQL.

Введение 15

Вторая часть представляет собой справочник команд и утилит MySQL. Сюда же вхо дит описание типов данных, переменных и инструкций языка SQL. Впоследней главе рассмотрена библиотека функций языка С, предназначенных для работы с MySQL.

Втретьей части описываются механизмы взаимодействия с сервером MySQL в разных языках программирования, включая С, C++,Java, VBScript, PHP, Perl и Python. От читателей предполагается знакомство с этими языками.

Вчетвертой части рассматриваются сложные вопросы работы с базами данных. Здесь рассказывается о том, как использовать ресурсы системы и администрировать. сервер MySQL, как осуществлять репликацию базы данных и писать собственные SQL функции, а также многое другое.

Во всей книгеразличные ключевые слова и вообще текст, который может появиться на экране компьютера, набраны моноширинным шрифтом. Internet адреса и адреса электроннойпочты записываются курсивом, например caremysql@leonatkinson.com.

Вкниге рассмотрена программа MySQL версии 3.23 — ее самый последний ста бильный выпуск, доступный на момент написания книги. Возможно, к тому врем ени, когда вы будете читать книгу, версия 4.0 уже будет объявлена стабильной. Соответст венно, я старался помечать те места, где функции версии 3.23 могут подвергнуться изменениям.

MYSQL

И РЕЛЯЦИОННАЯ МОДЕЛЬ ДАННЫХ

этой части книги представлены основные концепции реляцион ных баз данных. Глава 1, "Введение в MySQL", содержит краткий обзор функциональных возможностей сервера баз данных. В гла ве 2, "Инсталляция MySQL", рассказывается об инсталляции программы

MySQL. В главе 3, "Взаимодействие с MySQL", речь идет о программах, посредством которых осуществляется взаимодействие с сервером. Сюда входят утилиты командной строки, программы с графическим интер фейсом, а также приложения ODBC.

Вглаве 4, "Концепции базданных", обсуждается эволюция баз данных

ивводятся основные понятия. Из этой главы читатели узнают о том, ка кие модели баз данных предшествовали реляционной модели, а какие — придут ей на смену. В главе 5, "Реляционная модель", содержится описа ние реляционной модели и особенностей ее реализации в MySQL. В гла ве 6, "Язык SQL", рассматривается язык SQL, применяемый для манипу лирования данными в MySQL ибольшинстве других реляционных СУБД.

Вглаве 7, "Проектирование баз данных", рассказывается о проекти ровании баз данных, начиная от составления спецификации и заканчи вая построением диаграмм отношений между объектами. В главе 8, "Нормализация", обсуждаются особенности процесса нормализации, вследствие которого устраняется ненужная избыточность данных. В гла ве 9, "Транзакции и параллельные вычисления", рассматриваются во просы, связанные с одновременным доступом к базе данных множества пользователей. Излагаются методики устранения возникающих при этом проблем за счет транзакций и блокировок.

ВВЕДЕНИЕ В MYSQL

В этой главе...

Принципы использования баз данных Преимущества баз данных Недостаткибазданных

Зачем нужна программа MySQL История MySQL

настоящей главе рассматриваются общие концепции баз данных и описывают ся принципы их реализации в MySQL.Будет рассказано о том, каким образом в MySQL решаются основные проблемы управления данными и чем M ySQL от

личается от других СУБД.

Принципы использования баз данных

В наши дни люди часто говорят о базах данных. Компьютеры составляют неотъ емлемую часть современного общества, поэтому нередко можно услышать фразы вроде "Я поищу твою запись в базе данных". И речь идет не о больших ящиках, где хранятся груды папок, а о компьютерных системах, предназначенных для ускоренно го поиска информации.

Компьютерные системы хранения

Компьютеры так прочно вошли в нашу жизнь, потому что их можно запрограмми ровать на выполнение утомительных, повторяющихся операций и решение задач, ко торые нам самим было бы не под силу решить без их вычислительной скорости и ем кости информационных носителей. Помещение информации на бумагу и разработка схемы хранения бумаг в папках и картотеках — достаточно четко отработанный про цесс, но многие вздохнули с облегчением, когда задача свелась к перемещению элек тронных документов в папки на жестком диске.

Одной из функций баз данных является упорядочение и индексация информации. Как и в библиотечной картотеке, не нужно просматривать половину архива, чтобы найти нужную запись. Все выполняется гораздо быстрее.

Не все базы данныхсоздаются на основе одних и тех же принципов, но традици онно в них применяется идея организации данных в виде записей. Каждая запись имеет фиксированный набор полей. Записи помещаются в таблицы, а совокупность таблиц формирует базу данных.

20 Глава 1. Введение в MySQL

Давайте рассмотрим работу с базами данных на примере автосалона. Кен, торго вец автомобилями, владеет более чем 100 машинами. Естественно, Кен не может помнить детальное описание каждой из них, поэтому он решает создать базу данных. В ней будет содержаться таблица с описанием каждого автомобиля, включая произво дителя, модель, год выпуска и ряд других параметров. В США у каждого автомобиля есть уникальныйидентификационныйномер (VIN, Vehicle Identification Number). Он также занесен в таблицу, чтобы можно было различать модели с одинаковыми пара метрами.

СУБД

Для работы с базой данных необходима СУБД (система управления базами дан ных), т.е. программа, которая берет на себя все заботы, связанные с доступом к дан ным. Она содержит команды, позволяющие создавать таблицы, вставлять в них запи си, искать и даже удалять записи.

MySQL — это быстрая, надежная и недорогая СУБД. Бизнес Кена невелик, поэтому он не может себе позволить приобрести дорогую корпоративную систему, но точно так же он не может допустить, чтобы с базой данных произошел крах. Поэтому он выбрал открыто распространяемый пакет, з надежной работе которого он больше уверен. Кроме того, Кен обнаружил, что есть много бесплатных ресурсов, посвящен ных поддержке MySQL. Если же ему понадобится профессиональная поддержка с га рантией, он сможет оплатить соответствующую услугу в компании MySQL AB.

MySQL берет на себя заботу об эффективном хранении записей и таблиц на жест ком диске. Кен избавлен от этого. Ему лишь нужно вводить правильные команды.

MySQL, как и многие другие СУБД, функционирует по модели "клиент/сервер". Под этим подразумевается сетевая архитектура, в которой компьютеры играют роли клиентов либо серверов. Серверы обычно обладают более мощными ресурсами и предназначены для предоставления услуг группам клиентов. Именно на серверах концентрируются вычислительные мощности и данные, тогда как на клиентах распо лагаются интерфейсные программы, посредством которых пользователи получают доступ к ресурсам сервера. На рис. 1.1 изображена схема передачи информации меж ду компьютером Кена и жестким диском сервера.

Рис. 1.1. Схема передачи данных в архитектуре "клиент/сервер"

Кен работает с клиентской программой MySQL, которая представляет собой утилиту командной строки. Эта программа подключается к серверу по сети. Команды, выпол няемые сервером, обычно связаны с чтением и записьюданных на жестком диске.

Клиентские программы могут работать не только в режиме командной строки. Есть и графические клиенты, например MySQL GUI. О них пойдет речь в главе 3, "Взаимодействие с MySQL".

Принципы использования баз данных

21

Язык баз данных

MySQL взаимодействует с базой данных на языке, называемом SQL (Structured Query Language — язык структурированных запросов). Одни люди произносят эту аб бревиатуру как "сиквел", другие, и я в том числе, — как "эскюэль". Последний вариант, похоже, нравится и разработчикам MySQL. Они заявляют, что название программы должно произноситься так: "май эскюэль".

Первое, что нужно сделать Кену, разобравшись с полями записей, — это создать таблицу. Данной цели служит команда, показанная в листинге 1.1.

CREATE TABLE car (

VIN VARCHAR(17) NOT NULL,

Make VARCHAR(16) NOT NULL,

Model VARCHAR(16) NOT NULL,

ModelYear INT(16) NOT NULL, WholesalePrice FLOAT(6,2) NOT NULL, Color VARCHAR(S) NOT NULL,

Mileage INT (11) NOT NULL, Comments TEXT,

PRIMARY KEY(VIN)

);

С этой командой стоит познакомиться поближе. После названия команды CREATE TABLE указано имя таблицы: саr. Далее в фигурных скобках идет список разделенных запятыми строк, описывающих поля таблицы.

Первое поле называется VIN и его тип — VARCHAR, т.е. строка символов перемен ной длины. Максимальное число символов в строке — 17. Спецификатор NOT NULL говорит о том, что строка не может быть пустой, т.е. пользователь обязательно дол жен ввести в эту строку какие то данные.

Некоторые поля имеют другой тип. Например, поле WholesalePrice содержит число с плавающей запятой. Формат этого числа таков: шесть цифр до запятой, и две — после. Поле ModelYear содержит целое число, состоящее не более чем из че тырех цифр.

Последняя строка списка представляет собой определение не поля, а индекса. В ней сообщается о том, что поле VIN является первичным ключом таблицы. Как уже говорилось выше, идентификационный номер автомобиля должен быть уникальным. А чтобы гарантировать уникальность значений в столбце, его нужно сделать первич ным ключом. MySQL не позволит вставить в таблицу две записи с одинаковым значе нием поля VIN.

Запросы к базамданных

На языке баз данных команды, обращающиеся к базе, называются инструкциями

либо запросами. Инструкция это более общий термин. Запросом обычно считается

такая инструкция, которая возвращает информацию (их еще называют запросами на выборку). Запрос можно рассматривать как вопрос, задаваемый базе данных, напри