РАБОТА С БАЗАМИ
ДАННЫХ: MYSQL
Основы SQL
SQL (англ. Structured Query Language – «язык структурированных
запросов») – универсальный компьютерный язык, применяемый для создания,
модификации и управления данными в реляционных базах данных. SQL является, прежде
всего, информационно-логическим языком, предназначенным для описания хранимых данных,
для извлечения хранимых данных и для модификации данных. SQL не является языком
программирования. Стандарт на язык SQL был выпущен Американским национальным
институтом стандартов (ANSI) в 1986 г., а в 1987 г. Международная организация
стандартов (ISO) приняла его в качестве международного. Нынешний стандарт SQL
известен под названием SQL:2008.
Изначально, SQL был основным способом работы пользователя с
базой данных и представлял собой небольшую совокупность команд (операторов)
допускающих создание таблиц, добавление в таблицы новых записей, извлечение
записей из таблиц (в соответствии с заданным условием), удаление записей и изменение
структур таблиц.
В связи с усложнением язык SQL приблизился к языкам прикладного
программирования, а пользователи получили возможность использовать визуальные
построители запросов.
Операторы SQL делятся на:
• операторы определения данных
(Data Definition Language, DDL)
• операторы манипуляции данными
(Data Manipulation Language, DML)
• операторы определения доступа к
данным (Data Control Language, DCL)
• операторы управления
транзакциями (Transaction Control Language, TCL)
Операторы SQL не различают регистр символов, однако имена таблиц
и имена баз данных могут различать регистр символов, в зависимости от
используемой операционной системы.
Рассмотрим DML-операторы, которые пригодятся для выполнения
рутинных операций с базой данных посредством языка PHP. Остальные операторы так
или иначе реализованы через визуальные интерфейсы, требуют единичного
использования.
Допустим у нас уже существует таблица под именем fruits,
в которую внесены следующие значения (первая строка – имена столбцов):
id |
code |
name |
price |
country |
1 |
7860459871032 |
Бананы |
30 |
Эквадор |
2 |
2900000984123 |
Апельсины |
80 |
Марокко |
3 |
2900000894561 |
Мандарины |
30 |
Марокко |
4 |
2900000568147 |
Манго |
300 |
Тайланд |
Вставка данных в таблицу
Оператор INSERT позволяет добавлять в таблицу данные.
Общая форма:
INSERT into table_name (column1, column2, ...)
values (value1,
value2...)
Здесь table_name – имя таблицы, в которую надо внести
данные; column1, column2 и т.д. – имена столбцов, а value1, value2 и т.д. – значения
соответствующих столбцов.
Следующий оператор добавляет новую запись в таблицу fruits:
INSERT INTO fruits
(code, name, price, country) values
(3598654458114, "Виноград", 120, "Франция"); |
Как и другие операторы MySQL, эту команду можно вводить на одной
строке или разместить ее на нескольких строках. Значениями для столбцов name
и country являются текстовые строки, поэтому они записываются в
кавычках. Значения для code и price – числа (целые), поэтому они
указываются без кавычек.
Можно заметить, что данные определены для всех столбцов кроме
id. Значение для этого столбца задает система MySQL, которая находит в
столбце наибольшее значение, увеличивает его на единицу и вставляет новое значение.
Такое поведение MySQL задается в момент создания новой таблицы. Нельзя
загрузить в таблицу сразу массив данных. SQL позволяет вносить записи только
построчно.
Запрос данных
Запрос данных выполняется с помощью оператора SELECT,
который имеет следующий формат:
SELECT имена_столбцов FROM имя_таблицы [WHERE ...условия] |
Часть оператора с условиями необязательна. По сути,
требуется знать имена столбцов и имя таблицы, из которой извлекаются данные. Например,
чтобы извлечь штрих-коды и названия всех фруктов из таблицы fruits,
необходимо выполнить следующую команду:
SELECT code, name FROM
fruits
Чтобы вывести всю таблицу, можно либо ввести имена всех столбцов,
либо воспользоваться упрощенной формой оператора SELECT:
SELECT * FROM fruits
Символ * в этом выражении означает 'ВСЕ столбцы'. Рассмотрим,
как ограничить вывод строк таблицы по условиям с помощью операторов сравнения =
(равно) и != (не равно):
SELECT code, name FROM
fruits WHERE country = 'Марокко'
В результате запроса будет выдана следующая таблица (без названий
столбцов):
code |
name |
2900000984123 |
Апельсины |
2900000894561 |
Мандарины |
То есть будут выданы штрих-коды и имена только тех фруктов, страна
происхождения которых – Марокко. Заметим, что слово «Марокко» в условии
заключено в одиночные кавычки, что равно-
значно использованию двойных кавычек. В данном случае кавычки обязательны,
так как столбец country содержит текстовые значения. Также необходимо заметить:
SQL не различает регистр символов.
Это означает, что с равным успехом можно использовать
"Марокко", "марокко" и даже "мароККо". Рассмотрим,
как выбрать фрукты, цена которых не равна 30:
SELECT name, price FROM fruits WHERE price!=30
В результате запроса будет выдана следующая таблица (без названий
столбцов):
name |
price |
Апельсины |
80 |
Манго |
300 |
Аналогично применяются операторы больше (>),
больше или равно (>=), меньше (<), меньше или равно (<=).
Для текста также доступен оператор поиска по шаблону LIKE.
Например, необходимо найти все фрукты, начинающиеся на букву
М. Для этого необходимо использовать инструкцию
SELECT name, country
FROM fruits WHERE name LIKE "М%"
В результате запроса будет выдана следующая таблица (без названий
столбцов):
name |
country |
Мандарины |
Марокко |
Манго |
Тайланд |
Знак % действует как символ-заместитель (аналогично
использованию * в системах DOS и Linux). Он заменяет собой любую последовательность
символов. Таким образом, "М%" обозначает все строки, начинающиеся с
буквы М. Аналогично "%м" выбирает строки, которые
заканчиваются символом м, а "%м%" – строки, содержащие букву м.
Удаление записей из таблицы
Для удаления записей из таблицы используется оператор DELETE,
требующий задания имени таблицы и необязательных условий:
DELETE from имя_таблицы [WHERE условия];
Если никакие условия не будут заданы, то удаляются все
данные в таблице. Тем не менее в большинстве случаев требуется удалить какую-либо
определенную запись или ряд записей, обладающих единым признаком. В нашем
случае предположим, что в результате успешных продаж манго кончилось, и, как
следствие, его требуется удалить из списка доступных фруктов:
DELETE from fruits
WHERE name = 'Манго';
Обновление записей в таблице
Для обновления записей в таблице используется оператор UPDATE,
требующий задания имени таблицы и необязательных условий:
UPDATE имя_таблицы SET <присваивание1 [, присваивание2, ...]> [WHERE <условие>] |
Допустим, у нас изменились цены на мандарины. В этом случае обновить
их в таблице мы можем следующим запросом:
UPDATE fruits SET price="50" WHERE
name="Мандарины"
Управление базой данных через phpMyAdmin
phpMyAdmin – веб-приложение с открытым кодом, написанное на
языке PHP, представляющее собой веб-интерфейс для администрирования СУБД MySQL
и позволяющее через обозреватель Интернет осуществлять администрирование
сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз
данных. Приложение пользуется большой популярностью у веб-разработчиков, так
как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд,
предоставляя дружественный интерфейс.
На сегодняшний день phpMyAdmin широко применяется на практике.
Так, подавляющее большинство российских хостеров используют это приложение в качестве
панели управления для того, чтобы предоставить своим клиентам возможность
администрирования выделенных им баз данных.
В данный момент phpMyAdmin позволяет:
• создавать и удалять базы
данных;
• создавать, копировать, удалять,
переименовывать и изменять таблицы;
• осуществлять сопровождение
таблиц;
• удалять, править и добавлять
поля;
• выполнять SQL-запросы, в том
числе пакетные;
• управлять ключами;
• загружать текстовые файлы в
таблицы;
• создавать графическую схему
базы данных в форматеPDF;
• осуществлять поиск в базе
данных или в её разделах.
В Денвере phpMyAdmin располагается по адресу http://localhost/Tools/phpMyAdmin
Создание базы данных
Главная страница
phpMyAdmin
На главной странице phpMyAdmin найдите строку «Новая база
данных» (рис. 1). В поле под надписью наберите название базы данных и нажмите
кнопку «Создать». На новой странице будет указано – успешно или неуспешно
проведена процедура (рис.2).
Создание таблицы
Создание таблицы в
новой базе данных
После создания базы данных тут же возможно создать в ней
первую таблицу (рис. 2), задав ее имя и количество столбцов. Опираясь на
рассмотренный выше пример, зададим пять столбцов. И в следующем экране phpMyAdmin
предложит описать их свойства (рис.3).
Диалог описания столбцов
Определение параметров столбов в phpMyAdmin
Изначально поле id планировалось для того, чтобы
каждая запись смогла быть уникальной. Очевидно, что наименований фруктов и
стран, где они растут, не слишком большое количество, поэтому полю присвоен тип
TINYINT. Параметр «auto_increment» задает, что при добавлении новых записей в
рассматриваемое поле должно попадать значение последнего находящегося в таблице
id, увеличенное на единицу. Плюс в столбце «ключ» (флаг в phpMyAdmin) запрещает
появление в столбце одинаковых значений, чем обеспечивается уникальность записи
и возможность обработки именно её данных.
Также полю «Сравнение» присвоим значение «cp1251_bin», чтобы
MySQL знал, в какой кодировке мы будем загружать буквы национального
(кириллического) алфавита. После того как нажата кнопка «Сохранить», в таблицу будут
добавлены столбцы. Результат добавления отображен на рис. 4. В данный экран
можно попасть в любое время и внести изменения в любой из столбцов.
Результат
добавления столбцов в таблицу
Вставка данных
Нажав в меню на кнопку «Вставить», можно попасть в экран, представленный
на рис. 5. Введя данные, осуществим предварительное наполнение таблицы.