MySQL запросы для начинающих — часть первая

Большинство современных сайтов в настоящее время используют базы данных, преимущественно MySQL. Однако многие новички, создающие сайты или пишущие скрипты для них, например на PHP, мало знакомы с SQL-запросами, позволяющими делать выбор различных значений из базы данных. Для заполнения пробелов в этих знаниях и предлагается эта статья, а точнее небольшая серия статей.
MySQL запросы для начинающих - первая часть

Подключение к серверу MySQL и выбор базы данных

Для работы с базой данных естественно нужно сначала к ней подключиться. В большинстве случаев для этого используют либо работу из консоли, подключившись к серверу хостинга по протоколу SSH, либо скрипт PHP (однако все примеры SQL-запросов, приводимые в этой статье, можно использовать и в phpMyAdmin).

Подключение из консоли по протоколу SSH:

1# mysql -u root -p
2Password:

В данном примере root — это имя пользователя (пользователя с правами на запуск mysql, многие обычно используют суперадмина), а после выполнения вышеприведенной команды вам будет предложено ввести пароль.

Подключение из скрипта PHP:

1<!--?php
2$host = 'localhost';
3$user = 'root'; // имя пользователя
4$password = ''; // здесь должен быть ваш пароль
5 
6// подключаемся к серверу MySQL
7$connection = mysql_connect( $host, $user, $password );
8?-->

Вышеуказанными способами мы только подключаемся к серверу, но нужно еще и выбрать базу данных, с которой придется работать. Если у вас несколько баз данных, то можно получить их список и выбрать нужную:

Пример для консоли SSH:

- получаем список всех баз данных:

1mysql> SHOW DATABASES;

- выбираем для работы базу данных example_db:

1mysql> USE example_db;

- если понадобится, то можно просмотреть структуру любой таблицы из базы данных example_db, которую вы выбрали для работы, к примеру таблицы clients:

1mysql> DESC clients;

Пример скрипта PHP:

1<!--?php
2$host = 'localhost'; // адрес хоста
3$user = 'root'; // имя пользователя для доступа к серверу MySQL
4$password = ''; // здесь должен быть ваш пароль
5$db_name = 'example_db'; // имя нужной нам базы данных
6 
7// подключаемся к серверу MySQL
8$connection = mysql_connect( $host, $user, $password );
9 
10// при неудавшейся попытке подключения к серверу MySQL выводим информацию об ощибке и завершаем работу скрипта
11if( !$connection ){    
12        echo "ERROR ".mysql_errno()." ".mysql_error()."\n";
13        exit;
14}
15 
16// если подключение к серверу MySQL прошло успешно, то
17// подключаемся к базе данных "example_db"
18mysql_select_db( $db_name, $connection );
19 
20// выполняем какие-то действия с базой данных
21 
22// в конце работы с БД отключаемся от сервера
23mysql_close( $connection );
24?-->

Кстати, используя скрипт PHP также можно получать список всех баз данных на сервере, к которому вы подключаетесь:

1// предварительно подключитесь к БД,
2// а затем уже выполняйте дальнейший код:
3 
4$res = mysql_query( 'SHOW DATABASES' );
5 
6while ( $databases = mysql_fetch_array( $res ) ){      
7        echo $databases [0] . "<br>";
8}

Теперь вы знаете, как подключаться к серверу MySQL, выбирать нужную для работы базу данных, и далее можно ознакомиться с наиболее часто используемыми SQL-запросами, которые могут вам пригодиться. В примерах будут показаны запросы к базе данных на PHP, но они также могут использоваться и при работе из консоли по протоколу SSH.

SELECT — базовые запросы

1SELECT * FROM clients

Этот запрос возвращает все записи, поля и их значения из таблицы clients.

1$res = mysql_query( 'SELECT * FROM clients' );

В следующем примере выбираются не все данные из таблицы clients, а только те, которые хранятся в столбцах name (имя) и address (адрес) клиентов:

1$res = mysql_query( 'SELECT name, address FROM clients' );

Команда SELECT и виртуальная таблица DUAL

С помощью SELECT можно обращаться к виртуальной таблице DUAL (эта таблица реально НЕ существует в базе данных) и выполнять кое-какие действия, которые не имеют отношения к реальным таблицам. Например вы можете с помощью SQL-запроса произвести какие-то арифметические вычисления:

1SELECT (2+3)*100 FROM DUAL

Скрипт PHP, который выполнит этот запрос и выведет на экран «500» как результат выражения (2+3)*100:

1$res = mysql_query( 'SELECT (2+3)*100 FROM DUAL' );
2$showres = mysql_fetch_array($res);
3echo $showres[0] . "<br>";

Этот запрос вернет точное время и дату на сервере MySQL:

1SELECT NOW() FROM DUAL

Приведенные в этом примере запросы можно выполнять и без указания «FROM DUAL»:

1SELECT 3+4;
2SELECT NOW();

но все же, во избежание проблем и лучшего восприятия, не рекомендую использовать такой «сокращенный» вариант!

WHERE — ограничение по выбору данных

Выбираем всех клиентов, возраст которых больше 30, не равно 30, меньше 30, больше или равно 30 лет:

1SELECT * FROM clients WHERE age > 30;
1SELECT * FROM clients WHERE age != 30;
1SELECT * FROM clients WHERE age < 30;
1SELECT * FROM clients WHERE age >= 30;

WHERE — ограничение по совпадению строк

1SELECT * FROM clients WHERE city = 'Minsk';

