Методичка: Разработка Web-приложений

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Для пользователей Windows

Если у вас в соответствии с инструкциями, изложенными в главе 2, установлена программа Zend Server Free Edition WAMP, то доступ к исполняемой программе MySQL можно получить из следующих каталогов (первый из которых относится к 32-разрядным, а второй -- к 64-разрядным компьютерам):

C:\Program Files\Zend\MySQL55\bin

C:\Program Files (x86)\Zend\MySQL55\bin

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

Чтобы войти в интерфейс командной строки MySQL, следует выбрать команду Пуск?Выполнить и в окне запуска ввести команду CMD, после чего нажать клавишу Enter. В результате будет вызвано командное окно Windows. Находясь в этом окне, нужно ввести следующую команду (внося в нее соответствующие коррективы):

"C:\Program Files\Zend\MySQL55\bin\mysql" -u root

"C:\Program Files (x86)\Zend\MySQL55\bin\mysql" -u root

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

SHOW databases;

Рис. 1. Доступ к MySQL из командной строки Windows

Использование интерфейса командной строки

Для всего, что изложено далее в тексте главы, нет никакой разницы, из какой именно системы -- Windows, Mac OS X или Linux -- вы получаете непосредственный доступ к MySQL, поскольку все используемые команды (и сообщения об ошибках, которые могут быть получены) абсолютно одинаковы.

Точка с запятой

Начнем с самого простого. Набирая команду, вы наверняка заметили точку с запятой (;) в конце SHOW databases;? Этот символ используется в MySQL для завершения команд или отделения их друг от друга. Если забыть поставить этот символ, MySQL выдаст приглашение и будет ожидать от вас его ввода.

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

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

Таблица 8.2. Шесть приглашений к вводу команды MySQL

Приглашение MySQL

Значение

mysql>

Готова к работе и ждет ввода команды

->

Ожидание следующей строки команды

'>

Ожидание следующей строки строкового значения, которое начиналось с одинарной кавычки

">

Ожидание следующей строки строкового значения, которое начиналось с двойной кавычки

`>

Ожидание следующей строки строкового значения, которое начиналось с символа засечки (`)

