Большинство современных сайтов в настоящее время используют базы данных, преимущественно MySQL. Однако многие новички, создающие сайты или пишущие скрипты для них, например на PHP, мало знакомы с SQL-запросами, позволяющими делать выбор различных значений из базы данных. Для заполнения пробелов в этих знаниях и предлагается эта статья, а точнее небольшая серия статей.
Подключение к серверу MySQL и выбор базы данных
Для работы с базой данных естественно нужно сначала к ней подключиться. В большинстве случаев для этого используют либо работу из консоли, подключившись к серверу хостинга по протоколу SSH, либо скрипт PHP (однако все примеры SQL-запросов, приводимые в этой статье, можно использовать и в phpMyAdmin).
Подключение из консоли по протоколу SSH:
# mysql -u root -p Password:
В данном примере root
— это имя пользователя (пользователя с правами на запуск mysql, многие обычно используют суперадмина), а после выполнения вышеприведенной команды вам будет предложено ввести пароль.
Подключение из скрипта PHP:
Вышеуказанными способами мы только подключаемся к серверу, но нужно еще и выбрать базу данных, с которой придется работать. Если у вас несколько баз данных, то можно получить их список и выбрать нужную:
Пример для консоли SSH:
- получаем список всех баз данных:
mysql> SHOW DATABASES;
- выбираем для работы базу данных example_db
:
mysql> USE example_db;
- если понадобится, то можно просмотреть структуру любой таблицы из базы данных example_db
, которую вы выбрали для работы, к примеру таблицы clients
:
mysql> DESC clients;
Пример скрипта PHP:
Кстати, используя скрипт PHP также можно получать список всех баз данных на сервере, к которому вы подключаетесь:
// предварительно подключитесь к БД, // а затем уже выполняйте дальнейший код: $res = mysql_query( 'SHOW DATABASES' ); while ( $databases = mysql_fetch_array( $res ) ){ echo $databases [0] . "
"; }
Теперь вы знаете, как подключаться к серверу MySQL, выбирать нужную для работы базу данных, и далее можно ознакомиться с наиболее часто используемыми SQL-запросами, которые могут вам пригодиться. В примерах будут показаны запросы к базе данных на PHP, но они также могут использоваться и при работе из консоли по протоколу SSH.
SELECT — базовые запросы
SELECT * FROM clients
Этот запрос возвращает все записи, поля и их значения из таблицы clients
.
$res = mysql_query( 'SELECT * FROM clients' );
В следующем примере выбираются не все данные из таблицы clients
, а только те, которые хранятся в столбцах name
(имя) и address
(адрес) клиентов:
$res = mysql_query( 'SELECT name, address FROM clients' );
Команда SELECT и виртуальная таблица DUAL
С помощью SELECT можно обращаться к виртуальной таблице DUAL (эта таблица реально НЕ существует в базе данных) и выполнять кое-какие действия, которые не имеют отношения к реальным таблицам. Например вы можете с помощью SQL-запроса произвести какие-то арифметические вычисления:
SELECT (2+3)*100 FROM DUAL
Скрипт PHP, который выполнит этот запрос и выведет на экран «500» как результат выражения (2+3)*100
:
$res = mysql_query( 'SELECT (2+3)*100 FROM DUAL' ); $showres = mysql_fetch_array($res); echo $showres[0] . "
";
Этот запрос вернет точное время и дату на сервере MySQL:
SELECT NOW() FROM DUAL
Приведенные в этом примере запросы можно выполнять и без указания «FROM DUAL»:
SELECT 3+4; SELECT NOW();
но все же, во избежание проблем и лучшего восприятия, не рекомендую использовать такой «сокращенный» вариант!
WHERE — ограничение по выбору данных
Выбираем всех клиентов, возраст которых больше 30, не равно 30, меньше 30, больше или равно 30 лет:
SELECT * FROM clients WHERE age > 30;
SELECT * FROM clients WHERE age != 30;
SELECT * FROM clients WHERE age < 30;
SELECT * FROM clients WHERE age >= 30;
WHERE — ограничение по совпадению строк
SELECT * FROM clients WHERE city = 'Minsk';
Этот запрос похож на предыдущие запросы, где сравнивались числа, но здесь уже идет сравнение по строкам, и он выбирает всех клиентов, например проживающих в городе «Minsk».
Стоит иметь ввиду, что значения строк регистронезависимы, т.е. следующий запрос будет идентичен предыдущему:
SELECT * FROM clients WHERE city = 'MINSK';
Кроме того, в запросах со сравнением по строкам можно использовать и частичное совпадение строк (для подстановки «любых» символов используется знак процента %
). Например здесь будут выбраны все записи таблицы, в которых значение в колонке city
будут начинаться с «Novo» (начало названий городов «Novopolotsk», «Novosibirsk» и т.д.):
SELECT * FROM clients WHERE city LIKE 'Novo%';
Следующий запрос выберет все записи из таблицы clients
, в которых имена клиентов заканчиваются на «лина» (например «Галина», «Ангелина»):
SELECT * FROM clients WHERE name LIKE '%лина';
Ну и наконец выбор всех клиентов, проживающих в городах, названия которых содержат в любом месте подстроку «lug» (например «Kaluga», «Lugansk»)
SELECT * FROM clients WHERE city LIKE '%lug%';
WHERE — комбинирование условий с применением OR и AND
Для соблюдения нескольких условий при выборе данных из таблицы базы данных в части WHERE применяются конструкции OR
и AND
.
В данном примере из таблицы clients
будут выбраны все клиенты, возраст которых не меньше 25 лет и при этом обязательно проживающие в городе Москва:
SELECT * FROM clients WHERE age >= 25 AND city = 'Москва'
Здесь же, в отличие от предыдущего примера, из таблицы clients
выбираются строки, в которых есть клиенты, проживающие в одном из двух городов, либо в Moscow
, либо в Minsk
:
SELECT * FROM clients WHERE city = 'Moscow' OR city = 'Minsk'
—
Чтобы не делать из темы «MySQL запросы для начинающих» настоящую длинную «простынь», на этом первая часть обзора завершается.
Другие статьи из этой серии:
Вторая часть
Третья часть
Четвертая часть
Владимир, спасибо за познавательную статью! Я тоже вот блог завел, казалось бы — живи и радуйся, но вот чувствую свою неграмотность в вопросах, касающихся веб-программирования, а эти знания мне не то что нужны — необходимы! Поэтому рад, что попалась на глаза эта статья, буду проходить Ваш курс по MySQL со всем возможным прилежанием.
Пользуясь случаем, приглашаю и к себе — перекусить, поговорить :)
Большое, спасибо, буду следить за обновлениями. Добавляю в закладки.
используя скрипт PHP также можно получать список всех баз данных на сервере, к которому вы подключаетесь — Правда, нашлa информацию, которую искалa. Отличная статья, спасибо, автор молодец :)
Благодарю, Владимир за лаконичное описание некоторых приёмов работы с MySQL. Было полезно вспомнить работу с БД. Для начанающих — самое то! )
Да, действительно самые основы MySql. Именно с таких основ все и начинается. Тем более приятно, что даны не просто примеры самих запросов MySql, а в связке с php. Думаю, новичкам такое преподнесение материала будет особенно полезно.
Капец, Ваш пост только что заменил мне пол книги по SQL, все просто и понятно без воды.
Спасибо за подробную статью, я думаю к ней еще предстоит вернуться, т.к. в написанное нужно вникнуть поточнее, у меня уже были проблемы с базой данных. Я в нее вхожу через хостинг. Думаю, надо читать вашу вторую статью!
Только изучил HTML, начал изучать CSS, вскоре и за MySql возбмусь :)
В институте изучал MySQL, очень нравился предмет, но после института перестал этим заниматься, вот решил вспомнить что знал и учить дальше.
Не заладилось у меня как-то с мускулом, проектирование реляционных БД — легко дается. Как писать запросы — пиши пропало:) Спасибо за статью, но для меня это больше ностальгия:))
Отличная статья, все грамонто и толково расписано:) Единственное что, для начинающих наверно трудновато будет для восприятия php скрипты сразу:) Имхо
Согласен с предидущим оратором — для тех кто не вкуривает php код, сложновато. Надо с азов=) А так — большой плюс за статью.