Этот запрос похож на предыдущие запросы, где сравнивались числа, но здесь уже идет сравнение по строкам, и он выбирает всех клиентов, например проживающих в городе «Minsk».

Стоит иметь ввиду, что значения строк регистронезависимы, т.е. следующий запрос будет идентичен предыдущему:

1SELECT * FROM clients WHERE city = 'MINSK';

Кроме того, в запросах со сравнением по строкам можно использовать и частичное совпадение строк (для подстановки «любых» символов используется знак процента %). Например здесь будут выбраны все записи таблицы, в которых значение в колонке city будут начинаться с «Novo» (начало названий городов «Novopolotsk», «Novosibirsk» и т.д.):

1SELECT * FROM clients WHERE city LIKE 'Novo%';

Следующий запрос выберет все записи из таблицы clients, в которых имена клиентов заканчиваются на «лина» (например «Галина», «Ангелина»):

1SELECT * FROM clients WHERE name LIKE '%лина';

Ну и наконец выбор всех клиентов, проживающих в городах, названия которых содержат в любом месте подстроку «lug» (например «Kaluga», «Lugansk»)

1SELECT * FROM clients WHERE city LIKE '%lug%';

WHERE — комбинирование условий с применением OR и AND

Для соблюдения нескольких условий при выборе данных из таблицы базы данных в части WHERE применяются конструкции OR и AND.

В данном примере из таблицы clients будут выбраны все клиенты, возраст которых не меньше 25 лет и при этом обязательно проживающие в городе Москва:

1SELECT * FROM clients WHERE age >= 25 AND city = 'Москва'

Здесь же, в отличие от предыдущего примера, из таблицы clients выбираются строки, в которых есть клиенты, проживающие в одном из двух городов, либо в Moscow, либо в Minsk:

1SELECT * FROM clients WHERE city = 'Moscow' OR city = 'Minsk'


Чтобы не делать из темы «MySQL запросы для начинающих» настоящую длинную «простынь», на этом первая часть обзора завершается.
Другие статьи из этой серии:
Вторая часть
Третья часть
Четвертая часть

Метки: mysql, SELECT, WHERE, база данных, запросы

Поделитесь материалом с другими, воспользуйтесь этими кнопками:
Получать обновления и новые материалы блога по E-mail

11 комментариев к “MySQL запросы для начинающих — часть первая”

  1. Ярослав:

    Владимир, спасибо за познавательную статью! Я тоже вот блог завел, казалось бы — живи и радуйся, но вот чувствую свою неграмотность в вопросах, касающихся веб-программирования, а эти знания мне не то что нужны — необходимы! Поэтому рад, что попалась на глаза эта статья, буду проходить Ваш курс по MySQL со всем возможным прилежанием.
    Пользуясь случаем, приглашаю и к себе — перекусить, поговорить :)

  2. Алена Савелова:

    Большое, спасибо, буду следить за обновлениями. Добавляю в закладки.
    используя скрипт PHP также можно получать список всех баз данных на сервере, к которому вы подключаетесь — Правда, нашлa информацию, которую искалa. Отличная статья, спасибо, автор молодец :)

  3. Mer:

    Благодарю, Владимир за лаконичное описание некоторых приёмов работы с MySQL. Было полезно вспомнить работу с БД. Для начанающих — самое то! )

  4. Dofollow Ruslan:

    Да, действительно самые основы MySql. Именно с таких основ все и начинается. Тем более приятно, что даны не просто примеры самих запросов MySql, а в связке с php. Думаю, новичкам такое преподнесение материала будет особенно полезно.

  5. Александр:

    Капец, Ваш пост только что заменил мне пол книги по SQL, все просто и понятно без воды.

  6. Андрис:

    Спасибо за подробную статью, я думаю к ней еще предстоит вернуться, т.к. в написанное нужно вникнуть поточнее, у меня уже были проблемы с базой данных. Я в нее вхожу через хостинг. Думаю, надо читать вашу вторую статью!

  7. Андрей:

    Только изучил HTML, начал изучать CSS, вскоре и за MySql возбмусь :)

  8. fedolino:

    В институте изучал MySQL, очень нравился предмет, но после института перестал этим заниматься, вот решил вспомнить что знал и учить дальше.

  9. Макс:

    Не заладилось у меня как-то с мускулом, проектирование реляционных БД — легко дается. Как писать запросы — пиши пропало:) Спасибо за статью, но для меня это больше ностальгия:))

  10. Feanor184:

    Отличная статья, все грамонто и толково расписано:) Единственное что, для начинающих наверно трудновато будет для восприятия php скрипты сразу:) Имхо

  11. Виктор Доценко:

    Согласен с предидущим оратором — для тех кто не вкуривает php код, сложновато. Надо с азов=) А так — большой плюс за статью.

Оставить комментарий к Александр

Уважаемые посетители, пожалуйста, пишите осмысленные и исчерпывающие комментарии. Короткие фразы типа «спасибо автору», «возьму на заметку», «мне помогло» и т.п. будут удаляться. Исключение, когда Вы отвечаете на чей-то вопрос или благодарите за помощь.

Ссылки на Ваш сайт получат статус DoFollow после третьего комментария.

Для вставки кода в комментарии можно использовать BB-коды:
[text] [/text], [php] [/php], [html] [/html]

Подписаться на обновления блога 4remind.ru по RSS
Новости блога в социальных сетях

4remind.ru - персональный блог вебмастера