10 СУБД MySQL
- это система управления реляционными базами данных (БД), для
работы с ними используется SQL (Structured Query Language) - наиболее
распространенный стандартный язык, используемый для доступа к базам данных.
В реляционной БД данные хранятся в отдельных таблицах, которые связываются
между собой при помощи отношений. Благодаря этому обеспечивается возможность
объединять при выполнении запроса данные из нескольких таблиц. Для каждого
пользователя создается своя база данных, в которой можно, имея
соответствующие права доступа:
- Создавать таблицы
- Добавлять информацию в таблицы
- Модифицировать или удалять информацию
- Получать необходимые данные
MySQL основана на технологии клиент-сервер. Для операций с данными
используется программа mysql, которая является клиентом сервера. Можно
также использовать любой SQL-клиент, который для пользователя наиболее привычен
и удобен. Пользователь может создавать таблицы и заполнять их данными в
ACCESS, а потом экспортировать таблицы в собственную БД - только
нужно установить 32-битный ODBC драйвер для MySQL. Есть также
простые в использовании программные расширения HTML, которые поддерживают
доступ к серверам баз данных MySQL.
10.1 Регистрация пользователей и создание базы данных
Для регистрации пользователей и создания базы данных следует направить
официальное письмо на имя зам. директора ЛИТ Коренькова В.В. с просьбой о
создании базы данных на MySQL для такого-то пользователя (фамилия,
имя, отчество) с его координатами (телефоны, место работы), указать желаемое
имя пользователя MySQL - user и название базы данных -
dbname. После получения
разрешения на создание БД, администратор сообщает все параметры соединения.
10.2 Соединение с сервером MySQL
При подключении к серверу с помощью mysql обычно нужно ввести имя
пользователя MySQL (user) и, в большинстве случаев, пароль.
Если сервер запущен не на том компьютере, с которого пользователь вошел в
систему, необходимо также указать имя хоста (hostname). Можно также
сразу указать базу данных (dbname), с которой хотите работать. Получив
соответствующие параметры, подсоединиться к серверу можно следующим образом:
> mysql -h hostname -u user -p
dbname
mysql выведет на экран запрос:
Enter password: * * * * * * * *
Вводится пароль. Если не задан пароль или имя пользователя, mysql
пробует зайти в систему на сервере базы данных с использованием логина на
Linux кластере и НУЛЕВОГО (ПУСТОГО) пароля. Это не пройдет, если
mysql_логин отличается от логина на Linux кластере, или если
пользователь имеет mysql_пароль. Несколько примеров запросов
пользователя pupil при работе с базой данных test при учете, что
имя сервера БД - lxdbs
> mysql -h lxdbs -u pupil -p
Enter password:
На экране должна появиться следующая информация и приглашение mysql:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2920 to server version: 3.23.55-Max-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
Программа mysql готова к вводу команд. Когда выдана команда, mysql
посылает ее серверу для выполнения и отображает результаты, затем печатает
подсказку mysql>, чтобы указать, что готова для приема другой команды.
Для отмены исполнения набираемой команды используется сочетание
\c.
После установки соединения можно в любой момент отключиться от сервера
командой QUIT:
mysql> QUIT
Bye
Если при подключении к серверу не было задано имя базы данных, то сделать это
можно командой:
mysql>USE dbname
В данном примере:
mysql> use test
Database changed
mysql>
Команда USE dbname сообщает, чтобы MySQL использовал базу
данных dbname как заданную по умолчанию для последующих запросов. База
данных остается текущей до конца сеанса, или пока не будет выдана другая
инструкция USE.
Имена баз данных и таблиц чувствительны к регистру, а для ввода ключевых
слов можно использовать любой регистр символов. По умолчанию поиск в
MySQL также нечувствителен к регистру.
Команда обычно состоит из SQL-выражения, за которым следует точка с
запятой.
mysql отображает вывод запроса как таблицу (строки и столбцы). Первая
строка содержит метки для столбцов, следующие строки задают результаты
запроса.
11.3 Примеры работы с MySQL
mysql можно использовать как простой калькулятор:
mysql> SELECT COS(PI()/3), (5+2)*3;
+---------------+------------+
| COS(PI()/3) | (5+2)*3 |
+---------------+------------+
| 0.500000 | 21 |
+---------------+------------+
Посмотреть названия таблиц в текущей БД, на которые пользователь имеет
привилегии, можно так:
mysql> show tables;
А структуру таблицы:
mysql>DESCRIBE tablename;
Команда может быть короткой, с одной строкой инструкции, например:
mysql> SELECT USER(), now();
+-----------------------+---------------------+
| USER() | now() |
+-----------------------+---------------------+
| pupil@lxpub01.jinr.ru | 2004-04-22 16:36:55 |
+-----------------------+---------------------+
Но mysql позволяет вводить и длинные запросы в виде нескольких коротких
строк; конец запроса - точка с запятой. Некоторые данные намного более
читаемы, когда отображаются вертикально. Вывод запроса (строки) вертикально
можно получить, заканчивая команду сочетанием \G.
mysql> select * from SOTRUDNIKI
-> where IMYA like 'Sid%'
\G;
*************** 1. row ***************
FAMILIA: Sidorov
IMYA: Sidor
ROZHDENIE: 1960-03-03
MESTO_ROZHDENIYA: Tula
В MySQL можно писать строки в символах ' или ". Когда Вы
переходите на новую строку, mysql подсказывает, что ожидается в
следующей строке. В таблице обобщен смысл всех подсказок:
Метка
| Значение |
mysql>
| Ожидание новой команды
|
->
| Ожидание следующей строки многострочной команды
|
'> (">) |
Введена строка, которая начинается с символа кавычки ' ( "), но нет второй
кавычки, которая завершает эту строку.
|
Если по ошибке введена незавершенная строка, любые дальнейшие строки, которые
будут вводиться, игнорируются mysql, включая строку QUIT!
При появлении подсказки '> ( ">), нужно ввести недостающую
кавычку и отменить текущую команду '> '\c ( "> "\c). После
подсказки mysql> можно продолжить работу.
Иногда многострочные инструкции происходят случайно, если не введена точка с
запятой для завершения. В этом случае mysql ждет продолжение ввода:
mysql> SELECT *
-> from SOTRUDNIKI
->;
Введите точку с запятой, чтобы завершить инструкцию, и mysql ее выполнит.
11.4 Основные команды
Основными командами языка SQL, используемыми для манипуляции с данными,
являются SELECT, INSERT, UPDATE, DELETE.
11.5 Подключение к базе данных MySQL с использованием PHP
К базе данных MySQL можно подключаться, используя PHP. Приведем PHP скрипт -
очень простой пример создания в базе данных test таблицы testtab, наполнения
ее данными и получения данных из нее. В угловых скобках (< >) - тэги языка
HTML. После // идет комментарий.
<?php
$dbname = "test"; // Имя базы данных
$user = "pupil"; // Имя пользователя
$password = "-"; // Пароль
$dbhost = "lxdbs"; // Хост
echo " Подключаемся к MySQL серверу<br>"; // контроль работы скрипта
$link = mysql_connect($dbhost, $user, $password);
echo " Выбираем нашу базу данных<br>"; // контроль работы скрипта
mysql_select_db($dbname, $link);
echo "Создаем таблицу testtab <br>"; // контроль работы скрипта
$query = "CREATE TABLE testtab (num int(2), num_square int(10),a
varchar(20))";
mysql_query($query, $link);
echo " Добавляем 10 записей в нашу таблицу testtab<br>"; // контроль
for($i=1; $i<11; $i++)
{ $ii=$i*$i;
$a= $i;
$query1 = "INSERT INTO testtab(num, num_square,a)
VALUES($i,$ii,'stroka$a')";
echo "<br>$i, $ii, stroka$a"; // контроль работы скрипта
mysql_query($query1, $link);
}
echo "<br> Смотрим содержимое нашей таблицы testtab<br>";
// далее выводится на печать имя таблицы:
echo("<center><h2>Таблица testtab </h2></center>");
echo('<table align="center" border="1"><tr>'); // атрибуты таблицы
// определяется количество полей таблицы:
$num_fields = mysql_num_fields(mysql_db_query($dbname,"select * from
testtab", $link));
// заносятся названия полей таблицы в массив:
for ($i=0; $i < $num_fields; $i++) {
$result = mysql_db_query($dbname, "select * from testtab", $link);
$hash_field_names[i] = mysql_field_name($result, $i);
//выводятся на печать названия столбцов таблицы:
echo("<th>");
echo $hash_field_names[i];
echo("</th>");
}
$result = mysql_db_query($dbname, "select * from testtab", $link);
echo("</tr><tr>");
//определяется кол-во строк в таблице:
$number_of_rows = @mysql_num_rows($result);
for ($ii = 0; $ii < $number_of_rows; $ii++) {
// выборка очередной строки:
$record = @mysql_fetch_row($result);
// выборка i-го элемента строки:
for ($i=0; $i < $num_fields; $i++) {
echo("<td>");
// печать i-го элемента строки:
echo $record[$i];
echo("</td>");
}
echo("</tr>");
}
echo("</table>");
echo("<br> Закрываем соединение");
mysql_close($link);
?>
Выполнить этот скрипт Вы сможете, если зададите свои параметры dbname, user,
password, т.к. у пользователя pupil в настоящее время оставлена
только привилегия select.
Для MySQL есть сайты с великолепным бесплатным руководством на русском языке,
например:
http://www.mysql.com/doc/ru/
http://www.botik.ru/~rldp/mysq
l/mysqlcli/
|