/*>

Ожидание следующей строки комментария, который начинался с символов /*

Отмена команды

Если, набрав часть команды, вы решили, что ее вообще не следует выполнять, то ни в коем случае не пользуйтесь сочетанием Ctr+C! Оно закроет программу.

Вместо нее можно ввести символы \c и нажать клавишу Enter. Порядок использования этой пары символов показан в примере 1.

Пример 1. Отмена ввода строки бессмысленная для mysql строка \c

При наборе этой строки MySQL проигнорирует все ранее введенные символы и выдаст новое приглашение. Без \c программа выведет сообщение об ошибке.

Но этой парой символов нужно пользоваться с оглядкой: если у вас уже есть открытая строка или комментарий, то прежде чем применить \c, вам придется их закрыть, иначе MySQL примет \c за часть строки. В примере 2 показано, как в таком случае следует задействовать \c.

Пример 2. Отмена ввода из строки это "бессмысленная для mysql строка" \c

Следует также заметить, что комбинация \c после точки с запятой работать не будет, поскольку это уже будет новая инструкция.

Команды MySQL

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

Таблица 3. Подборка наиболее востребованных команд MySQL

Команда

Действие

ALTER

Внесение изменений в базу данных или таблицу

BACKUP

Создание резервной копии таблицы

\c

Отмена ввода

CREATE

Создание базы данных

DELETE

Удаление строки из таблицы

DESCRIBE

Описание столбцов таблиц

DROP

Удаление базы данных или таблицы

EXIT (Ctrl+C)

Выход

GRANT

Изменение привилегий пользователя

HELP (\h, \?)

Отображение подсказки

INSERT

Вставка данных

LOCK

Блокировка таблицы (таблиц)

QUIT (\q)

То же самое, что и EXIT

RENAME

Переименование таблицы

SHOW

Список сведений об объектах

SOURCE

Выполнение команд из файла

STATUS (\s)

Отображение текущего состояния

TRUNCATE

Опустошение таблицы

UNLOCK

Снятие блокировки таблицы (таблиц)

UPDATE

Обновление существующей записи

USE

Использование базы данных

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

Команды и ключевые слова SQL нечувствительны к регистру. Все три команды -- CREATE, create и CrEaTe -- абсолютно идентичны по смыслу. Но чтобы было понятнее, для команд рекомендуется использовать буквы верхнего регистра.

Имена таблиц нечувствительны к регистру в Windows, но чувствительны к регистру в Linux и Mac OS X. Поэтому из соображений переносимости нужно всегда выбирать буквы одного из регистров и пользоваться только ими.

Для имен таблиц рекомендуется использовать буквы нижнего регистра или комбинацию из букв верхнего и нижнего регистра.

Создание базы данных

Если вы работаете на удаленном сервере, у вас только одна учетная запись пользователя и вы имеете допуск только к одной созданной для вас базе данных, то можете перейти к изучению пункта «Создание таблицы» далее. А если это не так, то продолжим, введя следующую команду для создания новой базы данных по имени publications:

CREATE DATABASE publications;

При успешном выполнении команды будет выведено сообщение, пока не имеющее для нас особого смысла, -- Query OK, 1 row affected (0.38 sec) (Запрос выполнен, обработана 1 строка за 0,38 с), но вскоре все станет на свои места. После создания базы данных с ней нужно будет работать, поэтому даем следующую команду:

USE publications;

Теперь должно быть выведено сообщение об изменении текущей базы данных

(Database changed), и после этого база будет готова к продолжению работы со следующими примерами.

Организация доступа пользователей

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

Для создания нового пользователя выдается команда предоставления прав -- GRANT, которая принимает следующую форму (не вздумайте все это набирать, поскольку это еще не команда):

GRANT ПРАВА ON база_данных.объект TO 'имя_пользователя@имя_хоста'

IDENTIFIED BY 'пароль';

Эта форма не должна вызвать каких-либо затруднений, быть может, за исключением фрагмента база_данных.объект. Это ссылка на саму базу данных и на содержащиеся в ней объекты, например на таблицы (табл. 4).

Таблица 4. Примерные параметры для команды GRANT

Параметр

Значение

*.*

Все базы данных и все их объекты

база_данных.*

Только база данных с именем база_данных и все ее объекты

база_данных.объект

Только база данных с именем база_данных и ее объект с именем объект

Итак, создадим пользователя, который получит доступ только к новой базе данных publications и ко всем ее объектам, и введем для этого следующую команду (заменив в ней имя пользователя jim и пароль mypasswd выбранными вами именем и паролем):

GRANT ALL ON publications.* TO 'jim'@'localhost'

IDENTIFIED BY 'mypasswd';

Эта команда предоставляет пользователю jim@localhost полный доступ к базе данных publications при использовании пароля mypasswd. Работоспособность этой установки можно проверить, если ввести команду quit для выхода из системы, а затем перезапустить MySQL, воспользовавшись прежним способом запуска, но вместо -u root -p набрав -u jim -p или применив в этой строке созданное вами имя пользователя. В табл. 5 показаны команды, соответствующие используемой вами операционной системе, но если в вашей системе MySQL-клиент установлен в другой каталог, то в команду следует внести соответствующие коррективы.

Таблица 5. Запуск MySQL и вход в систему под именем jim@localhost

Операционная система

Пример команды

Windows

"C:\Program Files\Zend\MySQL55\bin\mysql" -u jim -p

Mac OS X

/Applications/MAMP/Library/bin/mysql -u jim -p

Linux

mysql -u jim -p

Теперь, как только появится приглашение, нужно лишь ввести свой пароль, и вход в систему будет открыт. Кстати, при желании можете поместить пароль сразу же после ключа -p (не используя никаких пробелов). Тем самым вы избежите его ввода после появления приглашения. Но такой подход не приветствуется, поскольку если в вашей системе зарегистрировались и другие пользователи, они могут подсмотреть вводимую вами команду и получить доступ к вашему паролю.

Создание таблицы

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

USE publications;

Теперь наберите построчно команды, которые приведены в примере 3.

Пример 3. Создание таблицы с названием classics

CREATE TABLE classics ( author VARCHAR(128), title VARCHAR(128), type VARCHAR(16), year CHAR(4)) ENGINE MyISAM;

После ввода команды MySQL должна выдать ответ: Query OK, 0 rows affected, а также показать время, затраченное на выполнение команды. Если вместо этого появится сообщение об ошибке, внимательно проверьте синтаксис команды. Должны быть на месте все скобки и запятые, а может быть, допущена какая-нибудь опечатка. Команда ENGINE MyISAM, которая своим присутствием в примере могла вызвать у вас недоумение, указывает MySQL тип механизма управления базой данных, применяемого к этой таблице.

Чтобы проверить факт создания новой таблицы, наберите команду:

DESCRIBE classics;

Если все в порядке, то вы увидите последовательность команд и ответов, показанных в примере 4, в которой особое внимание следует обратить на отображение формата таблицы.

Пример 4. Сеанс работы с MySQL: создание и проверка формата новой таблицы mysql> USE publications;

Database changed mysql> CREATE TABLE classics ( -> author VARCHAR(128),

-> title VARCHAR(128),

-> type VARCHAR(16),

-> year CHAR(4)) ENGINE MyISAM; Query OK, 0 rows affected (0.03 sec) mysql> DESCRIBE classics; +--------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+--------------+------+-----+---------+-------+

| author | varchar(128) | YES | | NULL | |

| title | varchar(128) | YES | | NULL | |

| type | varchar(16) | YES | | NULL | |

| year | char(4) | YES | | NULL | |

+--------+--------------+------+-----+---------+-------+

4 rows in set (0.00 sec )

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

Ѓ Field -- имя каждого из полей или столбцов таблицы;

Ѓ Type -- тип данных, сохраняемых в поле;

Ѓ Null -- заголовок, который показывает, может ли поле содержать значение NULL;

Ѓ Key -- MySQL поддерживает ключи, или индексы, позволяющие ускорить просмотр и поиск данных. Под заголовком Key показан тип применяемого ключа ( если таковой имеется);

Ѓ Default -- исходное значение, присваиваемое полю, если при создании новой строки не указано никакого значения;

Ѓ Extra -- дополнительная информация, например, о настройке поля на автоматическое приращение его значения.

Типы данных

В примере 3 можно было заметить, что для трех полей таблицы объявлены типы данных VARCHAR, а для одного -- тип данных CHAR. Термин VARCHAR означает VARiable length CHARacter string -- строка символов переменной длины, а команда воспринимает числовое значение, указывающее MySQL максимальную длину, разрешенную для строки, хранящейся в этом поле.