Для пользователей 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 максимальную длину, разрешенную для строки, хранящейся в этом поле.